Activit各個網關使用簡單介紹


 

一、排他網關 Exclusive Gateway

   排他網關又叫互斥網關,條件計算為true的順序流會被選擇繼續流程,有且只有一條出口,如果出現多個條件為true,則會默認選擇第一條true來執行,如果沒有條件輸出true,流程走到這一步的時候則會報錯

二、並行網關 Parallel Gateway

它可以將執行分支(fork)為多條路徑,也可以合並(join)執行的多條入口路徑。簡單點說就是,並行網關它可以有多條入口和出口,並且在合並入口處會等待其他分支執行完,然后再執行后面的流程,另外,需要注意的是,並行網關沒有條件的概念,

即便設置了條件,它會自動忽略

三、包容網關 Inclusive Gateway

用內部帶有’圓圈’圖標的網關(菱形)表示。

這個網關比較特殊,它集合了前面兩個網關的特點,一句話來說就是,它既可以像排他網關那樣設置條件,也能像並行網關這樣設置多條分支並行執行,在上圖中,當流程啟動后,如果流程變量paymentReceived == false且shipOrder == true,將會創建兩個任務。如果只有一個流程變量等於true,則只會創建一個任務。如果沒有條件計算為true,會拋出異常,並可通過指定出口順序流

舉個例子:啟動流程的時候傳入下面的參數,執行流程。

HashMap<String, Object> variableMap = new HashMap<String, Object>();

variableMap.put("receivedPayment", true);

variableMap.put("shipOrder", true);

在上面的例子中,只有ship order 一個任務會被創建,當這個任務完成后,第二個包容網關會合並這兩個執行,並且由於只有一條出口順序流,不會再創建並行執行路徑,只會激活Archive Order任務繼續后面的流程。

四、基於事件的網關 Event-based Gateway

   這個網關相比其他三個網關,用的相對沒那么多,主要還是根據業務需求吧

   該網關在執行出口處,要連接一個捕獲中間事件。當流程執行到該網關時,流程類似處於等待的狀態,此時執行被暫停,並創建一個事件訂閱

         需要訂閱什么事件。基於下列約束:

  • 一個基於事件的網關,必須有兩條或更多的出口順序流。

  • 基於事件的網關,只能連接至intermediateCatchEvent(捕獲中間事件)類型的元素(Activiti不支持基於事件的網關后,連接接收任務,Receive Task)。

  • 連接至基於事件的網關的intermediateCatchEvent,必須只有一個入口順序流。 

      當然,新手看到了這里可能還是不知道什么是事件網關,它到底有什么用處呢?下面,我用一個例子來解釋一下:

上圖使用了事件網關、定時器事件,信號捕捉事件,當啟動流程后,流程實例訂閱alert信號事件,並創建一個 5分鍾后觸發的定時器。這使得流程引擎等待5分鍾,並等待信號事件。如果信號在5分鍾內觸發,則定時器會被取消,執行沿着信號繼續。如果信號未被觸 發,執行會在定時器到時后繼續,並取消信號訂閱。

   一句話概括事件網關,如果你提交了請假申請,此時流程處於等待狀態,當某個事件觸發時,流程走到用戶任務,辦理了你的請假申請,那么等待會被取消,如果超過1天,還是沒有觸發某個事件,那么你的請假單直接跳過你的上級,直接往后面的流程走

 


免責聲明!

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



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