馳騁工作流引擎JFlow與activiti的對比之4種高級分支同步模式


  1. 多重選擇(Multiple Choice)

在流程中,當一個活動完成后,有多個分支進行選擇,可以選擇執行其中的一個或者N個分支。

例子:比如去世博園玩,在門口檢票后,可以選擇A-E個片區中的N個進行觀光。

 

 

ACTIVITI 中的支持情況:

1.JPDL方式不支持先定義好這里的幾種,然后根據條件去篩選其中的幾種進行,但是ACTIVITI.4之后支持一種叫foreach的節點,允許我們在運行時指定幾種特定的任務,比如上面例子中的片區,我們可以在選定后再去循環。

2.BPMN方式支持根據條件執行多個子分支。

 

JFLOW中的支持情況:

1.通過定義流程為異表單分合流來實現。

a通過條件控制發起子線程數量。設置方向條件的時候,可以根據需要,選擇不通的條件設置,比如:崗位條件、部門條件、表單條件等。

b通過節點樹形中設置手工選擇方向控制,可以控制發起子線程的發起數量。

2.通過父子流程也可以實現。

 

  1. 同步聚合(Synchronizing Merge)

在流程中的某個聚合點,流程會等待所有的分支到來,才能激活后續的活動。如果分支只有一個,那么就變成簡單聚合模式;如果存在2個以上分支,那就是同步模式。

這種模式的關鍵在於能夠動態的根據分支的多少進行聚合。

 

 

ACTIVITI 中的支持情況:

可以通過設置ACTIVITI 的join節點屬性multiplicity的值為某個變量,並在程序中動態的修改變量的值來制定分支的數量。

JFLOW中的支持情況:

分合流中合流操作。無論分支有多少,都可以進行匯總,並且可以對匯總的子線程進行刪除操作、完成率控制等。

 

JFLOW的多重選擇與同步聚合實例圖:

 

結束為聚合點,中間的為分支。

 

  1. 多重聚合(Multiple Merge)

在流程中的多個分支,都可以激活后續的活動,也就是會產生多個實例。

例子:游客觀光完N個片區之后,每個片區各自的系統可以對游客在自己片區的信息進行存儲。

 

ACTIVITI 與JFLOW的支持請參考 同步聚合。

 

  1. 鑒別器(Discriminator)

在流程的某個聚合點,N個分支的第一個分支到達后,就立刻激活后續活動;與此同時,流程仍然要等待其余的分支完成並忽略完成。

注意:在其余分支未全部完成前,第一個到達的分支所激活的后續節點是無法執行的。

例子:個人申請提交后,並行提交給第一導師審批、第二導師審批、第三導師審批,他們中只要有一個完成了,那么就可以提交給學院審批。

N-out-of-M鑒別器模式:

跟鑒別器模式一樣的,只是這種模式是N個到達后,激活后續節點,而剩下的M-N個節點未完成前,新激活的后續節點一樣無法被執行。

ACTIVITI 中的支持情況:

沒有直接支持這種模式,但是通過自定義節點,應該是可以處理這種模式的。

JFLOW中的支持情況:

有兩個屬性的控制,可以實現功能,就是上面所說的子線程完成路和子線程刪除規則。

第1個:子線程完成率。 該規則可以決定是否可見

第2個:子線程刪除規則。該規則決定那些子線程可以被刪除以及他們的刪除方式。

 


免責聲明!

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



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