工做流引擎JFlow與activiti 對比分析(一)5種基本控制流模式的對比

爲了更好的說明activiti 與jflow的兩款工做流引擎的特色與區別,咱們按照以下幾個方面作一次全面的、客觀的對比。線程

      首先activiti是國外的一款開源的工做流程引擎,在國際上影響比較深遠與普遍,解決了BPM領域的不少問題,值得咱們讚揚。他的boss是jbpm的前身。設計

      JFlow是濟南馳騁公司開放的一款工做流程引擎,JFlow的前身是CCFlow,ccflow是國內開源的一款老牌的工做流程引擎,承擔過不少大型項目,適應於複雜的國內應用環境。3d

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

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

工做流程引擎 - 對比

以國外流行的工做流activiti的模式與當今中國開源的JFlow(ccflow和jflow的總稱)流程引擎對照。以便讓各位可以瞭解到中國國情的工做流引擎與國際流行的設計規則的差異、不一樣、與優缺點。開發

國外工做流比較通用的就是知足21種流程模式的支持。同步

 

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

  1. 順序流(Sequence)

ACTIVITI :工作流

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

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

 

 

JFLOW:

順序流,也叫作沒有分支的線性流程,流程通常在最後一個節點自動結束,並標識流程完成。也能夠經過設置節點條件,自動結束流程。

 

 

JFlow的特色是:容許用戶本身定義流程完成條件,在任何一個節點運行過程當中,JFlow都要去檢查條件設置,若是知足這個條件流程就自動結束。

 

  1. 並行分叉(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:

 

相關文章
相關標籤/搜索