Flowable入门系列文章71 - JPA用法

Posted 分享牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flowable入门系列文章71 - JPA用法相关的知识,希望对你有一定的参考价值。

使用JPA变量的示例可以在Flowable源代码中的JPAVariableTest中找到。我们将JPAVariableTest.testUpdateJPAEntityValues一步一步解释。

首先,我们为我们基于的持久性单元创建一个EntityManagerFactoryMETA-INF/persistence.xml。这包含应该包含在持久性单元中的类和一些供应商特定的配置。

我们在测试中使用了一个简单的实体,它有一个id和Stringvalue属性,这个属性也是持久的。在运行测试之前,我们创建一个实体并保存。

@Entity(name = "JPA_ENTITY_FIELD")
public class FieldAccessJPAEntity 
@Id
@Column(name = "ID_")
private Long id;
private String value;
public FieldAccessJPAEntity() 
// Empty constructor needed for JPA
 p
ublic Long getId() 
return id;
 p
ublic void setId(Long id) 
this.id = id;
 p
ublic String getValue() 
return value;
 p
ublic void setValue(String value) 
this.value = value;


我们启动一个新的流程实例,将实体添加为一个变量。与其他变量一样,它们存储在引擎的持久性存储中。当下一次请求变量时,将从EntityManager基于类的Id 加载并存储Id。

Map<String, Object> variables = new HashMap<String, Object>();
variables.put("entityToUpdate", entityToUpdate);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(
"UpdateJPAValuesProcess", variables);

在我们的流程定义的第一个节点包含serviceTask将调用的方法setValue上entityToUpdate,解决在启动过程实例,并会从加载时我们之前设置的JPA变量EntityManager与当前引擎的上下文相关联。

<serviceTask id='theTask' name='updateJPAEntityTask'
flowable:expression="$entityToUpdate.setValue('updatedValue')" />

当服务任务完成时,流程实例在流程定义中定义的userTask中等待,这允许我们检查流程实例。此时,EntityManager已被刷新,实体的更改已被推送到数据库。当我们得到变量的值时entityToUpdate,它会再次被加载,我们得到的value属性设置为的实体updatedValue。

// Servicetask in process 'UpdateJPAValuesProcess' should have set value on entityToUpdate.
Object updatedEntity = runtimeService.getVariable(processInstance.getId(), "entityToUpdate");
assertTrue(updatedEntity instanceof FieldAccessJPAEntity);
assertEquals("updatedValue", ((FieldAccessJPAEntity)updatedEntity).getValue());

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

以上是关于Flowable入门系列文章71 - JPA用法的主要内容,如果未能解决你的问题,请参考以下文章

Flowable入门系列文章70 - JPA介绍

Flowable入门系列文章68 - 表单属性

Flowable入门系列文章63 - 失败重试

Flowable入门系列文章23 - 基本的Flowable概念四

Flowable入门系列文章18 - 部署Flowable

Flowable入门系列文章20 - 基本的Flowable概念一