Flowable入门系列文章7 - 基本配置一

Posted 分享牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flowable入门系列文章7 - 基本配置一相关的知识,希望对你有一定的参考价值。

1、创建一个ProcessEngine

Flowable流程引擎通过名为的XML文件进行配置flowable.cfg.xml。请注意,如果您使用构建流程引擎的Spring样式,则这不适用。

获得一个最简单的方法ProcessEngine是使用这个org.flowable.engine.ProcessEngines类:

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine()

这将flowable.cfg.xml在类路径中查找文件,并根据该文件中的配置构建引擎。以下片段显示了一个示例配置。以下部分将详细介绍配置属性。

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcUrl" value="jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />
<property name="databaseSchemaUpdate" value="true" />
<property name="asyncExecutorActivate" value="false" />
<property name="mailServerHost" value="mail.my-corp.com" />
<property name="mailServerPort" value="5025" />
</bean>
</beans>

请注意,配置XML实际上是一个Spring配置。这并不意味着Flowable只能在Spring环境中使用!我们只是利用Spring内部的解析和依赖注入功能来构建引擎。

ProcessEngineConfiguration对象也可以使用配置文件以编程方式创建。也可以使用不同的bean id(例如,见第3行)。

ProcessEngineConfiguration.
createProcessEngineConfigurationFromResourceDefault();
createProcessEngineConfigurationFromResource(String resource);
createProcessEngineConfigurationFromResource(String resource, String beanName);
createProcessEngineConfigurationFromInputStream(InputStream inputStream);
createProcessEngineConfigurationFromInputStream(InputStream inputStream, String beanName);

也可以不使用配置文件,并根据默认值创建配置。

ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();

所有这些ProcessEngineConfiguration.createXXX()方法返回一个ProcessEngineConfiguration可以进一步调整,如果需要的话。调用
buildProcessEngine()操作之后,ProcessEngine会创建一个:

ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
.setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
.setAsyncExecutorActivate(false)
.buildProcessEngine();

2、ProcessEngineConfiguration bean

在flowable.cfg.xml必须包含有ID的Bean ‘processEngineConfiguration’。

<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">

这个bean然后用来构造ProcessEngine。有多个类可用于定义processEngineConfiguration。这些类表示不同的环境,并相应地设置默认
值。最好的做法是选择最适合您的环境的类,以尽量减少配置引擎所需的属性数量。目前提供以下课程:

  • org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration:流程引擎以独立的方式使用。Flowable将负责所有交易。默认情况下,只有在引擎启动时才会检查数据库(如果没有Flowable模式或模式版本不正确,则会引发异常)。
  • org.flowable.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration:这是一个用于单元测试的便利类。Flowable将负责所有交易。H2内存数据库是默认使用的。数据库将在引擎启动并关闭时创建并删除。当使用这个时,可能不需要额外的配置(例如 使用作业执行程序或邮件功能时除外)。
  • org.flowable.spring.SpringProcessEngineConfiguration:在Spring环境中使用流程引擎时使用。有关更多信息,请参阅Spring集成部分。
  • org.flowable.engine.impl.cfg.JtaProcessEngineConfiguration:在引擎以独立模式运行时使用JTA事务。

3、数据库配置

有两种方法来配置Flowable引擎将使用的数据库。第一个选项是定义数据库的JDBC属性:

  • jdbcUrl:数据库的JDBC URL。
  • jdbcDriver:执行特定数据库类型的驱动程序。
  • jdbcUsername:连接到数据库的用户名。
  • jdbcPassword:连接到数据库的密码。

基于提供的JDBC属性构建的数据源将具有默认的MyBatis连接池设置。可以选择设置以下属性来调整连接池(取自MyBatis文档):

  • jdbcMaxActiveConnections:连接池在任何时间最多可以包含的活动连接数。缺省值是10。
  • jdbcMaxIdleConnections:连接池在任何时间最多可以包含的空闲连接数。
  • jdbcMaxCheckoutTime:在强制返回连接之前,可以从连接池中检出连接的时间量(以毫秒为单位)。默认是20000(20秒)。
  • jdbcMaxWaitTime:这是一个低级别的设置,让池有机会打印日志状态,并重新尝试获取连接,以防异常长时间的使用(为了避免如果池被错误配置,永远不会默默无闻地失败)Default是20000(20秒)。

示例数据库配置:

<property name="jdbcUrl" value="jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />

我们的基准测试表明,在处理大量的并发请求时,MyBatis连接池并不是最高效或灵活的。因此,建议给我们一个javax.sql.DataSource实现,并将其注入流程引擎配置(例如DBCP,C3P0,Hikari,Tomcat连接池等):

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/flowable" />
<property name="username" value="flowable" />
<property name="password" value="flowable" />
<property name="defaultAutoCommit" value="false" />
</bean>
<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="dataSource" ref="dataSource" />
...

请注意,Flowable不附带允许您定义此类数据源的库。所以你需要确保库在你的类路径中。

无论您使用JDBC还是数据源方法,都可以设置以下属性:

  • databaseType:通常不需要指定该属性,因为它是从数据库连接元数据中自动检测的。只应在自动检测失败时指定。可能的值:
    {h2,mysql,oracle,postgres,mssql,db2}。此设置将决定使用哪些创建/删除脚本和查询。请参阅该支持的数据库部分用于哪些类型支持的概述。
  • databaseSchemaUpdate:设置策略来处理流程引擎启动和关闭时的数据库模式。
    • false(默认值):在创建流程引擎时检查数据库模式的版本,并在版本不匹配时引发异常。
    • true:在构建流程引擎时,将执行检查,并在必要时执行架构的更新。如果架构不存在,则会创建该架构。
    • create-drop:在创建流程引擎时创建模式,并在流程引擎关闭时删除模式。

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:

以上是关于Flowable入门系列文章7 - 基本配置一的主要内容,如果未能解决你的问题,请参考以下文章

Flowable入门系列文章23 - 基本的Flowable概念四

Flowable入门系列文章97 - 获取流程定义

Flowable入门系列文章20 - 基本的Flowable概念一

Flowable入门系列文章10 - 基本配置四

Flowable入门系列文章8 - 基本配置二

Flowable入门系列文章22 - 基本的Flowable概念三