- 1. 简介
- 2. 开始
- 3. 配置
- 4. Flowable API
- 5. 集成 Spring
- 6. 部署
- 7. BPMN 2.0 介绍
- 8. BPMN 2.0 结构
- 9. 表单
- 10. JPA
- 11. 历史
- 12. 身份管理
- 13. Eclipse Designer
- 14. Flowable UI 应用
- 15. REST API
- 16. 集成 CDI
- 17. 集成 LDAP
- 18. 高级
- 19. 工具
16.1. 安装 flowable-cdi
Flowable CDI可以安装在不同环境中。在这个章节我们主要介绍配置选项。
16.1.1. 查找流程引擎
CDI扩展需要访问流程引擎,在运行时会查找org.flowable.cdi.spi.ProcessEngineLookup
接口的实现。CDI模块提供了默认的名为org.flowable.cdi.impl.LocalProcessEngineLookup
的实现,使用ProcessEngines
-Utility类查找流程引擎,默认配置下用 ProcessEngines#NAME_DEFAULT
查找流程引擎。如果需要使用自定义的名字,需要扩展这个类。请注意:需要将flowable.cfg.xml
配置文件放在classpath中。
Flowable cdi使用java.util.ServiceLoader SPI解析org.flowable.cdi.spi.ProcessEngineLookup
实例。为了提供接口的自定义实现,需要在部署中添加名为META-INF/services/org.flowable.cdi.spi.ProcessEngineLookup
的纯文本文件,并在其中设置实现的全限定类名。
如果不提供自定义的 |
16.1.2. 配置流程引擎
配置方式取决于所选用的流程引擎查找策略(上一章节)。这章介绍与LocalProcessEngineLookup一起使用的可用配置选项,并需要在classpath中提供一个Spring flowable.cfg.xml文件。
根据底层事务管理策略的不同,Flowable提供了不同的ProcessEngineConfiguration实现。flowable-cdi模块不关注事务,也就意味着可以使用任何事务管理策略(甚至是Spring抽象事务)。按照约定,CDI模块提供两个自定义的ProcessEngineConfiguration实现:
org.flowable.cdi.CdiJtaProcessEngineConfiguration
: Flowable JtaProcessEngineConfiguration的子类,可用于Flowable使用JTA管理事务的情况org.flowable.cdi.CdiStandaloneProcessEngineConfiguration
: StandaloneProcessEngineConfiguration的子类,可用于Flowable使用简单JDBC事务的情况。
下面是一个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">
<!-- 查找JTA事务管理器 -->
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:jboss/TransactionManager"></property>
<property name="resourceRef" value="true" />
</bean>
<!-- 流程定义配置 -->
<bean
class="org.flowable.cdi.CdiJtaProcessEngineConfiguration">
<!-- 查找默认的Jboss数据源 -->
<property name="dataSourceJndiName" value="java:jboss/datasources/ExampleDS" />
<property name="databaseType" value="h2" />
<property name="transactionManager" ref="transactionManager" />
<!-- 使用外部管理事务 -->
<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">
<!-- 查找JTA事务管理器 -->
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:appserver/TransactionManager"></property>
<property name="resourceRef" value="true" />
</bean>
<!-- 流程定义配置 -->
<bean
class="org.flowable.cdi.CdiJtaProcessEngineConfiguration">
<property name="dataSourceJndiName" value="jdbc/flowable" />
<property name="transactionManager" ref="transactionManager" />
<!-- 使用外部管理事务 -->
<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环境中的配置与创建流程引擎章节中的示例一样,只是用"CdiStandaloneProcessEngineConfiguration"代替"StandaloneProcessEngineConfiguration"。
16.1.3. 部署流程
可以使用标准的Flowable API(RepositoryService
)部署流程。另外,flowable-cdi也提供了自动部署流程的功能,部署classpath中的processes.xml
文件提供的流程列表。这是一个processes.xml文件的例子:
<?xml version="1.0" encoding="utf-8" ?>
<!-- 需要部署的流程列表 -->
<processes>
<process resource="diagrams/myProcess.bpmn20.xml" />
<process resource="diagrams/myOtherProcess.bpmn20.xml" />
</processes>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论