1. 程式人生 > >馳騁工作流引擎JFlow與activiti的對比之4種高階分支同步模式

馳騁工作流引擎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個:子執行緒刪除規則。該規則決定那些子執行緒可以被刪除以及他們的刪除方式。