activiti系列之網關

流程中的網關主要用於控制流程的流向

1、單向網關

依據條件只能選擇一條路,沒有符合條件的順序流則會拋出異常。

2、並行網關(ParallelGateWay

可以同時執行多個流程, 直到總流程的結束. 可以對流程進行分支和聚合, 此時流程實例(processInstance)id和執行對象(execution)id是不一樣的

流程(並行網關)部署啓動後相關表數據變化(2個分支)

2.1、正在執行的執行對象表 act_ru_execution (3條數據, 並行分支數2+流程實例1)

2.2、流程實例的歷史表 act_hi_procinst (1條數據)、

2.3、正在執行的任務表 act_ru_task (2條數據, 並行分支數)

2.4、歷史任務表 act_hi_taskinst (2)

2.5、歷史活動節點表 act_hi_actinst (4, +並行網關)

備註:a、一個流程可以有多個執行對象,但是隻有一個流程實例

b、並行網關的功能是基於進入和外出的順序流的:

分支(fork): 並行後的所有外出順序流,爲每個順序流都創建一個併發分支。

匯聚(join): 所有到達並行網關,在此等待的進入分支,直到所有進入順序流的分支都到達以後, 流程就會通過匯聚網關。

c、並行網關不會解析條件。 即使順序流中定義了條件,也會被忽略

d、並行網關的進入和外出節點數目不一定相等

e、如果同一個並行網關有多個進入和多個外出順序流, 它就同時具有分支和匯聚功能。 這時,網關會先匯聚所有進入的順序流,然後再切分成多個並行分支

3、包容網關

包容網關(Inclusive Gateway)就是並行網關(Parallel Gateway)和排他網關(Exclusive Gateway)的組合。可以在出口順序流上定義條件,包容網關會計算它們。然而主要的區別是,包容網關與並行網關一樣,可以選擇多於一條(出口)順序流

3.1、分支(fork):所有出口順序流都會被計算,對於計算爲true的分支都會被執行

3.2、聚合(join):所有到達包容網關的並行執行,都會在網關處等待,直到每一條具有流程標誌的入口順序流,都有一個執行到達。這是與並行網關的重要區別。換句話說,包容網關只會等待將會被執行的入口順序流。在合併後,流程穿過合併並行網關繼續

4、事件網關

該網關在執行出口處,要連接一個捕獲中間事件。當流程執行到該網關時,流程類似處於等待的狀態,此時執行被暫停,Activiti會爲全部的中間Catching事件創建相應的數據,哪個事件先被觸發,則流程會往該事件所處方向執行。

基於事件網關的外出順序流和普通順序流不同,這些順序流不一定真的"執行", 相反它們讓流程引擎去決定執行到基於事件網關的流程需要訂閱哪些事件

備註:a、事件網關的進入和外出節點數目不一定相等

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章