取回(Withdraw Work Item)
取回是针对本人的“已办任务”的操作,即取回已办任务。
何谓取回:参与者提交任务后,发现自己办理此任务有误或不应该立刻提交等情况,需要将此已办理完成的任务取回重新办理或稍后再提交。
取回原则:执行取回以不影响其他执行者已经办理的任务及下一步参与者已经完成的工作为基本指导原则。如果前活动仍在执行状态,即下一步活动还没有被激活,则只要流程定义允许,任务是肯定可以被取回的。
以下是一些不可执行取回的场景,当然这不是绝对的,有的引擎设计是可以支持部分下列场景的取回,所以,仅供参考。
1. 前活动的定义不允许对任务执行取回操作。
2. 前活动为自动活动的情况
3. 前活动为子流程活动的情况
4. 下一步活动不存在的情况,有可能下一步活动即是流程的终点
5. 下一步活动是自动活动的情况
6. 下一步活动是子流程活动的情况
7. 下一步活动已经有任务被执行者接受,即活动处于正在执行中的状态
8. 下一步活动已经执行完成,即处于已完成的状态
图注:蓝色标识前活动,即已办任务所处的活动。
补充说明
如果前活动和其下一步活动之间存在一个或多个路由节点,则路由不会对取回规则产生任何影响,引擎在做取回运算时将跳过所有路由节点。
——以上是我以前在实现工作流引擎系统时的一些设计和指导原则,现在发表出来,供大家参考。不足之处,欢迎拍砖。