Java 三大主流 工作流 學習


之前聽同學說,他們在用工作流,好奇,搜索了一下,查看和搜集了一番,摘抄入下:(來源於:gzRiven

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

 

  Shark的靠山是Enhydra。Enhydra做過什么呢?多了!從j2ee應用服務器,到o/r mapping工具,到這個工作流引擎等等。

  為什么Shark的持久層采用DODS來實現?就是因為他們是一家人。 

  Jbpm的靠山是jboss。Jbpm3的持久層采用hibernate3來實現,也是因為這個原因吧。

  Jbpm3的圖形化流程定義已經決定嵌入到jboss eclipse IDE中,大家看看jboss eclipse IDE preview 1.5版,我們已經可以用插件方式編輯一個jbpm3流程定義文件了。 

   Osworkflow的靠山是opensymphony。我是非常喜歡這個組織的,它做出了很多的好東西。

   在開發工作流管理系統時,我就推薦用它的另外一個東西:webwork2。

    有人(gzRiven )主持的開源工作流引擎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。

 

 

補充查找:

(1)OSWorkflow:

    Osworkflow是完全用java語言編寫的開放源代碼的工作流引擎,具有顯著的靈活性及完全面向有技術背景的用戶的特點。用戶可以根據自身的需求利用這款開源軟件設計簡單或是復雜的工作流。通過使用,用戶就可以把工作中心放在業務和規則的定義上,而不需通過硬編碼的方式實現一個Petri網或是一個有窮自動機。用戶可以以最小的代價把osworkflow整合到自己的程序中來。Osworkflow幾乎提供了所有用戶可能在實際流程定義中需要用到的工作流構成元素,如:環節(step)、條件(conditions)、循環(loops)、分支(spilts)、合並(joins)、角色(roles)等等。 我還摘抄一篇有關OSWorkflow的文章:http://www.cnblogs.com/nucdy/p/7573603.html

 

(2)XPDL

    XPDL(XML Process Definition Language)是由Workflow Management Coalition所提出的一個標准化規格,使用XML文件讓不同的工作流程軟件能夠交換商業流程定義。
XPDL是一個通用的 框架,這也是XPDL的一個重要特性,這個框架可以支持開發者的特殊使用目的,而對外表現形式卻相同。開發者的實現和它的外部接口可以獨立分開,因為不管你如何實現的,采用什么圖形描述( 狀態圖活動圖等),只要外部接口符合XPDL 規范,那么就可以保持相同的表示形式。希望在WFMC 接口1的未來發布版本中,能夠包含現版本中缺少的屬性。
XPDL被設計為圖形上和語義上都滿足交換用的商業流程定義,是描述 BPMN圖的最佳文件格式。 BPEL也可以描述商業流程。但是XPDL不僅包含流程執行的描述,還包括了元素的圖形信息,更適於商業流程建模。
 
(3)PetriNet
PetriNet是對離散並行系統的數學表示,其是1960年代由C.A.佩特里發明的,適合於描述異步的、並發的計算機系統模型。
 
PetriNet既有嚴格的數學表述方式,也有直觀的圖形表達方式。
在國外很多著名流程相關的文檔中,PetriNet的數學表述用的很多,但可惜這些估計只有那些相關專業的研究生、博士生才能看得懂的,一般開發人員,能夠領悟圖形Notation即可。
經典的PN是簡單的過程模型,由兩種節點(庫所和變遷),及有向弧,以及令牌(Token)組成的。
PetriNet不光抽象了經典的過程模型,並描述了完備的支撐過程調度的算法:如果一個變遷的每個輸入庫所(input place)都擁有令牌,該變遷即為被允許(enable)。一個變遷被允許時,變遷將發生(fire),輸入庫所(input place)的令牌被消耗,同時為輸出庫所(output place)產生令牌。
基於PetriNet的 工作流引擎,其引申了兩種節點:一種是State,一種是Activity:其中state是演化自place,activity則演化自transition。

 

(4)FSM 

Finite State Machine或者Finite State Automata
軟件領域中一種重要的工具,很多東西的模型實際上就是 有限狀態機
 
     有限狀態機是指輸出取決於過去輸入部分和當前輸入部分的時序邏輯電路。一般來說,除了輸入部分和輸出部分外,有限狀態機還含有一組具有“記憶”功能的 寄存器,這些寄存器的功能是記憶有限狀態機的內部狀態,它們常被稱為 狀態寄存器。在有限狀態機中,狀態寄存器的的下一個狀態不僅與輸入信號有關,而且還與該寄存器的當前狀態有關,因此 有限狀態機又可以認為是組合邏輯和寄存器邏輯的一種組合。其中,寄存器邏輯的功能是存儲有限狀態機的內部狀態;而組合邏輯有可以分為次態邏輯和輸出邏輯兩部分,次態邏輯的功能是確定有限狀態機的下一個狀態,輸出邏輯的功能是確定有限狀態機的輸出。
    在實際的應用中,根據有限狀態機是否使用輸入信號,設計人員經常將其分為Moore型有限狀態機和Mealy型有限狀態機兩種類型。1 Moore型有限狀態機其輸出信號僅與當前狀態有關,即可以把Moore型有限狀態的輸出看成是當前狀態的函數。2 Mealy型有限狀態機其輸出信號不僅與當前狀態有關,而且還與所有的輸入信號有關,即可以把Mealy型 有限狀態機的輸出看成是當前狀態和所有輸入信號的函數。

可以查看java 有限狀態機(FSM)的Java 演示

(4)jbpm

    JBPM,全稱是Java Business Process Management(業務流程管理),它是覆蓋了業務流程管理、 工作流、服務協作等領域的一個開源的、靈活的、易擴展的可執行流程語言框架。jBPM是公開源代碼項目,使用它要遵循 ASL(Apache License Version 2.0)和EULA(JBoss End User License Agreement)協議。
jBPM在2004年10月18日,發布了2.0版本,並在同一天加入了JBoss,成為了JBoss企業中間件平台的一個組成部分,它的名稱也改成JBoss jBPM。
   jBPM is a flexible Business Process Management (BPM) Suite. It makes the bridge between business analysts and developers. Traditional BPM engines have a focus that is limited to non-technical people only. jBPM has a dual focus: it offers process management features in a way that both business users and developers like it.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM