馳騁工作流引擎JFlow與activiti的對比之4種包含多例項的模式
4種包含多例項的模式
- 無同步的多例項(MIwithout)
在流程中,一個活動可以啟用多個例項,每個例項相互獨立,並不需要在後面進行同步。
例子:比如使用者購買了N本書,於是後續的支付賬單、更新客戶可以以本書為單位各自執行。
ACTIVITI 中的支援情況:
支援這種模式,但是不允許在後面進行結束動作。
JFLOW中的支援情況:
分合流與父子流程支援這種模式,分合流上面已經講過,下面說下父子流程。
第一種情況:發起子流程後,等所有的子流程執行完成後,父流程繼續下一步驟或者結束。
第二種情況:發起子流程後,無論子流程是否執行完成,都執行到下一步或者結束。
父流程:
- 設計時確定的多例項(MIwith a Priori Design Time Knoledge)
在流程中,被啟用的多個例項需要在某個聚合點聚合,而例項的個數在設計的時候就已經知曉率。
ACTIVITI 中的支援情況:
對於設計時已經知道例項數量的,最簡單的就是使用多個Task節點來實現多個例項。
JFLOW中的支援情況:
合流節點處理各個子執行緒的任務比率。
完成率 = 子執行緒上已經完成的資料/所有子執行緒數量*100%
該節點對於合流節點與分合流節點有效,當子執行緒的完成率達到該值的時候,該節點的待辦才能顯示出來,否則該節點的人員不能處理待辦。如果合流節點的處理人能夠看到待辦,他就可以對該流程進行操作,比如:傳送、刪除、退回、刪除子執行緒等等。
- 執行時確定的多例項(MI with a Priori RunTime Knoledge)
在流程中,被啟用的多個例項需要在某個聚合點聚合,而例項的個數在設計的時候並不知道,只有在執行時根據條件來決定需要啟用多少個例項。
ACTIVITI 中的支援情況:
對於執行時可以知曉例項數量的,可以通過設定JOIN節點的multipliclty來實現。
JFLOW中的支援情況:
同表單分合流配合節點訪問規則可以實現這個功能。
- 執行時無法確定的多個例項(MI without a Priori RunTime Knoledge)
在流程中,被啟用的多個例項需要在某個聚合點聚合,而例項的個數在設計的時候並不知道,該模式與上一個模式的區別就是,在產生的例項執行時或者已經執行完時,仍然有新的例項產生。
例子:比如要採購100臺電腦,涉及到多個供應商,但是每個供應商供應多少臺電腦是不知道的,因此供應商的數量也是不確定的,但是每次供應商送貨來後,就會將所擁有的電腦數量和所需的100臺進行比較,來決定是否要下一個供應商進行供應。
ACTIVITI 中的支援:與執行時確定的多個例項的實現方式一樣。
JFLOW中的支援:
這種方式屬於JFlow的父子流程來實現,開始節點啟動一個任務,需要採購100臺電腦,需要發起n此的選擇供應商採購的子流程,每個子流程完成後,就訪問父流程節點資訊,進行相關的業務處理(就是是否啟動下一個子流程,如果滿足100,就不啟動子流程了,直接完成父流程的任務,結束主流程.)。
轉載於:https://my.oschina.net/ccflow/blog/2995242