3. 配置 Configuration
3.1. 创建ProcessEngine Creating a ProcessEngine
Flowable流程引擎通过名为flowable.cfg.xml
的XML文件进行配置。请注意这种方式与使用Spring创建流程引擎不一样。
获取ProcessEngine
,最简单的方式是使用org.flowable.engine.ProcessEngines
类:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine()
这样会从classpath寻找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") .setAsyncExecutorEnabled(true) .setAsyncExecutorActivate(false) .buildProcessEngine();
3.2. ProcessEngineConfiguration bean
flowable.cfg.xml
文件中必须包含一个id为'processEngineConfiguration'的bean。
<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事务的情况。