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