Flowable入门系列文章70 - JPA介绍
Posted 分享牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flowable入门系列文章70 - JPA介绍相关的知识,希望对你有一定的参考价值。
1、描述
您可以使用JPA实体作为流程变量,允许您:
- 更新现有的JPA实体,基于可以在userTask中填写或在serviceTask中生成的流程变量。
- 重用现有的域模型,而不必编写显式服务来获取实体并更新值
- 根据现有实体的属性做出决定(网关)。
- …
2、要求
只有符合以下条件的实体才受支持:
- 实体应该使用JPA注释进行配置,我们同时支持字段和属性访问。映射的超类也可以使用。
- 实体应该有一个主键注释@Id,复合主键不被支持(@EmbeddedId和@IdClass)。Id字段/属性可以是在JP-A-规范支持的任何类型的:基本类型和它们的包装(不包括布尔值), String,,BigInteger 和BigDecimaljava.util.Datejava.sql.Date。
3、组态
为了能够使用JPA实体,引擎必须有一个引用EntityManagerFactory。这可以通过配置引用或提供持久性单元名称来完成。作为变量使用的JPA实体将被自动检测,并将被相应处理。
下面的示例配置使用jpaPersistenceUnitName:
<bean id="processEngineConfiguration"
class="org.flowable.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
<!-- Database configurations -->
<property name="databaseSchemaUpdate" value="true" />
<property name="jdbcUrl" value="jdbc:h2:mem:JpaVariableTest;DB_CLOSE_DELAY=1000" />
<property name="jpaPersistenceUnitName" value="flowable-jpa-pu" />
<property name="jpaHandleTransaction" value="true" />
<property name="jpaCloseEntityManager" value="true" />
<!-- job executor configurations -->
<property name="jobExecutorActivate" value="false" />
<!-- mail server configurations -->
<property name="mailServerPort" value="5025" />
</bean>
下面的示例配置提供了EntityManagerFactory我们自己定义的一个(在这种情况下,一个开放的jpa实体管理器)。请注意,片段仅包含与示例相关的bean,其他部分被省略。可以在flowable-spring-examples(/flowablespring/src/test/java/org/flowable/spring/test/jpa/JPASpringTest.java)中找到完整的使用open-jpa实体管理器的示例。
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager" ref="pum"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
<property name="databasePlatform" value="org.apache.openjpa.jdbc.sql.H2Dictionary" />
</bean>
</property>
</bean>
<bean id="processEngineConfiguration" class="org.flowable.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseSchemaUpdate" value="true" />
<property name="jpaEntityManagerFactory" ref="entityManagerFactory" />
<property name="jpaHandleTransaction" value="true" />
<property name="jpaCloseEntityManager" value="true" />
<property name="jobExecutorActivate" value="false" />
</bean>
以编程方式构建引擎时也可以执行相同的配置,例如:
ProcessEngine processEngine = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResourceDefault()
.setJpaPersistenceUnitName("flowable-pu")
.buildProcessEngine();
配置属性:
- jpaPersistenceUnitName:要使用的持久性单元的名称。(请确保持久化单元在类路径中可用,根据规范,默认位置是/METAINF/persistence.xml)。使用jpaEntityManagerFactory或者jpaPersistenceUnitName。
- jpaEntityManagerFactory:对实现javax.persistence.EntityManagerFactory该bean的引用将用于加载实体并刷新更新。使用jpaEntityManagerFactory或jpaPersistenceUnitName。
- jpaHandleTransaction:表示引擎应该在使用的EntityManager实例上开始并提交/回滚事务的标志。使用Java Transaction API(JTA)时设置为false 。
- jpaCloseEntityManager:表示引擎应该关闭EntityManager从中获取的实例的标志EntityManagerFactory。如果EntityManager是容器管理的(例如,当使用扩展的持久化上下文而不是单个事务的范围时),则设置为false 。
上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
以上是关于Flowable入门系列文章70 - JPA介绍的主要内容,如果未能解决你的问题,请参考以下文章
Flowable入门系列文章23 - 基本的Flowable概念四