1、查找一个流程引擎

cdi扩展需要访问ProcessEngine。为了实现这一点,org.flowable.cdi.spi.ProcessEngineLookup在运行时查看接口的实现。cdi模块附带一个名为的默认实现org.flowable.cdi.impl.LocalProcessEngineLookup,它使用ProcessEngines-Utility类来查找ProcessEngine。在默认配置ProcessEngines#NAME_DEFAULT中用于查找ProcessEngine。这个类可能被设置为一个自定义名称的子类。注意:需要flowable.cfg.xml在类路径上进行配置。

Flowable cdi使用java.util.ServiceLoader SPI来解析一个实例org.flowable.cdi.spi.ProcessEngineLookup。为了提供接口的自定义实现,
我们需要添加一个名为META-INF/services/org.flowable.cdi.spi.ProcessEngineLookup我们的部署的纯文本文件 ,其中我们指定了实现的完全限定类名。

如果您不提供自定义org.flowable.cdi.spi.ProcessEngineLookup实现,则Flowable将使用默认LocalProcessEngineLookup实现。在这
种情况下,您只需在类路径中提供一个flowable.cfg.xml文件。

2、配置Process Engine

配置取决于所选的ProcessEngineLookup-Strategy。在这里,我们把重点放在与LocalProcessEngineLookup结合使用的配置选项上,这需要我们在classpath中提供一个Spring的flowable.cfg.xml文件。

Flowable提供了不同的ProcessEngineConfiguration实现,主要依赖于底层的事务管理策略。flow-cdi模块不涉及事务,这意味着可能使用任何事务管理策略(甚至是Spring事务抽象)。为了方便,cdi-module提供了两个自定义的ProcessEngineConfiguration实现:

  • org.flowable.cdi.CdiJtaProcessEngineConfiguration:如果JTA管理的事务应该用于Flowable,则可以使用Flowable JtaProcessEngineConfiguration的子类
  • org.flowable.cdi.CdiStandaloneProcessEngineConfiguration:Flowable StandaloneProcessEngineConfiguration的子类,如果普通JDBC事务应该用于Flowable,则可以使用它。以下是JBoss 7的一个示例flowable.cfg.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- lookup the JTA-Transaction manager -->
<bean id="transactionManager" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:jboss/TransactionManager"></property>
<property name="resourceRef" value="true" />
</bean>
<!-- process engine configuration -->
<bean id="processEngineConfiguration"
class="org.flowable.cdi.CdiJtaProcessEngineConfiguration">
<!-- lookup the default Jboss datasource -->
<property name="dataSourceJndiName" value="java:jboss/datasources/ExampleDS" />
<property name="databaseType" value="h2" />
<property name="transactionManager" ref="transactionManager" />
<!-- using externally managed transactions -->
<property name="transactionsExternallyManaged" value="true" />
<property name="databaseSchemaUpdate" value="true" />
</bean>
</beans>

这就是Glassfish 3.1.1的样子(假设一个名为jdbc / flowable的数据源被正确配置):

<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- lookup the JTA-Transaction manager -->
<bean id="transactionManager" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:appserver/TransactionManager"></property>
<property name="resourceRef" value="true" />
</bean>
<!-- process engine configuration -->
<bean id="processEngineConfiguration"
class="org.flowable.cdi.CdiJtaProcessEngineConfiguration">
<property name="dataSourceJndiName" value="jdbc/flowable" />
<property name="transactionManager" ref="transactionManager" />
<!-- using externally managed transactions -->
<property name="transactionsExternallyManaged" value="true" />
<property name="databaseSchemaUpdate" value="true" />
</bean>
</beans>

请注意,上面的配置需要“spring-context”模块:

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>4.2.5.RELEASE</version>
</dependency>

Java SE环境中的配置看起来与“ 创建ProcessEngine ” 一节中提供的示例完全相同,请将“CdiStandaloneProcessEngineConfiguration”替换
为“StandaloneProcessEngineConfiguration”。

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐