jbpm4.3 的fork似乎有bug

freeflyfree 2010-10-22
做了一个流程 申请-》经理审批-fork-》task1,fork-》task2,
如果task1和task2都通过,则流程可以顺利通过,如果其中之一否决返回到申请,再次到经理审批通过以后就会报错,会报ID已存在,也就是JBPM4_EXECUTION中的ID_,
这是不是jbpm的bug呢?
xyz20003 2010-10-22
请给出可以重现问题的测试用例,描述有点儿太不清楚了,没看懂fork后接两个task,还是两个fork。多谢
freeflyfree 2010-10-22
<?xml version="1.0" encoding="UTF-8"?>

<process name="leave" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="86,356,92,52" name="start1">
      <transition g="-44,-18" name="to task1" to="申请"/>
   </start>
   <end g="735,41,92,52" name="end1"/>
  <task assignee="#{owner}" form="request.jsp" g="188,353,92,52" name="申请">
   
      <transition g="-66,-18" name="to 经理审批" to="经理审批"/>
   </task>  
   <task assignee="manager" form="manager.jsp" g="325,355,92,52" name="经理审批">
      <transition g="320,442:-44,-18" name="驳回" to="申请"/>
      <transition g="-68,-18" name="批准" to="fork1"/>
   </task>
   <task assignee="boss" form="boss.jsp" g="443,141,92,52" name="老板审批">
      <transition g="-42,-18" name="to end1" to="end1"/>
      <transition g="240,181:-42,-18" name="to 申请" to="申请"/>
   </task>
   <decision expr="#{day>3?'to 老板审批':'to end1'}" g="698,194,48,48" name="exclusive1">
      <transition g="-42,-18" name="to end1" to="end1"/>
      <transition g="-66,-18" name="to 老板审批" to="老板审批"/>
   </decision>
   <task assignee="manager" form="manager.jsp?type=1" g="548,367,92,52" name="task1">
      <transition g="-41,-18" name="批准" to="join1"/>
      <transition g="259,515:-42,-18" name="驳回" to="申请"/>
   </task>
   <task assignee="manager" form="manager.jsp?type=2" g="533,275,92,52" name="task3">
      <transition g="-41,-18" name="批准" to="join1"/>
      <transition g="368,263:-42,-18" name="驳回" to="申请"/>
   </task>
   <fork g="455,353,48,48" name="fork1">
      <transition g="-44,-18" name="to task3" to="task3"/>
      <transition g="-44,-18" name="to task1" to="task1"/>
   </fork>
   <join g="698,269,48,48" name="join1">
      <transition g="-68,-18" name="to exclusive1" to="exclusive1"/>
   </join>

</process>
这是流程的jpdl,
如果一路批准就没有问题,但是在task3或者task1上驳回以后,再次走到经理审批,经理批准以后就会报错,id主键已存在
在经理审批那儿使用taskService.completeTask(taskId, result);result就是“批准”或者“驳回”
freeflyfree 2010-10-22
另外补充一点,histService.createHistoryActivityInstanceQuery().executionId()这个是查询不出fork和join之间的task的历史的,
xyz20003 2010-10-23
因为分支会新建execution,
freeflyfree 2010-10-23
那就是fork后的task都不能进行否决重新开始流程了。不知道是jbpm的bug还是我用得不对。
xyz20003 2010-10-23
HistoryActivityInstanceQuery processInstanceId(String processInstanceId);
freeflyfree 2010-10-24
xyz20003 写道
HistoryActivityInstanceQuery processInstanceId(String processInstanceId);



jbpm4.3似乎没有这个方法,是4.4才有,但是现在项目中如果使用4.4的话,发布流程的时候就会报错。
xyz20003 2010-10-24
报啥错?
liulangdeyu999 2014-02-21
用jbpm4.4 就没有这个bug了
Global site tag (gtag.js) - Google Analytics