Java三大主流開源工作流引擎技術分析

2021-09-08 11:49:27 字數 1514 閱讀 2232

三大主流工作流引擎:shark,osworkflow,jbpm!

opensymphony。我是非常喜歡這個

組織的,它做出了很多的好東西。在開發工作流管理系統時,我就推薦用它的另外乙個東西:webwork2。筆者主持的開源工作流引擎agileflow就是基於ww2+spring+hibernate架構實現的。寫到這裡我想是不是它可以和struts2進行完美整合?!

完成本段時說句題外話:現在基本上所有的j2ee應用程式伺服器都有自己的工作流引擎,如上面提到的enhydra,jboss和沒有提到的websphere和weblogic等,可見,學習工作流引擎技術的確是非常重要的。

shark的流程定義語言是xpdl,我們知道,xpdl的兩個最重要的概念是process和activity。xpdl中的activity是基於uml1.x中的活**的概念。活**天生的適於工作流程建模,它相對於狀態圖的乙個最大的優點是容易做併發執行緒的分叉控制,這些併發執行緒可以同時執行也可以順序執行;它還有乙個優點是有泳道的概念,可以控制工作流引擎中的任務的產生。shark的如來神掌是活**。 

osworkflow的如來神掌又是什麼呢?我們知道,它有個重要概念是state……呵呵,我們知道了,它的如來神掌是fsm。不知道fsm是什麼東西??那你讀大學時肯定不是好學生;當然了,不知道也不打緊,你把他類似理解為狀態圖就可以了。osworkflow中的state是由step和status聯合表達的,乙個state就是乙個step中的某個status;而state的轉換由action來驅動,類似狀態圖中的event,因為乙個event對應乙個action嘛。 

jbpm的如來神掌就沒有上面的簡單了,它結合應用了狀態圖+活**+petrinet的知識,而且,這裡的活**還是uml2.0版的。uml2.0的活**中,節點不叫活動(activity)而叫動作(action),活動成了乙個高層次的概念,它包含乙個動作序列。乙個活**展現一系列的動作,這些動作組成了活動。jbpm把action也改名了,稱為state。jbpm使用的狀態圖的概念有transition/event等,這個自己去看吧。jbpm來內部實現中還採用了petrinet的概念,如token,signal等。什麼?又不知道petrinet什麼東東?那你大學是學計算機的嗎?不是?那你可能是學文科的,學機械/電氣/土木工程/交通運輸等專業都有接觸petrinet的課程,如果沒有學過,還是看看jbpm吧,反正我們也不搞理論,知道大致概念就行。

本人觀點:

做觀點是件吃力不討好的事情,好多國外的大師做的觀點也是被人罵得……我的觀點是:shark……將登上頭號寶座。應該說,在那篇文章發表前,國內的工作流引擎使用率最高的是osworkflow;到去年年底,shark就占有了明顯的優勢地位,我分析有如下原因: 

1. 國內的企業都看中xpdl,因為這意味著在產品說明書中又可以吹牛說「我們遵循wfmc……」 

2. 因為我自詡「shark工作流引擎在國內的主要推廣者」,大部分給我反饋工作流管理系統開發選用技術的朋友都是用的shark 

3. shark的確是一套不錯的工作流引擎,就算你只是想學習xpdl,你也可以從學習shark開始。

4.不過我還是看好osworkflow。

Java三大主流開源工作流引擎技術分析

三大主流工作流引擎 shark,osworkflow,jbpm!shark的流程定義語言是xpdl,我們知道,xpdl的兩個最重要的概念是process和activity。xpdl中的activity是基於uml1.x中的活 的概念。活 天生的適於工作流程建模,它相對於狀態圖的乙個最大的優點是容易做...

Java三大主流開源工作流引擎技術分析

三大主流工作流引擎 shark,osworkflow,jbpm!opensymphony。我是非常喜歡這個 組織的,它做出了很多的好東西。在開發工作流管理系統時,我就推薦用它的另外乙個東西 webwork2。筆者主持的開源工作流引擎agileflow就是基於ww2 spring hibernate架...

工作流引擎

工作流引擎 乙個任務清單,task1,task2,task3。這與審批和表達提交沒有任何關係,包括許可權,我理解這是工作流引擎的核心。每個任務有乙個執行程式 service bean dcom等等,實現方法你可以自己定,怎麼方便怎麼來。可能這個程式就是審批,以及審批設計到的資料等,這和工作流引擎有關...