posts - 193,  comments - 520,  trackbacks - 0

          這是我們(東方易維)工作流產品設計過程中采取的設計:

          一、流程實例的狀態

             狀態分為5種:實例化、執行中、掛起、手工結束、正常結束。

             狀態的變遷如下圖:


          二、節點實例的狀態

          狀態分為5種:實例化、執行中、掛起、手工結束、正常結束。

          狀態的變遷如下圖:


          三、具體節點的狀態

             細分:

          A、人工節點、等待節點

          這兩個節點被觸發后存在一個執行等待的過程,所以可以被用戶直接掛起和手工結束。人工節點的掛起意味著所有未完成工作項的掛起,同時相應時間服務的時間計算的掛起。手工結束會使流程跳過該節點(所有工作項手工結束),繼續往后流轉。

          B、開始節點、結束節點、分支節點、自動節點

          這些節點的特點在于被觸發后立刻執行和流轉,所以不會存在掛起和手工結束的狀態。

          C、并發節點、匯聚節點

          并發節點和匯聚節點不存在掛起的狀態,同時不能被用戶直接手工結束,它們的狀態受流程實例狀態和相關節點實例狀態的影響。

          并發節點和匯聚節點的情況復雜一些,分模式討論


          1

          1、同步匯聚(圖1

          根據情況觸發節點0、節點1、節點2中的一個或多個,匯聚節點等待所有實際觸發的節點完成后再執行流轉。中間匯聚節點只會產生一個實例。

          1.1、正常流轉時的處理策略

          當匯聚節點未被觸發時(即節點0、節點1、節點2都未執行結束),并發節點處于執行狀態,一旦匯聚節點被觸發(即節點0、節點1、節點2有一個執行結束),并發節點正常結束并且匯聚節點處于執行狀態,所有并發出的節點實例執行結束后,匯聚節點正常結束,流程繼續流轉。

          1.2、用戶掛起、手工結束相關節點的處理策略

          1.2.1、匯聚節點未激活時

          節點0、節點1、節點2的掛起和恢復執行不會影響并發節點的狀態(依舊處于執行狀態);節點0、節點1、節點2的任一手工結束都會觸發匯聚節點,使并發節點正常結束,如果所有并發的節點實例都結束(包括手工結束和正常結束),匯聚節點正常結束,觸發流程流轉。

          1.2.2、匯聚節點已激活時

          節點0、節點1、節點2的掛起和恢復執行不會影響匯聚節點的狀態(依舊處于執行狀態);節點0、節點1、節點2的手工結束會影響匯聚節點的狀態,每個節點實例的手工結束會引起匯聚節點的判斷,如果所有并發的節點實例(包括正常結束和手工結束)都結束,匯聚節點正常結束,觸發流程流轉。

          1.3、用戶掛起、手工結束流程的處理策略

          1.3.1、匯聚節點未激活時

          流程的掛起和恢復執行不會影響并發節點的狀態(依舊處于執行狀態),節點0、節點1、節點2會被全部掛起或恢復;流程的手工結束會引起所有節點的手工結束。

          1.3.2、匯聚節點已激活時

          流程的掛起和恢復執行不會影響匯聚節點的狀態(依舊處于執行狀態),節點0、節點1、節點2未執行結束的實例會被全部掛起或恢復;流程的手工結束會引起所有節點的手工結束。

          2、nOutOfM匯聚(圖1

          根據情況觸發節點0、節點1、節點2中的一個或多個,匯聚節點等待N個實際觸發的節點完成后即執行流轉(N>0N<MM為實際觸發的節點個數),在N<=0N>=M的情況下即為同步匯聚。中間匯聚節點只會產生一個實例。

          2.1、正常流轉時的處理策略

          當匯聚節點未被觸發時(即節點0、節點1、節點2都未執行結束),并發節點處于執行狀態,一旦匯聚節點被觸發(即節點0、節點1、節點2有一個執行結束),并發節點正常結束并且匯聚節點處于執行狀態,N個并發出的節點實例執行結束后,匯聚節點正常結束,流程繼續流轉,M-N的節點實例被手工結束。

          2.2、用戶掛起、手工結束相關節點的處理策略

          2.2.1、匯聚節點未激活時

          節點0、節點1、節點2的掛起和恢復執行不會影響并發節點的狀態(依舊處于執行狀態);節點0、節點1、節點2的任一手工結束都會觸發匯聚節點,使并發節點正常結束,如果N個并發的節點實例都手工結束,并發節點正常結束,觸發匯聚節點,匯聚節點正常結束,觸發流程流轉,M-N的節點實例被手工結束。

          2.2.2、匯聚節點已激活時

          節點0、節點1、節點2的掛起和恢復執行不會影響匯聚節點的狀態(依舊處于執行狀態);節點0、節點1、節點2的手工結束會影響匯聚節點的狀態,每個節點實例的手工結束會引起匯聚節點的判斷,如果N個并發的節點實例(包括正常結束和手工結束)都結束,匯聚節點正常結束,觸發流程流轉,M-N的節點實例被手工結束。

          2.3、用戶掛起、手工結束流程的處理策略

          2.3.1、匯聚節點未激活時

          流程的掛起和恢復執行不會影響并發節點的狀態(依舊處于執行狀態),節點0、節點1、節點2會被全部掛起或恢復;流程的手工結束會引起所有節點的手工結束。

          2.3.2、匯聚節點已激活時

          流程的掛起和恢復執行不會影響匯聚節點的狀態(依舊處于執行狀態),節點0、節點1、節點2未執行結束的實例會被全部掛起或恢復;流程的手工結束會引起所有節點的手工結束。

          3、辨別匯聚(圖1

          nOutOfM匯聚的特例,N=1

          4、多實例匯聚(圖2


          2

          根據情況觸發節點0、節點1中的一個或多個,節點0和節點1任意一個執行結束后都會觸發匯聚節點產生一個新的實例,匯聚節點實例緊接著觸發節點2,節點2也會產生多個實例。

          4.1、正常流轉時的處理策略

          當匯聚節點未被觸發時(即節點0、節點1都未執行結束),并發節點處于執行狀態,一旦匯聚節點被觸發(即節點0、節點1有一個執行結束),匯聚節點會緊接著觸發節點2,匯聚節點正常結束。所有并發出的節點實例執行結束后,并發節點正常結束。

          4.2、用戶掛起、手工結束相關節點的處理策略

          節點0、節點1的掛起和恢復執行不會影響并發節點的狀態(依舊處于執行狀態);節點0、節點1的手工結束會影響并發節點和匯聚節點的狀態,每個節點實例的手工結束會引起匯聚節點產生新的實例并觸發節點2,同時會引起并發節點的判斷,如果所有并發的節點實例都手工結束,并發節點正常結束。

          4.3、用戶掛起、手工結束流程的處理策略

          流程的掛起和恢復執行不會影響并發節點的狀態(依舊處于執行狀態),節點0、節點1、節點2會被全部掛起或恢復;流程的手工結束會引起所有未結束節點的手工結束。

          5、隱式結束,沒有匯聚節點與并發節點對應(圖3


          3

          所有節點結束時(正常結束或手工結束),并發節點正常結束。流程的手工結束會引起所有未結束節點的手工結束。

          四、流程實例狀態變化對節點實例狀態造成的影響

          1、流程實例的掛起

             A類節點掛起,B、C類節點不受影響。同時在流程實例恢復執行之前,A類節點不允許用戶直接恢復執行。

          2、流程實例的手工結束

             所有節點全部手工結束。

          五、節點實例狀態變化對流程實例狀態造成的影響

          隱式結束的情況下,節點的手工結束或正常結束都會觸發流程的判斷,如果所有的節點都已結束則流程結束。



          http://www.aygfsteel.com/ronghao 榮浩原創,轉載請注明出處:)
          posted on 2008-05-26 19:36 ronghao 閱讀(1609) 評論(2)  編輯  收藏 所屬分類: SOA、BPM

          FeedBack:
          # re: 工作流流程狀態管理及變遷
          2008-05-27 09:57 | dennis
          這樣的分類其實將資源與節點混合了,例如自動節點、人工節點以及如匯聚節點這樣的說法,其實是由它們的觸發者來稱呼的,自動節點和and-join,and-split節點都是由自動資源觸發,人工節點就是由人力資源觸發;將節點(或者說工作項)與資源分離清楚,顯然更利于實現和分析。  回復  更多評論
            
          # re: 工作流流程狀態管理及變遷[未登錄]
          2008-05-27 10:01 | ronghao
          @dennis
          是這樣的,我的理解是只有人工節點需要人員參與(即產生工作項),其他節點都是自動完成的或系統觸發的。  回復  更多評論
            
          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          關注工作流和企業業務流程改進?,F就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網站

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 隆德县| 闻喜县| 汉阴县| 广丰县| 南开区| 陆丰市| 靖州| 洪泽县| 汝阳县| 左贡县| 扬中市| 潍坊市| 孟州市| 永平县| 怀仁县| 榆树市| 建宁县| 宁波市| 灵石县| 五寨县| 汉沽区| 长宁县| 乳山市| 永吉县| 紫阳县| 于都县| 阿拉善右旗| 广灵县| 普洱| 营山县| 五大连池市| 宽甸| 西华县| 定州市| 株洲县| 个旧市| 文安县| 平远县| 天峨县| 铜川市| 大化|