概述
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有兩種泳道:
上圖中間無虛線分隔的泳道
上圖中間有虛線分隔的泳道
上圖:流程圖中的網關示例