1. 程式人生 > >馳騁工作流引擎JFlow與activiti的對比之5種基本控制流模式的對比

馳騁工作流引擎JFlow與activiti的對比之5種基本控制流模式的對比

前言

為了更好的說明activiti 與jflow的兩款工作流引擎的特點與區別,我們按照如下幾個方面做一次全面的、客觀的對比。

      首先activiti是國外的一款開源的工作流程引擎,在國際上影響比較深遠與廣泛,解決了BPM領域的很多問題,值得我們讚賞。他的boss是jbpm的前身。

      JFlow是濟南馳騁公司開放的一款工作流程引擎,JFlow的前身是CCFlow,ccflow是國內開源的一款老牌的工作流程引擎,承擔過很多大型專案,適應於複雜的國內應用環境。

      Activity 相對簡單,僅有流程引擎,沒有表單引擎。在BPM的研究領域, 很多的學者,專家都是把流程引擎與表單引擎分開的,對於這個觀點我們並不很贊同。實現功能需要大量的程式碼開發。

JFlow是JFlow流程引擎+CCForm的表單引擎的有機結合,內容相對複雜,配置程度較高,實施週期短,上手快。

工作流程引擎 - 對比

以國外流行的工作流activiti的模式與當今中國開源的JFlow(ccflow和jflow的總稱)流程引擎對照。以便讓各位能夠了解到中國國情的工作流引擎與國際流行的設計規則的差別、不同、與優缺點。

 

國外工作流比較通用的就是滿足21種流程模式的支援。

5種基本控制流模式的對比

  1. 順序流(Sequence)

ACTIVITI :

就是按照流程設計的步驟,一步步的向下執行,這樣的模式下每個節點有先後順序,就是每個節點只有一個節點是活動的。

例子:比如申請後進行審批,一步一步的進行任務。

JFLOW:

順序流,也叫做沒有分支的線性流程,流程一般在最後一個節點自動結束,並標識流程完成。也可以通過設定節點條件,自動結束流程。

JFlow的特點是:允許使用者自己定義流程完成條件,在任何一個節點執行過程中,JFlow都要去檢查條件設定,如果滿足這個條件流程就自動結束。

 

2.並行分叉(ParallelSplit)

ACTIVITI :

流程在某個活動(節點、步驟)之後產生多個分支,並且並行流轉。

例子:比如在淘寶買了個商品需要開發票,那麼賣家就需要一邊準備商品發貨,一邊準備發票郵寄。

JFLOW:

異表單分合流的分流動作,一個動作結束後(分流節點),並行啟動多個分支,每個分支都要向下運動。

在cc中,可以根據方向條件設定來決定是否啟用某一個分支。

  1. 同步(Synchronization)

ACTIVITI :

在流程中的某個點,多個並行的子流程或者活動,合併成一個流程。流程必須等待所有的分支都執行完成後,才能啟用後續活動。

例子:比如商家在收到“發票”和“商品”後,才能確認收貨。

JFLOW:

異表單分合流中的合流動作,可以指定一定的完成率,才能到達合流節點。對於未完成的子執行緒,可以進行刪除操作。

  1. 獨佔式選擇(Exclusive Choice)

ACTIVITI :

一個活動完成後,只能在後面的多個分支中啟用一個。

例子:比如使用者下單後,可以有N種付款方式,但是隻能選擇其中一種。

JFLOW:

具有分支的線性流程。可以由方向條件控制,也可以由使用者手動控制。

 

  1. 簡單聚合(Simple Merge)

ACTIVITI :

在流程中有2個以上的分支中某一個點處被合併成一個分支,只要分支中的一條完成,即可繼續進行,而其他分支自動結束。

例子:比如發貨在建設銀行和中國銀行等支付方式中的一個完成後才被啟用。

JFLOW:

即可以為帶有分支的線性流程,又可以是異表單的合流動作。線上性流程中,在某一處選擇需要執行的節點並完成執行後,後面的節點一步一步的執行,沒有被選擇的節點不執行。

在異表單中,可以通過條件設定需要執行的節點,其他節點不執行,在合流點完成彙總並激活。或者,通過設定完成率來啟用合流點的操作。

區分到底是否是分合流,通過檢視節點型別。

  1. 基本控制流程模式,在ACTIVITI 中與JFLOW中的綜合實現。

ACTIVITI :

JFLOW: