馳騁工作流引擎JFlow與activiti的對比 -總結
共同點:
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系統比喻一部汽車,那麼車的控制系統,就象流程引擎,比如:剎車、油門、離合、方向燈,就是車的控制系統。車的車廂就是表單,而貨物就是資料。
我們研究汽車不能把車的控制系統與車的拉貨分開討論的。
工作流程在執行的過程中,他的主要目的就是協調各個部門,人員,崗位處理業務 流水線化。
流程在運動過程中,需要操縱表單資料的分合,或者需要讀取表單資料進行方向轉向、流程業務處理的控制工作。
最簡單的請假流程-根據表單的請假天數來判斷流程的分支
可以方便的視覺化的設計方向條件
流程引擎操縱表單引擎的一個案例
比如:在JFlow的分合流裡, 如下流程:
專案經理下達任務填寫節點:
每個銷售人員填寫資料節點表單:
資料彙總節點(資料彙總):
JFlow認為一個流程引擎與表單引擎就是
對多種表單的支援
簡潔明快的CCForm
Word文件支援
Excel表單的支援
表單樹的支援
符合中國特色個性化JFlow功能
如果使用符合中國特色的流程引擎,有些牽強,因為一些規則,在國外也需要用到,只是國外的開發者,不想把他們抽象出來。
在國內的開發者,與實施人員要求個性化定製要求比較高,一起需要基於設定開發,所以這對流程引擎的設計者對業務規則的抽象要求提出更高的水平。
並不能說每個屬性設定都屬於中國特色,以下以幾個功能來說明該問題,為什麼activti沒有涉及到這些功能,因為他們對流程引擎的發展定位不同。
流程屬性
流程屬性是控制整個流程的規則的設定。
比如單據編號生成規則,
每個流程屬性,都是從實際也規則走
JFlow提供了豐富的流程屬性定義規則,讓我們開發