返回介绍

16.1. 安装 flowable-cdi

发布于 2023-09-17 23:40:35 字数 4664 浏览 0 评论 0 收藏 0

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的纯文本文件,并在其中设置实现的全限定类名。

如果不提供自定义的org.flowable.cdi.spi.ProcessEngineLookup实现,则Flowable会使用默认的LocalProcessEngineLookup实现。在这种情况下,只需要在classpath中提供flowable.cfg.xml(参见下一章节)即可。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文