【原創】流程引擎的網關(遵循BPMN2.0)設計總結


概述

BPMN 2.0是什么呢?業務流程模型注解(Business Process Modeling Notation - BPMN)是 業務流程模型的一種標准圖形注解。這個標准 是由對象管理組(Object Management Group - OMG)維護的,BPMN2規范定義了非常豐富的語言,為建模和執行業務流程。

其中BPMN2.0中網關是工作流引擎中重要的一個路徑決策,網關是用來控制流程中的流向的。更確切的是, 當一個token(BPMN 2.0中execution的概念注解)到達一個網關, 它會根據網關的類型進行合並或切分,網關描繪成一個菱形,使用一個內部圖標來指定類型 (排他,並行,多路等等)。

F2BPM工作流引擎自主研發中使用並應用遵循了BPMN2.0和WFMC的規范參考。同時在此指導的規范的基礎上梳理並發展了如下的網關類型,更加貼切中國人自己的使用習慣和有更多的引擎流轉處理能力。本文也是對BPMN2.0網關的一個總結,提供給有興趣的人員作為參考。

1 排他網關

排他網關(也叫異或網關), 用來在流轉中實現發散分支決策。 當流程執行到這個網關,所有流出的遷移線都會被求解計算一遍。 其中第一條條件解析為true遷移線會被選中(當多個條件為true時,第一個決策被執行)並且不再計算其它流出分支,讓流程沿着第一條被選中的遷移線運行;如果沒有任何一條流出分支可執行,則拋出異常,中斷執行,在流程設計時應該避免這種情況的發生,至少需要確保有一條分支的計算結果為true。

 

2 多路網關

多路網關(也叫或網關,也稱為發散網關),用來在流轉中實現發散分支決策。 當流程執行到這個網關,與排他網關類似,區別在於發散網關將所有外出的分支遷移線都會被求解計算一遍。 其中條件解析為true遷移線會被選中,讓流程沿着所有被選中的遷移線並行運行。如果沒有任何一條流出分支可執行,則拋出異常,中斷執行,在流程設計時應該避免這種情況的發生,至少需要確保有一條分支的計算結果為true。

 

3 並行網關

並行網關, 用來在流轉中實現無條件的聚合分支決策和發散分支決策。當流程執行到這個網關,所有流出的遷移線條件都會被忽略,只有全部流入的分支都到達時才會觸發發散分支行為。所有流出的遷移線都會被選中。讓流程沿着所有流出的遷移線並行運行。

 

4 並行開始網關

並行開始網關是並行網關的獨立拆分,只是並行開發網只有發散行為,用來在流轉中實現無條件的發散分支決策。當流程執行到這個網關,所有流出的遷移線條件都會被忽略,所有流出的遷移線都會被選中。讓流程沿着所有流出的遷移線並行運行。

 

5 並行結束網關

並行結束網關, 是並行網關的獨立拆分,只是並行結束網只有聚合行為,用來在流轉中實現無條件的聚合分支決策。當流程執行到這個網關,所有流入的遷移線條件都被要求流入,當全部流入的分支都到達時才會觸發發散分支行為。

 

6 復雜網關

復雜網關,復雜網關是聚合網關與發散網關的綜合體,用來在流轉中實現條件的多路聚合分支決策和多路發散分支決策。當流程執行到這個網關,根據所設定聚合規則進行聚合計算,當聚合完畢觸發發散動作,所有流出的分支遷移線條件都會被求解計算一遍。 其中條件解析為true遷移線會被選中,讓流程沿着所有被選中的遷移線並行運行。如果沒有任何一條流出分支可執行,則拋出異常,中斷執行,在流程設計時應該避免這種情況的發生,至少需要確保有一條分支的計算結果為true。

只有全部流入的分支都到達時才會觸發發散分支行為。

 

7聚合網關

聚合網關, 用來在流程中實現聚合決策。 當流程執行到這個網關,根據所設定的聚合規則進行計算,當聚合完畢時觸發流轉到下一節點。聚合規則可以是並行結束行為,也可以是多重聚合行為,或者多路聚合行為。

 

8 事件網關

事件網關,基於事件網關允許根據事件判斷流向,用來在流轉中實現異或分支決策。當流程執行到這個網關,網關的每個流出分支都要連接到一個中間捕獲事件,網關會進入等待狀態:流程會暫停執行。與此同時,會為每個流出分支建相對的事件訂閱,當捕獲取事件源時觸發條件計算,計算結果為ture時分支被選中,其它分支將被忽略,並選取最先被選中的分支執行流轉。

 

9泳道

泳道不影響流程的流轉,只是一個對流程節點進行區域划分的流程圖展示,便於在流程節點多的流程顯示上更上直觀明了。F2BPM有兩種泳道:

 

上圖中間無虛線分隔的泳道

 

 

 

上圖中間有虛線分隔的泳道

 

上圖:流程圖中的網關示例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM