收回
收回是工作流參與者對自己“已辦任務”(對已完成的工作項)的一種操作,即參與者主動對已辦理過的工作項進行重新辦理。
為什么要收回?
參與者完成任務后,發現自己辦理有錯誤等情況后,需要將此任務收回重新辦理。
工作項的參與方式
目前有四種方式:共同參與、競爭參與、順序參與、基于角色的共同參與。
下面會針對這四種方式進行討論。
工作項收回模式
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的工作項因為后續沒有觸發節點而不能收回。
http://www.tkk7.com/ronghao 榮浩原創,轉載請注明出處:)
posted on 2008-07-15 18:28
ronghao 閱讀(1423)
評論(3) 編輯 收藏 所屬分類:
SOA、BPM