「DAY05」理解 BPMN 核心概念:網關

Posted on September 19, 2023 • 1 min read • 128 words
Share via

業務流程中,常常需要做出各種決策,這些決策在BPMN中以網關(Gateway)來表示,有時也被稱為邏輯門。

昨天我們學習BPMN「任務」的概念,我們繼續認識BPMN,利用大概10分鐘的時間來學習BPMN中的零件「網關」吧。

業務流程中,常常需要做出各種決策,這些決策在BPMN中以網關(Gateway)來表示,有時也被稱為邏輯門。


網關(Gateway)

網關(Gateway)用來控制流程的分叉(Fork)與合併(Join)。分叉,是指將流程中的順序流(Sequence Flow)分散成兩個或多個不同的分支;合併則相反,將兩個或多個分支合而為一。

只有在需要對流程進行特定控制時,才會引入這些網關。就像其名稱所示,網關彷彿是一道關口,用來控制流程中是否允許進行某些特定的步驟。經過網關後,根據不同的條件,流程可能會有不同的走向,這有助於根據情況進行靈活的處理。

網關在業務流程中具有以下特點:

  • 用途多樣:網關用於決策,根據不同情況引導流程不同的方向。
  • 分叉與合併:網關可實現流程的分叉,將流程分成多個分支;同時也可將不同分支合併成一個。
  • 控制流程:只在需要控制流程走向時引入網關,確保流程按照預期進行。
  • 靈活性:經過網關後,流程能夠根據實際情況做出適應性調整,提高了流程的靈活性和適應性。

BPMN 將網關分為四種:

1.包容性網關(Inclusive Gateway)

2.獨占網關(Exclusive Gateway)

3.並行網關(Parallel Gateway)

4.基於事件的網關(Event-based Gateway)

5.複雜關口(Complex Gateway)

https://ithelp.ithome.com.tw/upload/images/20230919/20163254kofTINE70d.png (圖片來源:Business Process Model and Notation(BPMN))P287


包含網關(Inclusive Gateway)

包含網關(Inclusive Gateway)是一種結合了獨占網關(Exclusive Gateway)和併行網關特性的元素。它類似於獨占網關,可設定多個序列流的條件,系統會根據這些條件進行評估。然而,不同之處在於包含網關可以同時處理多個序列流,類似於併行網關。

包含網關的功能主要建立在傳入和傳出序列流上,其運作方式如下:

  1. 分支(Fork)。對所有傳出序列流進行條件評估,並同時創建每個評估結果為真的序列流的並行執行路徑,以實現同步並行處理。
  2. 合併(Join)。所有並行執行路徑在包含網關處等待,直到所有傳入序列流中有流程令牌的執行路徑都到達為止。這是與併行網關的一個重要區別。

值得注意的是,如果同一個包含網關有多個傳入和傳出序列流,則包含網關同時具有分支(Fork)和合併(Join)的功能。在這種情況下,網關首先進行合併,將所有具有流程令牌的傳入序列流合併,然後將評估結果為真的傳出序列流分為多個並行執行路徑。

https://ithelp.ithome.com.tw/upload/images/20230919/20163254QBfmOXP3Qw.png

(圖片來源:Business Process Model and Notation(BPMN))P292


獨占網關(Exclusive Gateway)

獨占網關(Exclusive Gateway)用於在流程中建立決策模型。當執行達至此閘道時,將依序評估所有外流序列,並選擇第一個條件評估結果為真(True)的序列,以繼續進行流程。

若無法選擇序列(沒有任何條件評估結果為真),且未定義預設序列流,則將導致執行異常。在沒有其他條件符合的情況下,可在閘道本身設置一條預設流程,就類似程式語言中的「else」一樣。

https://ithelp.ithome.com.tw/upload/images/20230919/20163254aYqxEwnlMM.png

(圖片來源:Business Process Model and Notation(BPMN))P290


併行網關(Parallel Gateways)

併行網關(Parallel Gateways)能夠讓我們有效地呈現並行執行的情境。併行網關允許同時分支出多個執行路徑,或者將多個不同的執行路徑連接在一起。

併行網關(Parallel Gateways)的運作方式建基於序列流的進出。以下是其主要功能:

  1. 分叉(Fork):所有的序列流都能夠並行執行,因此每條序列流都會建立一個獨立的並行執行路徑。
  2. 合流(Join):所有進入平行網關的並行執行路徑都會在網關處等待,直到所有相關的序列流都抵達。隨後,流程將繼續執行。

若同一併行網關有多個進入和離開的序列流,則此併行網關同時具備分叉和合流的功能。在這種情況下,網關會首先連接所有進入的序列流,然後再將其分割為多個並行的執行路徑。

併行網關與其他類型的網關有一個重要的區別:「不會評估條件」,如果在連接至併行網關的序列流上設定了條件,這些條件將會被忽略。

需要注意的是,併行網關並不需要是「平衡」的,也就是說,進入和離開併行網關的序列流的數量並不需要完全匹配。併行網關會等待所有進入的序列流,並且為每條離開的序列流建立一個並行的執行路徑,而不會受到其他流程模型結構的影響。

https://ithelp.ithome.com.tw/upload/images/20230919/20163254ou413IKm3N.png

(圖片來源:Business Process Model and Notation(BPMN))P294


事件網關(Event-Based Gateway)

事件網關(Event-Based Gateway)專門用於捕捉中間事件,在選擇分支時不同於其他網關,它是通過捕獲的事件來觸發的,只有在等待的事件發生後才會觸發決策,且關心最先發生的事件「先發生,就先做」,具有獨佔網關(Exclusive Gateway)的排他性。

💡 獨佔網關(Exclusive Gateway)以資料處理為基礎,將流程導向不同的分支。

事件網關(Event-Based Gateway),以中間事件為核心。

事件網關允許根據事件進行決策。每個從網關流出的序列流都必須連接到一個中間捕獲事件。當流程執行到達事件網關時,它的行為類似於等待狀態:流程暫停執行。此外,為每個傳出的序列流創建了一個事件訂閱。

事件網關中運行的序列流與常規序列流不同。這些序列流實際上從未真正「執行」過。相反,它們僅指示流程引擎在到達事件網關時需要訂閱哪些事件。這種特殊的流程分支方式在業務流程管理中具有重要作用,能夠更好地處理基於事件的決策需求。 https://ithelp.ithome.com.tw/upload/images/20230919/20163254gWNhC9fo71.png (圖片來源:Business Process Model and Notation(BPMN))P298


複雜網關(Complex Gateway)

複雜關口(Complex Gateway),則用於模擬複雜的同步行為。通過表達式 activationCondition 來描述確切的行為,例如,這個表達式可以指定需要在五個傳入序列流中的三個上面有令牌才能啟動閘道。閘道產生的令牌取決於傳出序列流上的條件,就像包容性閘道的拆分行為一樣。如果後來有令牌到達剩下的兩個序列流,這些令牌會導致閘道重置,並且新的令牌可以在傳出序列流上生成。為了確定它是否需要等待額外的令牌才能重置,閘道使用了包容性閘道的同步語義。複雜關口的概念類似於包容關口,當在流程中需要額外說明、文件或者判斷較難呈現時,可以使用複雜關口,以輔助流程的理解和執行。

https://ithelp.ithome.com.tw/upload/images/20230919/20163254pU6HRzo3a6.png

(圖片來源:Business Process Model and Notation(BPMN))P295


重點整理

  1. 包含網關(Inclusive Gateway)
    • 不需要「平衡」處理方式,允許傳入和傳出的序列流數量不必相符。
    • 等待所有傳入的序列流都準備就緒,並創建並行的執行路徑。
    • 並行路徑獨立運行,不受其他結構影響。
  2. 獨佔網關(Exclusive Gateway)
    • 用於做出獨立的決策,只會選擇一條輸出路徑。
    • 每個傳入路徑都有與之相關的條件,符合特定條件的路徑將被選中。
    • 僅有符合條件的第一個路徑會被選中並執行。
  3. 併行網關(Parallel Gateways)
    • 用於同時執行多個任務或路徑。
    • 所有傳入路徑都會立即觸發,在各自獨立的並行執行路徑中運行。
    • 當所有並行路徑都完成後,流程將繼續執行。
  4. 事件網關(Event-Based Gateway)
    • 用於處理業務流程中的中間事件,並根據事件決定下一步的路徑。
    • 不透過條件判斷,而是通過捕獲到的事件來做出決策。
    • 常用於等待特定事件的發生,然後觸發相應的決策流程。
  5. 複雜網關 (Complex Gateway)
    • 需要特定數量的令牌才能啟動閘道。
    • 產生的令牌取決於傳出序列流上的條件,類似於包容性閘道的拆分行為。
    • 使用包容性閘道的同步語義來確定是否需要等待額外的令牌才能重置。

我們現在已經知道在BPMN中的事件,恭喜您對BPMN有「網關」的運用有所了解,明天我們再利用一些認識BPMN中的「子流程」,我們一起加油吧~~

💡 如果有任何問題,歡迎在下方留言!! 筆者頭一回寫技術文,如果內容有誤,或者內容的呈現上有所缺陷,如果您願意,歡迎在下方留言給我呦~~

anything.best

這是我的部落格,歡迎點擊閱覽喔~~會不定期更新文章

Follow me

I work on everything coding and tweet developer memes