为什么要收回?
参与者完成任务后,发现自己办理有错误等情况后,需要将此任务收回重新办理。
工作项的参与方式
目前有四种方式:共同参与、竞争参与、顺序参与、基于角色的共同参与。
下面会针对这四种方式进行讨论。
工作项收回模式
1、未触发下一节点的工作项的收回
即当前任务节点并未完成,依旧处于执行状态
1.1共同参与

如图:在节点A未结束之前,workitem1、workitem2和workitem3正常完成后可以任意收回。在只产生一个workitem的情况下,不存在未触发下一节点的收回情况。
1.2顺序参与

如图:
workitem1
、
workitem2
和
workitem3
顺序完成,
workitem1
在
workitem2
签收(包括挂起和手工终止)前可以收回,同样,
workitem2
在
workitem3
签收(包括挂起和手工终止)前也可以收回。
在只产生一个workitem
的情况下,
不存在未触发下一节点的收回情况。
1.3
竞争参与
因为只会产生一个
workitem
,该
workitem
完成后会立刻触发下一节点,所以不存在未触发下一节点的收回情况。
1.4
基于角色的共同参与
与
1.1
相同。
2
、已触发下一节点的工作项的收回
2.1
共同参与

问题
1
:多个工作项时谁可以执行收回操作?
workitem1
、
workitem2
和
workitem3
都可以执行收回操作。第一个工作项的收回将会导致节点
B
实例的删除,同时节点
A
重新恢复执行状态。
问题
2
:节点
B
处于什么状态节点
A
的工作项可以执行收回操作?
由
A
触发的节点
B
处于正在执行的状态,节点
B
所产生的工作项:
a
共同参与
工作项均未签收、挂起或手工终止
b
顺序参与
第一个工作项未签收、挂起或手工终止
c
竞争参与
工作项均未签收、挂起或手工终止
d
角色
同共同参与
问题
3
:工作项收回产生的影响?
节点
A
重新执行,收回的工作项重新执行。节点
B
重新恢复未触发状态,
B
所产生的工作项全部删除。
2.2
顺序参与

问题
1
:多个工作项时谁可以执行收回操作?
workitem1
、
workitem2
和
workitem3
根据顺序可以依次执行收回操作。
2.3
竞争参与
情况简单,只有一个工作项,所以可以直接收回。
2.4
基于角色的共同参与
同
2.1
工作流收回模式
后续触发节点只能是人工节点(可以是多个,至少一个),否则不支持收回。目前不支持父子流程之间的收回。
一个典型的同步汇聚情况:

节点
1
首先执行完毕,但是因为是同步汇聚,所以它不会触发实际的流转;而节点
2
的完成则会触发节点
3
的执行。在这种情况下,节点
2
的工作项可以执行收回操作,而节点
1
的工作项因为后续没有触发节点而不能收回。