初试JBPM,异常如下org.jbpm.JbpmException: task node does not have leaving transition 'r

org.jbpm.JbpmException: task node does not have leaving transition 'reject'
原因:没有找到名字是'reject'的transition.但是processdefinition.xml文件里面确实有这个transition的,
<transition name="reject" to="d1">
<action class="com.xxx.xxx.xxx" />
</transition>

为什么呢?
因为我再第一次编写processdefinition.xml的时候我的这个transition是中文的name="拒绝",并且我已经吧这个工作流发布到数据库中了,因为我查数据库表:jbpm_transition 发现里面的name是以前的"拒绝",难怪会提示找不到transition 'reject',因为数据库中根本就没有name=reject的transition
所以我就用新的processdefinition.xml重新发布了一次工作流到数据库中.再次运行,还是报同样的错.......
这次我再看代码,发现处理任务的代码:

List<TaskInstance> list = context.getTaskList(actorId);
for(TaskInstance ti : list ){
if(pas){
ti.end("approve");
}else{
ti.end("reject");
}
}


我觉得问题再List<TaskInstance> list = context.getTaskList(actorId);
这一句,我查数据库,发现再jbpm_taskinstance 表中分配给actorId的,并且isopen='1'的有4条,这是因为我上次报错的程序运行了4次,每次流程都停留再这个节点没有走下去.因为有多条,所以找出来的第一条对应的任务就有可能没有对应的name='reject'的transition,这里有是循环,每条记录都会来一次ti.end("approve")或者ti.end("reject"); 所以会报原来一样的错.把jbpm_taskinstance 表中,所有分配给我要找的actorId记录的isopen都改为'0'.
再次运行,正确,问题解决.

PS:我也是第一次运行JBPM发现这个错,再网上找答案,只看到问题,没看到答案,所以把自己的解决方法写出来.希望对其它人有帮助.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值