1. 程式人生 > >馳騁工作流引擎JFlow與activiti的對比 -總結

馳騁工作流引擎JFlow與activiti的對比 -總結

clip_image002

共同點:

1. 嵌入式的工作流引擎,降低叢集複雜性。

2. 嚴格而靈活的流程版本控制

3. 支援多種資料庫

4. 支援多種流程設計模式

5. 成熟度高的開源工作流,具有可靠的穩定性和效能。

區別:

1. 流程定義方式:

ACTIVITI :採用xml的方式,通過拼字串的方式完成,所以流程定義時的結果不直觀、不方便。

JFLOW:擁有自己的流程設計器和表單設計器,畫布性質的,所見即所得。包括流程運轉條件、方向條件等。

2. 面向使用物件:

ACTIVITI :由於設計方式,只能面向流程開發人員。

JFLOW:既面向流程開發人員又面向業務人員,即使不會程式設計,也可以進行流程設計。

3. 節點型別:

ACTIVITI :開始節點、結束節點、自動節點、任務節點、fork分支、join聯合等多種節點。通過多種節點的配合以及事件等使用,組成流程。

並且,開始節點必須有一個向外的流向。

JFLOW:普通節點、分流節點、子執行緒節點、合流節點。

開始節點屬於普通節點,可以做為一個單節點的流程,沒有流向。

結束節點由CC自動判斷定義。

CC中的迴圈是通過方向條件判斷,同步、聚合等是由合流節點。

4. 對複雜流程的支援:

ACTIVITI :不適合非常複雜的流程,他只是提供了一套豐富的工作流模型,可以讓你去做任何事情,即便違反工作流規範。

JFLOW:通過節點執行規則、方向條件、豐富的事件、執行模式和表單解決方案,完全滿足複雜的流程運轉,對任何情況,都是可控的。

5. 對歷史資料的挖掘:

ACTIVITI :對歷史資料的支援不是很好,比如,子任務不能寫入歷史之類。當然,通過修改程式碼與BUG,也是可以實現的。

JFLOW:具有軌跡功能,即對某一個流程執行產生資料的儲存,流程執行中,可以檢視相關節點的處理資訊與流程資料,流程結束後也可以。

表單整合

因為activiti 僅僅是一個流程引擎,所以無可比性,這裡不做對比。僅僅說明表單引擎與流程引擎在業務系統中的應用。

表單引擎與流程引擎的關係

我們把BPM系統比喻一部汽車,那麼車的控制系統,就象流程引擎,比如:剎車、油門、離合、方向燈,就是車的控制系統。車的車廂就是表單,而貨物就是資料。

clip_image004

我們研究汽車不能把車的控制系統與車的拉貨分開討論的。

工作流程在執行的過程中,他的主要目的就是協調各個部門,人員,崗位處理業務 流水線化。

流程在運動過程中,需要操縱表單資料的分合,或者需要讀取表單資料進行方向轉向、流程業務處理的控制工作。

最簡單的請假流程-根據表單的請假天數來判斷流程的分支

clip_image006

可以方便的視覺化的設計方向條件

clip_image008

流程引擎操縱表單引擎的一個案例

比如:在JFlow的分合流裡, 如下流程:

clip_image010

專案經理下達任務填寫節點:

clip_image012

每個銷售人員填寫資料節點表單:

clip_image014

資料彙總節點(資料彙總):

clip_image016

JFlow認為一個流程引擎與表單引擎就是

對多種表單的支援

簡潔明快的CCForm

clip_image018

clip_image020

clip_image022

clip_image024

Word文件支援

clip_image026

Excel表單的支援

clip_image028

表單樹的支援

clip_image030

符合中國特色個性化JFlow功能

如果使用符合中國特色的流程引擎,有些牽強,因為一些規則,在國外也需要用到,只是國外的開發者,不想把他們抽象出來。

在國內的開發者,與實施人員要求個性化定製要求比較高,一起需要基於設定開發,所以這對流程引擎的設計者對業務規則的抽象要求提出更高的水平。

並不能說每個屬性設定都屬於中國特色,以下以幾個功能來說明該問題,為什麼activti沒有涉及到這些功能,因為他們對流程引擎的發展定位不同。

流程屬性

流程屬性是控制整個流程的規則的設定。

比如單據編號生成規則,

每個流程屬性,都是從實際也規則走

JFlow提供了豐富的流程屬性定義規則,讓我們開發

clip_image032

多種接受人規則

clip_image034