這是我們(東方易維)工作流產品設計過程中採取的設計:
一、流程例項的狀態
狀態分為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>0且n,m為實際觸發的節點個數),在n<=0和n>=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、流程例項的手工結束
所有節點全部手工結束。
五、節點例項狀態變化對流程例項狀態造成的影響
隱式結束的情況下,節點的手工結束或正常結束都會觸發流程的判斷,如果所有的節點都已結束則流程結束。
工作流流程狀態管理及變遷
這是我們 東方易維 工作流產品設計過程中採取的設計 一 流程例項的狀態 狀態分為 5種 例項化 執行中 掛起 手工結束 正常結束。狀態的變遷如下圖 二 節點例項的狀態 狀態分為 5種 例項化 執行中 掛起 手工結束 正常結束。狀態的變遷如下圖 三 具體節點的狀態 細分 a 人工節點 等待節點 這兩個...
工作流流程條件配置
工作流流程環節 組合條件配置 1.select name from owf mgr.wf item types tl查出該專案對應的編碼 2.在wf amber.indysp cond type中插入一條記錄,cond type為上面查出的name 3.新增乙個流程條件 insert into wf...
java中的工作流流程管理和流轉思路
在做某個管理專案時,被要求實現一套流程管理,比如請假的申請審批流程等,在參考了很多資料,並和同事討論後,得到了乙個自主實現的流程管理。以下提供我的設計思路,知道了思路,實現起來就簡單很多了。首先我設計了5個類來實現流程的自主設定,主要是對流程的定義和流程流轉。注 這是設計的圖,並不是實現 dicti...