Activiti中的互斥網關、並行網關、兼容網關、事件網關


前提

流程中的網關用於控制順序流的分支和匯合,如果不需要進行順序流的控制,則可以不使用網關。

一:互斥網關(單行網關)

1、互斥網關就好像一個人走到了一個岔路口,只能選擇一條路前進,至於選擇哪條路由順序流的條件決定;也就是從互斥網關輸出的順序流1和順序流2都被設置的有條件;

(1)、如果只有一個順序流的條件滿足要求,則就走這個順序流;

(2)、如果有多個順序流的條件滿足要求,則哪個順序流的定義在流程文件中靠前,走哪個順序流;

(3)、如果沒有順序流的條件滿足要求,則拋出異常。

二:並行網關

1、並行網關對執行流會有兩種行為:分岔和合並;

(1)、分岔(上圖中的第一個並行網關):可以讓一個執行流變為多個同時進行的並發執行流;從並行網關輸出的順序流1和順序流2中不用設置條件,就算設置條件,並行網關也會忽略,因為他們不使用條件進行判斷。

(2)、合並(上圖中的第二個並行網關):可以讓多個執行流合並為一個執行流;

2、並行網關並不要求成對出現,即有了分岔並不一定有合並,有了合並也不一定有分岔;

3、一個並行網關允許同時出現分岔和合並兩種行為,即多個執行流到達該並行網關時被合並,然后隨機又被分岔為多個執行流。

三:兼容網關

1、兼容網關就好像是互斥網關和並行網關的結合體,即可以當互斥網關使用,也可以當並行網關使用;

2、當互斥網關使用時,需要為從兼容網關輸出的順序流1和順序流2設置條件:

(1)、如果只有一個順序流的條件滿足要求,則就走這個順序流;

(2)、如果有多個順序流的條件滿足要求,則會並行走滿足條件的所有順序流;(這點和互斥網關有區別,互斥網關是哪個順序流的定義在流程文件中靠前,走哪個順序流);

(3)、如果沒有順序流的條件滿足要求,則拋出異常。

3、當並行網關使用時,不能為從兼容網關輸出的順序流1和順序流2設置條件;這樣以來它就和並行網關的特性一模一樣,既有分岔行為也有合並行為,且處理方式也和並行網關一致。

四:事件網關

1、事件網關是根據它所連接的中間Catching事件來決定流程的走向;

2、上圖中事件網關直接連接了順序流1和順序流2,順序流1直接連接了信號事件,順序流2直接連接了定時器事件;

3、有些同學會有以下疑惑:當流程走到事件網關時,並不知道是往順序流1走?還是往順序流2走?因為只有走了順序流1或者順序流2后才能到達各自連接的事件,然后才能根據事件進行判斷;這樣以來就出現了走向選擇的問題。

4、實際上當流程走到事件網關時,並不會立馬選擇走順序流1還是走順序流2,而是Activiti會為全部的中間Catching事件創建相應的數據,當某個中間事件先被觸發了,流程就會選擇觸發事件所在的順序流走下去。


免責聲明!

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



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