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了
|