jBPM是目前市場(chǎng)上主流開源工作引擎之一创淡,在創(chuàng)建者Tom Baeyens離開JBoss后包吝,jBPM的下一個(gè)版本jBPM5完全放棄了jBPM4的基礎(chǔ)代碼畦浓,基于Drools Flow重頭來過浦旱,目前官網(wǎng)已經(jīng)推出了jBPM6的beta版本;Tom Baeyens加入Alfresco后很快推出了新的基于jBPM4的開源工作流系統(tǒng)Activiti能庆。由此可以推測(cè)JBoss內(nèi)部對(duì)jBPM未來版本的架構(gòu)實(shí)現(xiàn)產(chǎn)生了嚴(yán)重的意見分歧施禾。本文試著對(duì)二者做一些比較。
主要相似之處:
都是BPMN2過程建模和執(zhí)行環(huán)境搁胆;都是BPM系統(tǒng)(符合BPM規(guī)范)弥搞;都是開源項(xiàng)目,遵循ASL協(xié)議( Apache的 軟件許可)渠旁;都源自JBoss(Activiti5是jBPM4的衍生攀例,jBPM5則基于Drools Flow);都有對(duì)人工任務(wù)的生命周期管理顾腊;Activiti5和jBPM5唯一的區(qū)別是jBPM5基于WebService - HumanTask標(biāo)準(zhǔn)來描述人工任務(wù)和管理生命周期肛度;如有興趣了解這方面的標(biāo)準(zhǔn)及其優(yōu)點(diǎn),可參閱WS - HT規(guī)范介紹投慈;都使用了不同風(fēng)格的 Oryx 流程編輯器對(duì)BPMN2建模承耿;jBPM5采用的是 Intalio 維護(hù)的開源項(xiàng)目分支;Activiti5則使用了Signavio維護(hù)的分支伪煤。
Activiti5與jBPM5技術(shù)組成對(duì)比:
Activiti5使用Spring進(jìn)行引擎配置以及各個(gè)Bean的管理加袋,綜合使用IoC和AOP技術(shù),使用CXF作為Web Services實(shí)現(xiàn)的基礎(chǔ)抱既,使用MyBatis進(jìn)行底層數(shù)據(jù)庫ORM的管理职烧,預(yù)先提供Bundle化包能較容易的與OSGi進(jìn)行集成,通過與Mule ESB的集成和對(duì)外部服務(wù)(Web Service防泵、RESTful等)的接口可以構(gòu)建全面的SOA應(yīng)用蚀之;jBPM5使用jBoss.org社區(qū)的大多數(shù)組件,以Drools Flow為核心組件作為流程引擎的核心構(gòu)成捷泞,以hibernate作為數(shù)據(jù)持久化ORM實(shí)現(xiàn)足删,采用基于JPA/JTA的可插拔的持久化和事務(wù)控制規(guī)范,使用Guvnor作為流程管理倉庫锁右,能夠與Seam失受、Spring、OSGi等集成咏瑟。
需要指出的是Activiti5是在jBPM3拂到、jBPM4的基礎(chǔ)上發(fā)展而來的,是原jBPM的延續(xù)码泞,而jBPM5則與之前的jBPM3兄旬、jBPM4沒有太大關(guān)聯(lián),且舍棄了備受推崇的PVM(流程虛擬機(jī))思想余寥,轉(zhuǎn)而選擇jBoss自身產(chǎn)品Drools Flow作為流程引擎的核心實(shí)現(xiàn)领铐,工作流最為重要的“人機(jī)交互”任務(wù)(類似于審批活動(dòng))則由單獨(dú)的一塊“Human Task Service”附加到Drools Flow上實(shí)現(xiàn),任務(wù)的查詢劈狐、處理等行為通過Apache Mina異步通信機(jī)制完成罐孝。
優(yōu)劣對(duì)比:
從技術(shù)組成來看,Activiti最大的優(yōu)勢(shì)是采用了PVM(流程虛擬機(jī))肥缔,支持除了BPMN2.0規(guī)范之外的流程格式莲兢,與外部服務(wù)有良好的集成能力,延續(xù)了jBPM3续膳、jBPM4良好的社區(qū)支持改艇,服務(wù)接口清晰,鏈?zhǔn)紸PI更為優(yōu)雅坟岔;劣勢(shì)是持久化層沒有遵循JPA規(guī)范谒兄。
jBPM最大的優(yōu)勢(shì)是采用了Apache Mina異步通信技術(shù),采用JPA/JTA持久化方面的標(biāo)準(zhǔn)社付,以功能齊全的Guvnor作為流程倉庫承疲,有RedHat(jBoss.org被紅帽收購)的專業(yè)化支持邻耕;但其劣勢(shì)也很明顯,對(duì)自身技術(shù)依賴過緊且目前僅支持BPMN2燕鸽。
總結(jié):
雖然是比較兄世,但不一定要有勝負(fù),只有適合自己的才是最好的啊研,要針對(duì)具體的項(xiàng)目區(qū)別對(duì)待御滩。對(duì)我們自己的項(xiàng)目,其實(shí)我更關(guān)注的是流程引擎的執(zhí)行效率以及性能党远,每小時(shí)幾十萬甚至上百萬的流程需要執(zhí)行削解,需要多少個(gè)服務(wù),集群沟娱、負(fù)載的策略是什么氛驮,會(huì)不會(huì)有沖突?目前這方面的資料還是比較少的花沉,很多問題只有實(shí)際遇用到的時(shí)候才會(huì)去想辦法解決柳爽。不過就我個(gè)人的感覺而言,Activiti上手比較快碱屁,界面也比較簡(jiǎn)潔磷脯、直觀,值得一試娩脾,不過jBPM6的beta版也已經(jīng)出來了赵誓,不知道會(huì)有什么變化,有興趣的也可以試下柿赊。