?Java版 工作流
Shark
Shark是體系和功能最為復雜的代表。它是另一款遵循WfMC的XPDL標準開源工作流引擎,并且同時遵循OMG組織的Workflow Management Facility規范。在所有開源工作流引擎中,Shark的體系最為完備和復雜。其一直秉承著“模塊化”的思想,所以比較容易擴展。但是自從被Together公司收購后,Shark的商業化色彩已經越來越濃,改稱為Together Workflow Server,并僅以Community Edition的形式提供了部分開源代碼供參考。
OSWorkflow
OSWorkflow是最輕量型的代表,也是一款非常靈活和低級別定位的工作流引擎的實現框架。低級別定位的意思是說,它不是定位在解決流程模型對象和運轉場景,而是提供一套可維護調度的機制,供開發人員自主擴展。這個維護流程調度機制OSWorkflow選擇的是基于行為(Action)的FSM理論,所以OSWorkflow更像是一個復雜而靈活的有限狀態調度機。
OSWorkflow在國內項目應用得較多,很多國內的簡易審批流程項目都是基于其引擎二次開發而來。這主要是由于OSWorkflow是基于Action驅動的,而國內的客戶也很容易接受這樣的操作習慣。但OSWorkflow所依賴的FSM模型對于分支、聚合、子流程的支持度很低,這一點在實施過程中需要注意。
jBpm
jBpm是最適合擴展的代表,是在所有開源引擎中最適宜被商業化應用的一款。首先其流程建模模型是基于Activity Diagram(活動圖)的,并在引擎構建上融入了FSM和PetriNet思想,所以其內核和根基比較牢固扎實。其次,自從被JBoss收購后,其3. x系列的結構更加趨于微內核,Plug-in思想也更加深入。其同時還提供了對BPEL擴展,存儲支持JBoss Hibernate實現,集成了JBoss seam,規則引擎準備采用JBoss rules,并準備集成JBoss Messaging。這樣,不論從內核和外圍應用,jBpm都具有了強勁的動力。
另外,jBpm對Token的應用也很有特色,巧妙地利用Parent-Child Token的機制處理分支、父子流程等復雜應用場景。這個設計思想很值得大家學習參考。
YAWL
YAWL是算法和模式最值得研究的代表,它是Alast力主倡導的一款基于PetriNet建模的工作流引擎,其將PetriNet的Token與And、XOR、OR算法進行了融合,并對Workflow Patterns(工作流模式)中所有模式提供支持。但YAWL本身僅是一個研究性項目,所以其結構和實現缺少了商業化應用的特點。但有必要研究一下YAWL,一方面可以加深對工作流模式的理解,另一方面,YAWL的一些建模思想、處理算法很值得推敲和吸納。
ActiveBPEL
ActiveBPEL 是BPEL引擎的代表,也是一款可執行BPEL4WS規范的開源流程引擎,其結構和實現方式具有很高的參考價值。目前國內很多正在開發基于BPEL產品的中小型軟件廠商,其實現的很多基礎性內容和思想都參考自ActiveBPEL。受目前國內中小型客戶對流程需求的限制,基于BPEL的開源引擎或小型產品被市場接受度還很低。但BPEL所圍繞的業務流程及流程整合應用是一個發展趨勢。