Posted on 2008-08-28 10:21
黎民 閱讀(293)
評論(0) 編輯 收藏 所屬分類:
工作流原理
收回:收回是
工作流參與者對自己“已辦任務”(對已完成的工作項)的一種操作,即參與者主動對已辦理過的工作項進行重新辦理。
為什么要收回?
參與者完成任務后,發(fā)現(xiàn)自己辦理有錯誤等情況后,需要將此任務收回重新辦理。
工作項的參與方式
目前有四種方式:共同參與、競爭參與、順序參與、基于角色的共同參與。
下面會針對這四種方式進行討論。
工作項收回模式
1、未觸發(fā)下一節(jié)點的工作項的收回
即當前任務節(jié)點并未完成,依舊處于執(zhí)行狀態(tài)
1.1共同參與
如圖:在節(jié)點A未結(jié)束之前,workitem1、workitem2和workitem3正常完成后可以任意收回。在只產(chǎn)生一個workitem的情況下,不存在未觸發(fā)下一節(jié)點的收回情況。
1.2順序參與
如圖:workitem1、workitem2和workitem3順序完成,workitem1在workitem2簽收(包括掛起和手工終止)前可以收回,同樣,workitem2在workitem3簽收(包括掛起和手工終止)前也可以收回。在只產(chǎn)生一個workitem的情況下,不存在未觸發(fā)下一節(jié)點的收回情況。
1.3競爭參與
因為只會產(chǎn)生一個workitem,該workitem完成后會立刻觸發(fā)下一節(jié)點,所以不存在未觸發(fā)下一節(jié)點的收回情況。
1.4基于角色的共同參與
與1.1相同。
2、已觸發(fā)下一節(jié)點的工作項的收回
2.1共同參與
問題1:多個工作項時誰可以執(zhí)行收回操作?
workitem1、workitem2和workitem3都可以執(zhí)行收回操作。第一個工作項的收回將會導致節(jié)點B實例的刪除,同時節(jié)點A重新恢復執(zhí)行狀態(tài)。
問題2:節(jié)點B處于什么狀態(tài)節(jié)點A的工作項可以執(zhí)行收回操作?
由A觸發(fā)的節(jié)點B處于正在執(zhí)行的狀態(tài),節(jié)點B所產(chǎn)生的工作項:
a共同參與 工作項均未簽收、掛起或手工終止
b順序參與 第一個工作項未簽收、掛起或手工終止
c 競爭參與 工作項均未簽收、掛起或手工終止
d角色
同共同參與
問題3:工作項收回產(chǎn)生的影響?
節(jié)點A重新執(zhí)行,收回的工作項重新執(zhí)行。節(jié)點B重新恢復未觸發(fā)狀態(tài),B所產(chǎn)生的工作項全部刪除。
2.2順序參與
問題1:多個工作項時誰可以執(zhí)行收回操作?
workitem1、workitem2和workitem3根據(jù)順序可以依次執(zhí)行收回操作。
2.3競爭參與
情況簡單,只有一個工作項,所以可以直接收回。
2.4基于角色的共同參與
同2.1
工作流收回模式
后續(xù)觸發(fā)節(jié)點只能是人工節(jié)點(可以是多個,至少一個),否則不支持收回。目前不支持父子流程之間的收回。
一個典型的同步匯聚情況:
節(jié)點1首先執(zhí)行完畢,但是因為是同步匯聚,所以它不會觸發(fā)實際的流轉(zhuǎn);而節(jié)點2的完成則會觸發(fā)節(jié)點3的執(zhí)行。在這種情況下,節(jié)點2的工作項可以執(zhí)行收回操作,而節(jié)點1的工作項因為后續(xù)沒有觸發(fā)節(jié)點而不能收回。