昨天我們學習BPMN「任務」的概念,我們繼續認識BPMN,利用大概10分鐘的時間來學習BPMN中的零件「網關」吧。
業務流程中,常常需要做出各種決策,這些決策在BPMN中以網關(Gateway)來表示,有時也被稱為邏輯門。
網關(Gateway)用來控制流程的分叉(Fork)與合併(Join)。分叉,是指將流程中的順序流(Sequence Flow)分散成兩個或多個不同的分支;合併則相反,將兩個或多個分支合而為一。
只有在需要對流程進行特定控制時,才會引入這些網關。就像其名稱所示,網關彷彿是一道關口,用來控制流程中是否允許進行某些特定的步驟。經過網關後,根據不同的條件,流程可能會有不同的走向,這有助於根據情況進行靈活的處理。
網關在業務流程中具有以下特點:
BPMN 將網關分為四種:
1.包容網關(Inclusive Gateway)
2.獨占網關(Exclusive Gateway)
3.並行網關(Parallel Gateway)
4.事件網關(Event-based Gateway)
5.複雜網關(Complex Gateway)
(圖片來源:Business Process Model and Notation(BPMN))P287
包含網關(Inclusive Gateway)是一種結合了獨占網關(Exclusive Gateway)和併行網關特性的元素。它類似於獨占網關,可設定多個序列流的條件,系統會根據這些條件進行評估。然而,不同之處在於包含網關可以同時處理多個序列流,類似於併行網關。
包含網關的功能主要建立在傳入和傳出序列流上,其運作方式如下:
值得注意的是,如果同一個包含網關有多個傳入和傳出序列流,則包含網關同時具有分支(Fork)和合併(Join)的功能。在這種情況下,網關首先進行合併,將所有具有流程令牌的傳入序列流合併,然後將評估結果為真的傳出序列流分為多個並行執行路徑。
(圖片來源:Business Process Model and Notation(BPMN))P292
獨占網關(Exclusive Gateway)用於在流程中建立決策模型。當執行達至此閘道時,將依序評估所有外流序列,並選擇第一個條件評估結果為真(True)的序列,以繼續進行流程。
若無法選擇序列(沒有任何條件評估結果為真),且未定義預設序列流,則將導致執行異常。在沒有其他條件符合的情況下,可在閘道本身設置一條預設流程,就類似程式語言中的「else」一樣。
(圖片來源:Business Process Model and Notation(BPMN))P290
併行網關(Parallel Gateways)能夠讓我們有效地呈現並行執行的情境。併行網關允許同時分支出多個執行路徑,或者將多個不同的執行路徑連接在一起。
併行網關(Parallel Gateways)的運作方式建基於序列流的進出。以下是其主要功能:
若同一併行網關有多個進入和離開的序列流,則此併行網關同時具備分叉和合流的功能。在這種情況下,網關會首先連接所有進入的序列流,然後再將其分割為多個並行的執行路徑。
併行網關與其他類型的網關有一個重要的區別:「不會評估條件」,如果在連接至併行網關的序列流上設定了條件,這些條件將會被忽略。
需要注意的是,併行網關並不需要是「平衡」的,也就是說,進入和離開併行網關的序列流的數量並不需要完全匹配。併行網關會等待所有進入的序列流,並且為每條離開的序列流建立一個並行的執行路徑,而不會受到其他流程模型結構的影響。
(圖片來源:Business Process Model and Notation(BPMN))P294
事件網關(Event-Based Gateway)專門用於捕捉中間事件,在選擇分支時不同於其他網關,它是通過捕獲的事件來觸發的,只有在等待的事件發生後才會觸發決策,且關心最先發生的事件「先發生,就先做」,具有獨佔網關(Exclusive Gateway)的排他性。
💡 獨佔網關(Exclusive Gateway)以資料處理為基礎,將流程導向不同的分支。
事件網關(Event-Based Gateway),以中間事件為核心。
事件網關允許根據事件進行決策。每個從網關流出的序列流都必須連接到一個中間捕獲事件。當流程執行到達事件網關時,它的行為類似於等待狀態:流程暫停執行。此外,為每個傳出的序列流創建了一個事件訂閱。
事件網關中運行的序列流與常規序列流不同。這些序列流實際上從未真正「執行」過。相反,它們僅指示流程引擎在到達事件網關時需要訂閱哪些事件。這種特殊的流程分支方式在業務流程管理中具有重要作用,能夠更好地處理基於事件的決策需求。
(圖片來源:Business Process Model and Notation(BPMN))P298
複雜關口(Complex Gateway),則用於模擬複雜的同步行為。通過表達式 activationCondition 來描述確切的行為,例如,這個表達式可以指定需要在五個傳入序列流中的三個上面有令牌才能啟動閘道。閘道產生的令牌取決於傳出序列流上的條件,就像包容性閘道的拆分行為一樣。如果後來有令牌到達剩下的兩個序列流,這些令牌會導致閘道重置,並且新的令牌可以在傳出序列流上生成。為了確定它是否需要等待額外的令牌才能重置,閘道使用了包容性閘道的同步語義。複雜關口的概念類似於包容關口,當在流程中需要額外說明、文件或者判斷較難呈現時,可以使用複雜關口,以輔助流程的理解和執行。
(圖片來源:Business Process Model and Notation(BPMN))P295
我們現在已經知道在BPMN中的事件,恭喜您對BPMN有「網關」的運用有所了解,明天我們再利用一些認識BPMN中的「子流程」,我們一起加油吧~~
💡 如果有任何問題,歡迎在下方留言!! 筆者頭一回寫技術文,如果內容有誤,或者內容的呈現上有所缺陷,如果您願意,歡迎在下方留言給我呦~~
這是我的部落格,歡迎點擊閱覽喔~~會不定期更新文章