F2工做流引擎之 工做流運轉模型(三)

1流程單起點單終止模型

單起點:一個流程定義必須有且惟一塊兒點html

單結束點:一個流程定義必須有且惟一結束點。spa

約定:提單與結束是每一個流程必須有的活動,且惟一隻有一個提單和結束。設計

2串行模型

 

 

描述:串行(Sequence)是最爲簡單,也最爲容易理解的模型。按照預約的任務列表,有序的執行。3d

3自循環模型

 

描述:一個步驟能夠本身再次發給其它人員但步驟是同一個。同一個任務節點,重複的執行屢次。htm

又分兩種類型:對象

一、  自由循環FreeCycleblog

在任務執行後由人爲的決定是否繼續重複的執行此次任務(自由度大)事件

二、  聯合審批循環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的思想作爲參考,從而設計出符合中國特點的流程引擎思想!

一句話總結:流程引擎是一個精細化工程

相關文章
相關標籤/搜索