posts - 193,  comments - 520,  trackbacks - 0

          這是我們(東方易維)工作流產(chǎn)品設(shè)計(jì)過程中采取的設(shè)計(jì):

          一、流程實(shí)例的狀態(tài)

             狀態(tài)分為5種:實(shí)例化、執(zhí)行中、掛起、手工結(jié)束、正常結(jié)束。

             狀態(tài)的變遷如下圖:


          二、節(jié)點(diǎn)實(shí)例的狀態(tài)

          狀態(tài)分為5種:實(shí)例化、執(zhí)行中、掛起、手工結(jié)束、正常結(jié)束。

          狀態(tài)的變遷如下圖:


          三、具體節(jié)點(diǎn)的狀態(tài)

             細(xì)分:

          A、人工節(jié)點(diǎn)、等待節(jié)點(diǎn)

          這兩個(gè)節(jié)點(diǎn)被觸發(fā)后存在一個(gè)執(zhí)行等待的過程,所以可以被用戶直接掛起和手工結(jié)束。人工節(jié)點(diǎn)的掛起意味著所有未完成工作項(xiàng)的掛起,同時(shí)相應(yīng)時(shí)間服務(wù)的時(shí)間計(jì)算的掛起。手工結(jié)束會(huì)使流程跳過該節(jié)點(diǎn)(所有工作項(xiàng)手工結(jié)束),繼續(xù)往后流轉(zhuǎn)。

          B、開始節(jié)點(diǎn)、結(jié)束節(jié)點(diǎn)、分支節(jié)點(diǎn)、自動(dòng)節(jié)點(diǎn)

          這些節(jié)點(diǎn)的特點(diǎn)在于被觸發(fā)后立刻執(zhí)行和流轉(zhuǎn),所以不會(huì)存在掛起和手工結(jié)束的狀態(tài)。

          C、并發(fā)節(jié)點(diǎn)、匯聚節(jié)點(diǎn)

          并發(fā)節(jié)點(diǎn)和匯聚節(jié)點(diǎn)不存在掛起的狀態(tài),同時(shí)不能被用戶直接手工結(jié)束,它們的狀態(tài)受流程實(shí)例狀態(tài)和相關(guān)節(jié)點(diǎn)實(shí)例狀態(tài)的影響。

          并發(fā)節(jié)點(diǎn)和匯聚節(jié)點(diǎn)的情況復(fù)雜一些,分模式討論


          1

          1、同步匯聚(圖1

          根據(jù)情況觸發(fā)節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2中的一個(gè)或多個(gè),匯聚節(jié)點(diǎn)等待所有實(shí)際觸發(fā)的節(jié)點(diǎn)完成后再執(zhí)行流轉(zhuǎn)。中間匯聚節(jié)點(diǎn)只會(huì)產(chǎn)生一個(gè)實(shí)例。

          1.1、正常流轉(zhuǎn)時(shí)的處理策略

          當(dāng)匯聚節(jié)點(diǎn)未被觸發(fā)時(shí)(即節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2都未執(zhí)行結(jié)束),并發(fā)節(jié)點(diǎn)處于執(zhí)行狀態(tài),一旦匯聚節(jié)點(diǎn)被觸發(fā)(即節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2有一個(gè)執(zhí)行結(jié)束),并發(fā)節(jié)點(diǎn)正常結(jié)束并且匯聚節(jié)點(diǎn)處于執(zhí)行狀態(tài),所有并發(fā)出的節(jié)點(diǎn)實(shí)例執(zhí)行結(jié)束后,匯聚節(jié)點(diǎn)正常結(jié)束,流程繼續(xù)流轉(zhuǎn)。

          1.2、用戶掛起、手工結(jié)束相關(guān)節(jié)點(diǎn)的處理策略

          1.2.1、匯聚節(jié)點(diǎn)未激活時(shí)

          節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2的掛起和恢復(fù)執(zhí)行不會(huì)影響并發(fā)節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài));節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2的任一手工結(jié)束都會(huì)觸發(fā)匯聚節(jié)點(diǎn),使并發(fā)節(jié)點(diǎn)正常結(jié)束,如果所有并發(fā)的節(jié)點(diǎn)實(shí)例都結(jié)束(包括手工結(jié)束和正常結(jié)束),匯聚節(jié)點(diǎn)正常結(jié)束,觸發(fā)流程流轉(zhuǎn)。

          1.2.2、匯聚節(jié)點(diǎn)已激活時(shí)

          節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2的掛起和恢復(fù)執(zhí)行不會(huì)影響匯聚節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài));節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2的手工結(jié)束會(huì)影響匯聚節(jié)點(diǎn)的狀態(tài),每個(gè)節(jié)點(diǎn)實(shí)例的手工結(jié)束會(huì)引起匯聚節(jié)點(diǎn)的判斷,如果所有并發(fā)的節(jié)點(diǎn)實(shí)例(包括正常結(jié)束和手工結(jié)束)都結(jié)束,匯聚節(jié)點(diǎn)正常結(jié)束,觸發(fā)流程流轉(zhuǎn)。

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

          1.3.1、匯聚節(jié)點(diǎn)未激活時(shí)

          流程的掛起和恢復(fù)執(zhí)行不會(huì)影響并發(fā)節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài)),節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2會(huì)被全部掛起或恢復(fù);流程的手工結(jié)束會(huì)引起所有節(jié)點(diǎn)的手工結(jié)束。

          1.3.2、匯聚節(jié)點(diǎn)已激活時(shí)

          流程的掛起和恢復(fù)執(zhí)行不會(huì)影響匯聚節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài)),節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2未執(zhí)行結(jié)束的實(shí)例會(huì)被全部掛起或恢復(fù);流程的手工結(jié)束會(huì)引起所有節(jié)點(diǎn)的手工結(jié)束。

          2、nOutOfM匯聚(圖1

          根據(jù)情況觸發(fā)節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2中的一個(gè)或多個(gè),匯聚節(jié)點(diǎn)等待N個(gè)實(shí)際觸發(fā)的節(jié)點(diǎn)完成后即執(zhí)行流轉(zhuǎn)(N>0N<MM為實(shí)際觸發(fā)的節(jié)點(diǎn)個(gè)數(shù)),在N<=0N>=M的情況下即為同步匯聚。中間匯聚節(jié)點(diǎn)只會(huì)產(chǎn)生一個(gè)實(shí)例。

          2.1、正常流轉(zhuǎn)時(shí)的處理策略

          當(dāng)匯聚節(jié)點(diǎn)未被觸發(fā)時(shí)(即節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2都未執(zhí)行結(jié)束),并發(fā)節(jié)點(diǎn)處于執(zhí)行狀態(tài),一旦匯聚節(jié)點(diǎn)被觸發(fā)(即節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2有一個(gè)執(zhí)行結(jié)束),并發(fā)節(jié)點(diǎn)正常結(jié)束并且匯聚節(jié)點(diǎn)處于執(zhí)行狀態(tài),N個(gè)并發(fā)出的節(jié)點(diǎn)實(shí)例執(zhí)行結(jié)束后,匯聚節(jié)點(diǎn)正常結(jié)束,流程繼續(xù)流轉(zhuǎn),M-N的節(jié)點(diǎn)實(shí)例被手工結(jié)束。

          2.2、用戶掛起、手工結(jié)束相關(guān)節(jié)點(diǎn)的處理策略

          2.2.1、匯聚節(jié)點(diǎn)未激活時(shí)

          節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2的掛起和恢復(fù)執(zhí)行不會(huì)影響并發(fā)節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài));節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2的任一手工結(jié)束都會(huì)觸發(fā)匯聚節(jié)點(diǎn),使并發(fā)節(jié)點(diǎn)正常結(jié)束,如果N個(gè)并發(fā)的節(jié)點(diǎn)實(shí)例都手工結(jié)束,并發(fā)節(jié)點(diǎn)正常結(jié)束,觸發(fā)匯聚節(jié)點(diǎn),匯聚節(jié)點(diǎn)正常結(jié)束,觸發(fā)流程流轉(zhuǎn),M-N的節(jié)點(diǎn)實(shí)例被手工結(jié)束。

          2.2.2、匯聚節(jié)點(diǎn)已激活時(shí)

          節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2的掛起和恢復(fù)執(zhí)行不會(huì)影響匯聚節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài));節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2的手工結(jié)束會(huì)影響匯聚節(jié)點(diǎn)的狀態(tài),每個(gè)節(jié)點(diǎn)實(shí)例的手工結(jié)束會(huì)引起匯聚節(jié)點(diǎn)的判斷,如果N個(gè)并發(fā)的節(jié)點(diǎn)實(shí)例(包括正常結(jié)束和手工結(jié)束)都結(jié)束,匯聚節(jié)點(diǎn)正常結(jié)束,觸發(fā)流程流轉(zhuǎn),M-N的節(jié)點(diǎn)實(shí)例被手工結(jié)束。

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

          2.3.1、匯聚節(jié)點(diǎn)未激活時(shí)

          流程的掛起和恢復(fù)執(zhí)行不會(huì)影響并發(fā)節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài)),節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2會(huì)被全部掛起或恢復(fù);流程的手工結(jié)束會(huì)引起所有節(jié)點(diǎn)的手工結(jié)束。

          2.3.2、匯聚節(jié)點(diǎn)已激活時(shí)

          流程的掛起和恢復(fù)執(zhí)行不會(huì)影響匯聚節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài)),節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2未執(zhí)行結(jié)束的實(shí)例會(huì)被全部掛起或恢復(fù);流程的手工結(jié)束會(huì)引起所有節(jié)點(diǎn)的手工結(jié)束。

          3、辨別匯聚(圖1

          nOutOfM匯聚的特例,N=1

          4、多實(shí)例匯聚(圖2


          2

          根據(jù)情況觸發(fā)節(jié)點(diǎn)0、節(jié)點(diǎn)1中的一個(gè)或多個(gè),節(jié)點(diǎn)0和節(jié)點(diǎn)1任意一個(gè)執(zhí)行結(jié)束后都會(huì)觸發(fā)匯聚節(jié)點(diǎn)產(chǎn)生一個(gè)新的實(shí)例,匯聚節(jié)點(diǎn)實(shí)例緊接著觸發(fā)節(jié)點(diǎn)2,節(jié)點(diǎn)2也會(huì)產(chǎn)生多個(gè)實(shí)例。

          4.1、正常流轉(zhuǎn)時(shí)的處理策略

          當(dāng)匯聚節(jié)點(diǎn)未被觸發(fā)時(shí)(即節(jié)點(diǎn)0、節(jié)點(diǎn)1都未執(zhí)行結(jié)束),并發(fā)節(jié)點(diǎn)處于執(zhí)行狀態(tài),一旦匯聚節(jié)點(diǎn)被觸發(fā)(即節(jié)點(diǎn)0、節(jié)點(diǎn)1有一個(gè)執(zhí)行結(jié)束),匯聚節(jié)點(diǎn)會(huì)緊接著觸發(fā)節(jié)點(diǎn)2,匯聚節(jié)點(diǎn)正常結(jié)束。所有并發(fā)出的節(jié)點(diǎn)實(shí)例執(zhí)行結(jié)束后,并發(fā)節(jié)點(diǎn)正常結(jié)束。

          4.2、用戶掛起、手工結(jié)束相關(guān)節(jié)點(diǎn)的處理策略

          節(jié)點(diǎn)0、節(jié)點(diǎn)1的掛起和恢復(fù)執(zhí)行不會(huì)影響并發(fā)節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài));節(jié)點(diǎn)0、節(jié)點(diǎn)1的手工結(jié)束會(huì)影響并發(fā)節(jié)點(diǎn)和匯聚節(jié)點(diǎn)的狀態(tài),每個(gè)節(jié)點(diǎn)實(shí)例的手工結(jié)束會(huì)引起匯聚節(jié)點(diǎn)產(chǎn)生新的實(shí)例并觸發(fā)節(jié)點(diǎn)2,同時(shí)會(huì)引起并發(fā)節(jié)點(diǎn)的判斷,如果所有并發(fā)的節(jié)點(diǎn)實(shí)例都手工結(jié)束,并發(fā)節(jié)點(diǎn)正常結(jié)束。

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

          流程的掛起和恢復(fù)執(zhí)行不會(huì)影響并發(fā)節(jié)點(diǎn)的狀態(tài)(依舊處于執(zhí)行狀態(tài)),節(jié)點(diǎn)0、節(jié)點(diǎn)1、節(jié)點(diǎn)2會(huì)被全部掛起或恢復(fù);流程的手工結(jié)束會(huì)引起所有未結(jié)束節(jié)點(diǎn)的手工結(jié)束。

          5、隱式結(jié)束,沒有匯聚節(jié)點(diǎn)與并發(fā)節(jié)點(diǎn)對(duì)應(yīng)(圖3


          3

          所有節(jié)點(diǎn)結(jié)束時(shí)(正常結(jié)束或手工結(jié)束),并發(fā)節(jié)點(diǎn)正常結(jié)束。流程的手工結(jié)束會(huì)引起所有未結(jié)束節(jié)點(diǎn)的手工結(jié)束。

          四、流程實(shí)例狀態(tài)變化對(duì)節(jié)點(diǎn)實(shí)例狀態(tài)造成的影響

          1、流程實(shí)例的掛起

             A類節(jié)點(diǎn)掛起,BC類節(jié)點(diǎn)不受影響。同時(shí)在流程實(shí)例恢復(fù)執(zhí)行之前,A類節(jié)點(diǎn)不允許用戶直接恢復(fù)執(zhí)行。

          2、流程實(shí)例的手工結(jié)束

             所有節(jié)點(diǎn)全部手工結(jié)束。

          五、節(jié)點(diǎn)實(shí)例狀態(tài)變化對(duì)流程實(shí)例狀態(tài)造成的影響

          隱式結(jié)束的情況下,節(jié)點(diǎn)的手工結(jié)束或正常結(jié)束都會(huì)觸發(fā)流程的判斷,如果所有的節(jié)點(diǎn)都已結(jié)束則流程結(jié)束。



          http://www.aygfsteel.com/ronghao 榮浩原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處:)
          posted on 2008-05-26 19:36 ronghao 閱讀(1612) 評(píng)論(2)  編輯  收藏 所屬分類: SOA、BPM

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

          關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進(jìn)。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網(wǎng)站

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 阳信县| 浮梁县| 古浪县| 九江县| 积石山| 康马县| 松江区| 宽城| 荆门市| 乌审旗| 怀宁县| 千阳县| 陇西县| 安泽县| 濉溪县| 章丘市| 静安区| 奉化市| 鄂伦春自治旗| 长治县| 晋城| 雅安市| 济南市| 出国| 内江市| 远安县| 本溪市| 林芝县| 安仁县| 抚松县| 大兴区| 桃江县| 房山区| 福鼎市| 眉山市| 定襄县| 富裕县| 湖北省| 佛山市| 龙州县| 雅安市|