工作流引擎设计之退回任务定义

Posted AlexanderHu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作流引擎设计之退回任务定义相关的知识,希望对你有一定的参考价值。

退回(Rollback Work Item)

退回是针对本人(工作流参与者)的“待办任务”的操作,即参与者主动退回待办任务列表中的任务。

为什么要退回?

参与者接受任务后,发现不应由自己办理此任务或上一步的执行者办理有错误等情况后,需要将此接受的任务退回给上一步的执行者重新办理。

退回的原则:执行退回以不影响本活动以及前活动的其他执行者已完成的工作为基本指导原则。

以下是一些不可执行退回的场景,当然这不是绝对的,有的引擎设计是可以支持部分下列场景的退回,所以,仅供参考。

1. 本活动的定义不允许对任务执行退回操作。


2. 本活动非单任务,且有其它任务已经被完成。


3. 本活动非单任务,且有其它任务正在处理中。


4. 本活动为流程定义的第一个活动,即没有可退回的前活动。



5. 前活动为自动活动的情况



6. 前活动为子流程活动的情况



7. 前活动的分支流转策略为“与”且有两个或两个以上的分支(AND-split)



图注:蓝色标识本活动,即待办任务所处的活动。

工作流任务不可退回的场景

补充说明

退回原则上应该支持AND-join场景的退回。

如果本活动和前活动之间存在一个或多个路由节点,则路由不会对退回规则产生任何影响,引擎在做退回运算时将跳过所有路由节点。

——以上是我以前在实现工作流引擎系统时的一些设计和指导原则,现在发表出来,供大家参考。不足之处,欢迎拍砖。

以上是关于工作流引擎设计之退回任务定义的主要内容,如果未能解决你的问题,请参考以下文章

工作流引擎设计之退回任务定义

工作流引擎设计之取回任务定义

流程引擎 Camunda工作流的退回起点 退回上一级

流程引擎 Camunda工作流的退回起点 退回上一级

流程引擎 Camunda工作流的退回

CCBPM工作流引擎的消息机制与设计