1流程單起點單終止模型
單起點:一個流程定義必須有且唯一起點
單結束點:一個流程定義必須有且唯一結束點。
約定:提單與結束是每個流程必須有的活動,且唯一只有一個提單和結束。
2串行模型
描述:串行(Sequence)是最為簡單,也最為容易理解的模型。按照預定的任務列表,有序的執行。
3自循環模型
描述:一個步驟可以自己再次發給其它人員但步驟是同一個。同一個任務節點,重復的執行多次。
又分兩種類型:
1、 自由循環FreeCycle
在任務執行后由人為的決定是否繼續重復的執行這次任務(自由度大)
2、 聯合審批循環JointCycle
在任務執行后照設定的規則,決定是否重復執行。(通常這種情況是聯合順序審批,即第一個人審批完后下一步還是發給這個步驟但審批人設定好的人,直至最后一個人審批時再通向下一步)
4會簽模型
描述:並行會簽(Parallel),也叫“And 模式”。是說在流程運行過程中,因為不同的條件或情況,或者處理的業務需要多部門(多任務)分開處理,而產生了流程分支。並行開始步驟必須與匯聚步驟成對存在。都執行完(到達And匯聚點)后,才能激活后續的任務,也就說流程才能正確的往下運行。
注意:並行步驟與並行匯聚步驟需要配套成對存在。不允許AndSplit與OrJoin模式。
5發散聚合模型
發散模型與並行模型類似,只是必散的下一步驟列表可一個或任意多個,聚會步驟也是可任一個或任何多個根據規則。
有可能不是“同時聚合”
聚合表示的是:在聚合點,會等待所有分支的到來,如果不考慮超時(一般流程回
設定任務執行期限)和異常等情況下,流程必須等待所有的分支(Task B和Task C)都執行完(到達And匯聚點)后,才能激活后續的任務,也就說流程才能正確的往下運行。
這里面會涉及到如何聚合的問題,是人工聚合,還是自動聚合。一般這里會引入規則引擎(Rule Engine)來負責分支的聚合,按照預定的規則,將流程數據(狀態)匯聚。
聚合規則:聚合步驟不一定前面是發散步驟只要達到聚合條件則轉向下一步。
聚合步驟相對獨立,對於所有遷入者進行規則計算,可以指定哪些前繼必須都到達才能產生該步驟的待辦,其它為前繼為可選到達項。先到先計算,符合聚合條件則產生待辦,其它未到達的分支將調用任何回收器回收后被拋棄。
等待所有條件滿足后聚合步驟而產生任務待辦,聚合步驟也是一個處理步驟,只是處理人必須是任一人響應方式。
三類聚合規則
同步聚合MergeAnd
異或聚合: MergeXOR
多重聚合:MergeOR
l A、B、C、D必須全部到達(all),all代表所有步驟
l A、B、C、D任意一個到達(*),*號代表任一步驟
l A、B必須到達,C為可選A&B
l A、C必須到達,B為可選A&C
l A、B必須到達,C為可選A&B
l A、B至少有一個到達C為必到達(即在一個集合中至少有N個到達)(AB,1)&C
l A、B、C只要有一個到達(ABC,1)
l ABD集合中必須要有A,而整個集合至少有2個到達,運用的規則為第一條,(ABCD,2)&A
6異或(獨占)模型
描述:異或(XOR)又叫Exclusive Choice(獨占式選擇)當一個任務處理完后,發現其后面可允許走多個分支流程,但只允許選擇其中某一個分支運行。雖然在任務Task A 后預訂了三個不同的任務,但是僅Task D 滿足條件一般為人工操作選擇,也存在根據規則自動選擇分支,造成后續的流程中,走了A——D 分支,而另外的分支被拋棄。
7回退模型
1.7.1 退回
回退,在有的應用中叫“退回”。
如下圖所示,有任務A到任務B 屬於正常發送,但從任務B到任務A,則出現兩種情況:
(1)遷移退回:正常發送,如圖中B—A黑色線;
(2)被退回:可能因為某些特殊原因,被任務B退回,要求任務A重新辦理,如圖中B—A紅色線。雖然都是從B到A,代表的意義卻完全不同。
1.7.2 退回到提單
可設置是否僅退回到提單。
1.7.3 退回任意歷史步驟
這里要控制好並行的問題,在並行分支中的活動只能退回並行中的步驟,而不能退回到並行前的步驟,因其它分支的流轉還在繼續當中。包括遷移退回也不能如此設計。
1.7.4 不可退回模型
外部活動不可退回也不可遷移退回到發散聚合模型的中間或並行會簽模型中間的活動。
並行內部的退回只能在內部發生
發散內部的退回只能在內部發生
駁回是一個非常復雜的模式之一,以問題已在最新的F2BPM中解決,並行內和並行外都能駁回,詳細請看:
駁回設計專篇 http://www.cnblogs.com/f2flow/p/6833152.html
8自動分組並行模型
描述:可以根據選擇一批參與者系統自動根據參與者的部門進行分組產生N個分支,每條分支上的審批步驟是一樣的。
9任務分發模型
描述:分發回收即沒有后續步驟,是一個分發回收自循環步驟,像發作業本一樣,班主任發給班長,班長現發給組長,最后由組長再發給組員,然后做完作業,由組員交給組長,組長交回給班長,班長交給班主任最后發散結束。
10 自動活動模型
描述:自動模型,又叫鑒別Discriminator Choice。多了一個鑒別器(Discriminator)或者叫自動選擇模型。當任務達到這個鑒別器的時候,鑒別器會根據當前流程所處的狀態,對比預先設定的一些選擇規則,自動判別接下來流程的流向,也就是自動根據條件,選擇一個滿足條件的分支運行。即自動步驟。
鑒別規則做在活動上。
11傳閱及自動轉閱模型
11.1 描述
傳閱不影響流程的流轉,被傳閱的對象只是會收到一條只看的待閱實例,獲取打開些流程實例的查看詳細表單信息的權限。所有傳閱的記錄過程將顯示在工單的詳細里面。記錄下傳閱過程。
11.2 手動傳閱
在待辦人打開待辦界面可以傳閱給指定的人員。
11.3 自動傳閱
可以設置在進入指定步驟時自動轉閱給預先設定的人員。
11.4 相關界面
12轉交模型
12.1 描述
可以轉交給其它人協助處理,每個步驟可以定義是否允許轉交。
13等待子流程模型
描述:在這種方式下,當子流程運行的時候,主流程會暫停,等待子流程的完結。
14主子流程並行聚合模型
描述:激活子流程后,主流程並沒有停止,而是基於按照預定的流程方向運行;同時,激活后的子流程也同樣處於軟轉狀態。當到達聚合步驟時如果有一方未到達的情況下,另一方會等待。當然,這其中可能涉及到等待超時等不良因素,這時候主流程時選擇繼續等待,還是發催辦消息,還是繼續運行,就是工作流引擎的設計問題了。
15外嵌子流程模型
描述:在主流程激活子流程后,主流程繼續運行,且不關心子流程的運行狀態或運行結果。這種方式使用活動完成時觸發事件引發子流程的啟動。
結語:
運轉模型表面看似從一個步驟轉向另一個步驟,實質還需要思考各種步驟的可進入可分發出來的規則如停等機制,參與者,訪問控制等等,還有流程實例的持久化,步驟在運轉過程中一系列需要處理事項。所以不要簡單認為工作流引擎就是做步驟的跳轉。雖然petri網是一個很著名的工作流網是有向圖的思想,但是如果
你不對有向圖做簡化改造和邊界設定,也將很容易就暴露出petri網的缺點出來即復雜性問題,容易無限龐大而難以理解。在有向圖的概念中是沒有中國特色退
回的概念,所以你還需要加入退回機制的思想。加上petri只是提供一種跳轉思想的參考,所以可借用petri的思想做為參考,從而設計出符合中國特色的流程引擎思想!
一句話總結:流程引擎是一個精細化工程