工作流之收回

          Posted on 2008-08-28 10:21 黎民 閱讀(290) 評論(0)  編輯  收藏 所屬分類: 工作流原理
          收回:收回是工作流參與者對自己“已辦任務”(對已完成的工作項)的一種操作,即參與者主動對已辦理過的工作項進行重新辦理。

          為什么要收回?

          參與者完成任務后,發現自己辦理有錯誤等情況后,需要將此任務收回重新辦理。

          工作項的參與方式

          目前有四種方式:共同參與、競爭參與、順序參與、基于角色的共同參與。

          下面會針對這四種方式進行討論。

          工作項收回模式

          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的工作項因為后續沒有觸發節點而不能收回。

          posts - 57, comments - 3, trackbacks - 0, articles - 1

          Copyright © 黎民

          主站蜘蛛池模板: 六安市| 惠水县| 大关县| 沭阳县| 叶城县| 临汾市| 尚志市| 翼城县| 阿勒泰市| 察隅县| 广州市| 泊头市| 灵武市| 新乡县| 屏东县| 岑巩县| 五寨县| 赞皇县| 连州市| 黑龙江省| 西吉县| 万全县| 赤壁市| 宕昌县| 丰城市| 丹江口市| 东乡族自治县| 巴东县| 丰顺县| 海原县| 柘城县| 博罗县| 德江县| 岐山县| 云安县| 仁化县| 牡丹江市| 庄河市| 大英县| 巨野县| 阿巴嘎旗|