同时创建两个用户任务(任务A和B),当一个任务完成时,需要取消另一个任务,反之亦然。这可以通过使用任务侦听器(完成事件)来完成。但是问题是,如果两个任务同时完成怎么处理?
答案 0 :(得分:2)
您尝试过吗?竞争任务是一项事务性操作,这意味着,如果两个任务同时完成,则只有一个事务会“获胜”,而另一个事务将被回滚,从而推动第二个事务重试。通常,如果您具有重试机制,那应该可以工作
答案 1 :(得分:0)
我建议您使用multiple instances
创建一个userTask。它可以同时创建多个用户任务,并设置不同的条件以结束多个实例。
<userTask id="userTask1" name="Activiti is awesome!" activiti:assignee="${user}">
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="${userList}" activiti:elementVariable="user">
<completionCondition>${nrOfCompletedInstances == nrOfInstances}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
更多信息,请访问activiti User Guide#Multi-instance
希望可以解决您的问题!