Java版 工作流
Shark
Shark是體系和功能最為複雜的代表。它是另一款遵循WfMC的XPDL标準開源工作流引擎,并且同時遵循OMG組織的Workflow Management Facility規範。在所有開源工作流引擎中,Shark的體系最為完備和複雜。其一直秉承着“子產品化”的思想,是以比較容易擴充。但是自從被Together公司收購後,Shark的商業化色彩已經越來越濃,改稱為Together Workflow Server,并僅以Community Edition的形式提供了部分開源代碼供參考。
Shark
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所圍繞的業務流程及流程整合應用是一個發展趨勢。