jbpm在创建实例时的事务管理

在使用JBPM进行流程实例化时遇到问题,通过非context.getGrahSession获取的ProcessDefinition实例化流程会报sessionisclosed错误。分析可能是由于Session不一致导致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在做JBPM时发现一个问题。因为JBPM的信息不够全面,所以我又建了一个扩展的ProcessDefinition实体Workflow,里面有创建时间、创建人等一些相关信息,然用了一个“一对一”和JBPM里的ProcessDefinition进行了关联,使用了懒加载策略。Workflow实体如下:
public class Workflow(){
private ....
.....
private ProcessDefinition processDefinition
}
当然是一对一的单向关联。当通过Workflow实例取processDefinition的信息时没什么问题,如是当直接用workflow.getProcessDefinition()的实例去创建ProcessInstance的实例时问题就出现了。如ProcessInstance processInstance = new ProcessInstance(workflow.getProcessDefinition())。显示的是session is closed。然后我又直接通过JBPM的context.getGrahSession.findProcessDefinition获得了一个同样的实例,发现又没问题。通过equal进行对比,两个实例是一样的。这让我百思不得其解。
我没看JBPM的代码,这里给出一个草率的定论:当需要对流程实例化时,需要打开另一个Session,而这个Session就是通过context.getGrahSession得。如果不通过这个Session获得流程定义,流程实例的Session和程序中的Session是两个不同的Session,因此会出现Session关闭的现象。所要必须要通过context.getGrahSession来获得一个流程,才能对此流程实例化。
当然,如果我说的不对,肯请大家指正。看看有没有什么方法可直接通过关联的ProcessDefinition进行实例化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值