在流程中,通常需要做出選擇,也就是進行業務決策。在BPMN中,這個決策用網關(Gateway)來表示。網關用來控制順序流的分叉(Fork)和連接(Join)。
只有在需要對流程進行控制的時候才會引入網關。
排他網關
當執行到此網關時,將一次評估所有傳出序列流,並選擇第一個調解評估結果為真(True)的序列來繼續這個流程。
如果不能選擇序列流(沒有任何條件評估結果為真),也沒有定義默認序列流時,將導致運行異常。
序列流,是流程中兩個元素之間的連接器。在流程執行過程中訪問一個元素之后,將繼續執行所有傳出序列流。這意味着BPMN2.0的默認行為是並行的:兩個傳出序列流將創建兩個獨立的並行執行路徑。
條件序列流,當結果為真時,將被選為傳出序列流。當以這張方式選擇多個序列流時,將生成多個執行,並行方式繼續進行。
默認序列流,所有BPMN2.0任務和網關都可以有一個默認的序列流。如果無法選擇其他序列流,就僅將此默認序列流作為該活動的傳出序列流。默認序列流上的條件會被忽略掉。
並行網關
在流程中引入並發性最直接的網關是並行網關,如果同一並行網關有多個傳入和傳出序列流,網關將首先連續所有傳入的序列流,然后再分割成多個並發的執行路徑。並行網關與其他網關類型的一個重要區別是,並行網關不會判斷條件是否為真。
包含網關
包含網關可以看作是排他網關和並行網關的結合。
事件網關
事件網關是通過中間事件驅動,它在等待的事件發生后才會觸發決策。基於事件的網關允許基於事件作出決策。基於事件的網關中運行的序列流與普通序列流不同。這些序列流實際上從未真正執行過。相反,它們只是告訴流程引擎要到達基於事件的網關需要訂閱哪些事件。