您當前的位置:首頁(yè) > 新(xīn)聞資訊 > 産(chǎn)品動态 > 正文(wén)

【新(xīn)東網技(jì )術大咖帶您走進jBPM】從jBPM3、jBPM5到Activiti5:是繼承還是颠覆?

發布時間: 2017-02-06 12:25:26  
分(fēn)享到:

 

文(wén)/陳繼先 通信研發部 華南-海南

 

 

 
專欄介紹

新(xīn)東網自2001年成立以來,掌握大數據、雲計算、通信、物(wù)聯網及區(qū)塊鏈等領先信息技(jì )術,擁有(yǒu)一支逾16年經驗的強大IT團隊。為(wèi)沉澱企業技(jì )術實力,繼續發揮行業優勢,《東網快訊》特邀新(xīn)東網技(jì )術大咖帶您走進這些領先信息技(jì )術,揭秘新(xīn)東網16年來的技(jì )術成果,每周一發布

 

 

從jBPM3發展到jBPM5再到Activiti5,jBPM(包括Activiti)的設計無不遵循一緻的原則,即強調流程服務(wù)的可(kě)嵌入性和可(kě)擴展性。同時,從各個版本之間的變化我們也能(néng)看見産(chǎn)品設計思路的變化:更加強調面向業務(wù)人員,增加BPMS(業務(wù)流程管理(lǐ)系統)特性。

 

回顧發展曆程前,首先我們來讨論一下BPMS應該嵌入還是獨立部署的問題,因為(wèi)不管是jBPM還是Activiti,都強調了流程服務(wù)的可(kě)嵌入性。此外,我們還需要讨論一下什麽是BPMS的特性,它們所解決的問題是什麽。

 

 

一、嵌入式還是獨立部署
 

 

不管是jBPM還是Activiti,都強調了流程服務(wù)的可(kě)嵌入性。Tom Baeyens在其個人博客裏稱作(zuò)為(wèi)獨立部署的BPMS已死,原因有(yǒu)兩個:一是獨立部署的BPMS需要很(hěn)高的安(ān)裝(zhuāng)使用(yòng)成本,需要獨立部署、需要用(yòng)戶支出大量的培訓成本和維護成本;二是獨立部署的BPMS與外部系統的交互方式是分(fēn)布式,這使得很(hěn)多(duō)問題變得複雜,例如分(fēn)布式事務(wù)。Tom Baeyens代表了相當一部分(fēn)人特别是開發人員的觀點。

 

Tom Baeyens沒有(yǒu)完全理(lǐ)解BPMS。什麽是BPMS?BPMS最重要的目标就是需要打破各個應用(yòng)系統(CRM、ECM、ERP、SCM)之間的界線(xiàn),将分(fēn)散在這些系統中(zhōng)的流程集中(zhōng)管理(lǐ),這是BPMS的實質(zhì)。一如流程再造,打破各個部門之間的壁壘,減少浪費,建立流程驅動性的組織。如下圖1所示:

 

 

圖 1:BPMS打破應用(yòng)系統之間的界線(xiàn)

 

BPMS所要解決的問題要求其必然是獨立部署的。Tom Baeyens錯誤的根本原因在于其将BPMS與工(gōng)作(zuò)流系統的定義混為(wèi)了一談,他(tā)如此定義BPMS:BPMS旨在簡化對組織核心流程進行支撐的軟件創建。也就是BPMS面向的是軟件開發人員,旨在簡化他(tā)們的開發,降低他(tā)們使用(yòng)流程的門檻。而這正是工(gōng)作(zuò)流系統需要解決的問題。BPMS面向企業用(yòng)戶,工(gōng)作(zuò)流面向開發社區(qū)和系統集成商(shāng)。

 

 

二、BPMS特性
 

 

jBPM4、jBPM5和Activiti5都增加了其BPMS特性,哪些特性能(néng)夠稱為(wèi)BPMS特性呢(ne)?我們先看一看BPMS需要解決的問題,為(wèi)解決這些問題所增加的特性就是BPMS特性。

 

1. 如何設計流程,在組織中(zhōng)高效地對設計出的流程進行溝通,取得共識?

· 提供跨越組織的流程标準标記符号與術語(BPMN已經成為(wèi)标準)

· 流程及相關文(wén)檔的可(kě)視化(流程/内容存儲倉庫)

· 提供在組織結構内進行不同層次之間的流程導航(流程存儲倉庫支持組織模型)

· 流程定義在各個層次/部門間的一緻性,避免業務(wù)人員的流程建模轉換到IT系統時受到損耗(流程引擎支持基于圖的建模,支持擴展)

 

2. 如何更好地執行流程?

· 業務(wù)活動的實時監控,預警與控制(BAM)

· 流程執行的仿真

· 流程執行的統計分(fēn)析與反饋(報表)

 

3. 如何更好地管理(lǐ)流程?

· 打破各個應用(yòng)系統之間的界線(xiàn),統一管理(lǐ)所有(yǒu)流程(EAI,與ESB的集成)

· 對業務(wù)人員友好的建模工(gōng)具(jù)

 

4. 如何在執行流程過程中(zhōng)遵循業内最佳實踐和規則?

· 面向流程的知識管理(lǐ)

· 規則引擎

 

 

三、完整的工(gōng)作(zuò)流實現jBPM3
 

 

jBPM3的最新(xīn)版本是3.2.7,包括了以下組件:基于Eclipse的流程設計器、用(yòng)于監控案例(流程實例)和處理(lǐ)任務(wù)的Web控制台以及jPDL核心庫。如下圖2所示:

 

 

圖 2:jBPM3組件

 

1. 基于Eclipse的流程設計器

提供給開發人員繪制jPDL流程圖,因為(wèi)該設計器基于Eclipse,所以生成的流程文(wén)件可(kě)以與開發代碼一起組織管理(lǐ),非常容易進行單元測試。實現了工(gōng)作(zuò)流管理(lǐ)系統參考模型裏的接口1。

 

2. Web管理(lǐ)控制台

主要有(yǒu)兩個功能(néng):一是作(zuò)為(wèi)工(gōng)作(zuò)流客戶端應用(yòng)接口,給用(yòng)戶提供一種手段,以處理(lǐ)案例運行過程中(zhōng)需要人工(gōng)處理(lǐ)的任務(wù);二是對案例的狀态進行監控與管理(lǐ)。實現了工(gōng)作(zuò)流管理(lǐ)系統參考模型裏的接口2和5。

 

3. jPDL核心庫

jPDL核心庫是一個單獨的JAR包,可(kě)以嵌入到目标應用(yòng)中(zhōng)執行,它包括了:

· 流程倉庫:解析jPDL流程定義文(wén)件并存儲讀取;

· 流程引擎:對流程定義進行初始化和調度執行,節點的運行期行為(wèi)與jPDL裏定義的節點類型一一綁定;

· 任務(wù)管理(lǐ):生成任務(wù)節點所對應的工(gōng)作(zuò)項,管理(lǐ)工(gōng)作(zuò)項的生命周期(初始化、分(fēn)配執行者、執行、挂起、結束、終止);

· 事件管理(lǐ):發布案例和任務(wù)的開始、結束事件,通過監聽者模式調用(yòng)相應的事件處理(lǐ)器;

· 異步執行機制:通過線(xiàn)程實現了Job Executor,進行異步工(gōng)作(zuò)的處理(lǐ),這些工(gōng)作(zuò)包括了時間處理(lǐ)、異步動作(zuò)。

· 身份組件模型:實現了一套簡單的身份組件模型,包括了組、用(yòng)戶和權限。

 

通過調用(yòng)自定義Java代碼實現了對外部應用(yòng)的調用(yòng),從而實現工(gōng)作(zuò)流管理(lǐ)系統參考模型裏的接口3。

 

jBPM3是一個輕量級的嵌入式工(gōng)作(zuò)流系統。它在Java社區(qū)的成功得益于兩個方面:一是嵌入式,這降低了使用(yòng)工(gōng)作(zuò)流的門檻;二是對開發人員友好,這表現在易讀的jPDL、流程的可(kě)測試性(Eclipse插件)以及節點行為(wèi)的可(kě)擴展性,我們可(kě)以非常容易的在流程運行中(zhōng)加入自己定制的行為(wèi)(通過事件處理(lǐ)器和Action)。jBPM3面向開發人員,它解決的問題是流程的自動化,它的影響力集中(zhōng)在Java開發社區(qū),是一個完整的工(gōng)作(zuò)流系統實現。

 

四、向BPMS努力的jBPM4
 

 

與jBPM3相比,jBPM4最大的變化是引入了流程虛拟機(PVM),同時增加了BPMS的特性。jBPM4不再滿足于工(gōng)作(zuò)流系統的定位,開始向BPMS努力。

 

1. 為(wèi)什麽引入流程虛拟機

盡管jBPM3在Java社區(qū)取得了很(hěn)大的成功,但是有(yǒu)一件事始終被人們诟病,那就是它不支持流程語言規範,從最開始的XPDL、BPEL到後來的BPMN,它采用(yòng)了自定義的jPDL。在jBPM3中(zhōng),節點的運行期行為(wèi)與jPDL裏定義的節點類型是一一綁定的,這造成了流程引擎與特定流程語言的綁定,要支持其他(tā)的流程語言變得困難。于是在jBPM4中(zhōng),jBPM提出了流程虛拟機的概念,即流程引擎與流程語言解耦,通過一套通用(yòng)的流程模型并配以可(kě)定制的節點運行期行為(wèi)實現了對多(duō)流程語言的支持。流程虛拟機帶來的好處是多(duō)方面的:第一也是最重要的是jBPM4支持了BPMN。

 

第二是實現了基于流程組件的流程引擎,流程圖(語言)與實現解耦,我們使用(yòng)通用(yòng)編程語言實現節點運行期行為(wèi),稱之為(wèi)流程組件,通過将流程圖與流程組件挂接,避免了圖的損耗。在這一點上,Tom Baeyens對BPMN到BPEL的轉換提出了一針見血的批評:BPMN和jPDL以及XPDL都是基于圖的,而BPEL是基于塊的,這造成了當将業務(wù)人員使用(yòng)BPMN所建立的流程模型向BPEL執行模型進行轉換時,出現許多(duō)的不匹配,最初的流程模型會扭曲變形。而扭曲的後果就是業務(wù)人員與開發人員之間的協作(zuò)困難,這影響了流程從業務(wù)到技(jì )術的實現。

 

第三個好處是我們可(kě)以定義領域特定語言(DSL),在特定的應用(yòng)裏,采用(yòng)DSL約定并隐藏了大部分(fēn)的技(jì )術細節可(kě)能(néng)做到業務(wù)人員對執行流程的直接修改,例如企業文(wén)檔管理(lǐ)裏的審批流程。

 

2. BPMS特性的加入

 

這表現在以下三個方面:第一是支持了BPMN,BPMN已經成為(wèi)業務(wù)人員的流程建模标準;第二是引入了Signavio作(zuò)為(wèi)面向業務(wù)人員的Web建模器;第三是在已有(yǒu)的Web管理(lǐ)控制台加入了對案例和任務(wù)的統計功能(néng)。jBPM4的組件如下圖3所示:

 

圖3:jBPM4組件

 

和jBPM3一樣,jBPM4依然是輕量級的、可(kě)嵌入的工(gōng)作(zuò)流系統。相比jBPM3,它将業務(wù)人員作(zuò)為(wèi)最終用(yòng)戶之一,增加了部分(fēn)BPMS特性,同時PVM的引入使得它的可(kě)擴展性得到了極大的增強,我們甚至可(kě)以定義自己的DSL。

 

在BPMS特性裏我們提到了應該避免業務(wù)人員的流程建模轉換到IT系統時受到損耗,最理(lǐ)想的情況是業務(wù)人員與開發人員共用(yòng)一個流程模型,業務(wù)人員能(néng)夠直接對流程進行調整(在特定應用(yòng)中(zhōng),通過DSL是可(kě)以做到的);其次是通過BPMS将業務(wù)人員的模型與實際執行的技(jì )術模型關聯起來(很(hěn)多(duō)商(shāng)業産(chǎn)品已經做到了這一點,在Activiti5中(zhōng)我們也會看到這一點),業務(wù)人員、開發人員以及運營團隊之間能(néng)夠做到很(hěn)好的協調;最差是業務(wù)人員與開發人員各自為(wèi)政,獨立維護各自的流程模型,并且模型之間存在極大的不匹配,此時流程的迅速變化基本上是奢望。

 

五、鸠占鵲巢的Drools Flow與jBPM5
 

 

目前jBPM5剛剛發布了第一個候選發布版本,jBPM5基本上完全抛棄了jBPM4的代碼,所有(yǒu)代碼全部來自原先的Drools Flow。Drools Flow最初被用(yòng)來解決規則執行順序的問題。其實從Drools Flow開始支持BPMN時起,我們已經預感到它與jBPM的競争關系。

 

jBPM5依舊定位為(wèi)輕量級的可(kě)嵌入的工(gōng)作(zuò)流系統。在jBPM5的特性裏,有(yǒu)這麽兩條引人關注:一是引入了Guvnor作(zuò)為(wèi)流程倉庫,這解決了流程的可(kě)視化問題,流程定義作(zuò)為(wèi)資源被管理(lǐ),我們可(kě)以對流程定義進行可(kě)視化管理(lǐ)以及全文(wén)檢索(Guvnor使用(yòng)了Jackrabbit作(zuò)為(wèi)了其存儲實現,但我們的經驗表明Jackrabbit在大數據量情況下性能(néng)存在嚴重問題);第二是規則引擎(Drools Expert)、事件處理(lǐ)引擎(Drools Fusion)與流程引擎的合三為(wèi)一,這是jBPM5最讓人期待的地方。jBPM5的組件如下圖4所示:

 

圖 4:jBPM5組件

 

規則引擎在流程中(zhōng)的應用(yòng)已經非常廣泛了,我們這裏說說事件處理(lǐ)引擎。

 

事件處理(lǐ)引擎是業務(wù)活動監控(BAM)的基礎,BAM的功能(néng)及執行過程,如下:

· 捕獲:BAM捕獲各種事件(通過消息監聽器、适配器、代理(lǐ)等)。這些事件來自應用(yòng)、系統軟件、外部交易夥伴。消息是BAM的核心——它們反應底層業務(wù)流程的狀況。

· 過濾:BAM過濾掉沒有(yǒu)直接後果的事件,在很(hěn)多(duō)情況下由支持事件流處理(lǐ)(Event Stream Processing,簡稱ESP)或複雜事件處理(lǐ)(Complex Event Processing,簡稱CEP)引擎來進行過濾。

· 分(fēn)析:BAM根據分(fēn)析模型和規則将相關事件聯系起來。

· 警告:BAM向用(yòng)戶提出警告,以便用(yòng)戶在必要時進行控制。

 

如上所示,BAM的執行過程包含四個步驟,而前三個步驟都是對事件進行相關的處理(lǐ)(捕獲事件、過濾事件、分(fēn)析事件、關聯事件),因此在大多(duō)數BAM的技(jì )術實現方案中(zhōng),都基于CEP和ESP的引擎來實現BAM的功能(néng)。

 

與jBPM4相比,jBPM5對PVM的放棄也帶來了幾個不小(xiǎo)的問題:第一是對開發人員來說隻支持BPMN,不再支持jPDL(當然提供了遷移工(gōng)具(jù));第二是流程執行的可(kě)擴展性回到了jBPM3的年代,僅僅支持自定義動作(zuò)(相當于jBPM3裏的Action)。此外,Web建模器由Signavio替換為(wèi)了Oryx Designer。

 

總而言之,jBPM5通過引入流程倉庫和BAM繼續向BPMS邁進(目前的進展是與流程倉庫的集成還未完成,BAM基于日志(zhì)進行分(fēn)析),同時,由于不再支持PVM和jPDL,帶來了流程擴展性的降低和社區(qū)開發人員的未來流失。

 

 

六、Activiti5的反擊
 

 

Activiti5是Tom Baeyens加入Alfresco後推出的新(xīn)的基于jBPM4的開源工(gōng)作(zuò)流系統,已發布第一個版本。Activiti的開發團隊相比與jBPM強大了許多(duō),有(yǒu)23位核心開發者。當然這也是由于activiti規劃的功能(néng)所緻:包括核心引擎、Web的流程建模器、協作(zuò)工(gōng)具(jù)Activiti Cycle、Activiti Probe、Activiti Explorer、與Spring的集成、與Mule的集成等。

 

 

圖 5:Activiti5的組件

 

如上圖所示,Activiti5由三種類型的組件組成,分(fēn)别是:專用(yòng)工(gōng)具(jù)(Dedicated Tools)、内容存儲工(gōng)具(jù)(Stored Content)和協作(zuò)工(gōng)具(jù)(Collaboration Tool)。

專用(yòng)工(gōng)具(jù)包括以下:

 

· Alfresco—Alfresco公(gōng)司的企業級内容管理(lǐ)産(chǎn)品

 

Alfresco 是一個開源的、企業級的内容管理(lǐ)系統,功能(néng)包括:文(wén)檔管理(lǐ)、協作(zuò)、記錄管理(lǐ)、知識庫管理(lǐ)、Web内容管理(lǐ)等功能(néng)。Alfresco與Activiti的深入集成實現了流程及相關文(wén)檔的可(kě)視化。更重要的是Alfresco支持組織模型,能(néng)夠提供在組織結構内進行不同層次之間的流程導航。

 

· Activiti Modeler—建模器

 

基于開源Signavio Web流程編輯器的一個定制版本,提供了對BPMN2.0圖形化規範的支持,建模後的流程以文(wén)件格式進行存儲。

 

· Activiti Designer—Eclipse插件形式的建模器

· Activiti probe—管理(lǐ)及監控組件

 

對流程引擎運行期實例提供管理(lǐ)及監控的Web控制台。包含部署的管理(lǐ)、流程定義的管理(lǐ)、數據庫表的檢視、日志(zhì)查看、事務(wù)的平均執行時間、失敗多(duō)次的工(gōng)作(zuò)等功能(néng)。

 

· Activiti Explorer—任務(wù)管理(lǐ)組件

提供任務(wù)管理(lǐ)功能(néng)和對案例、任務(wù)基于曆史數據的統計分(fēn)析(報表)功能(néng)。Web應用(yòng)程序。

 

内容存儲工(gōng)具(jù):包括了文(wén)檔倉庫、模型倉庫、SVN倉庫、MVN倉庫和Activiti引擎。其中(zhōng)文(wén)檔倉庫、SVN倉庫和MVN倉庫三個組件為(wèi)協作(zuò)工(gōng)具(jù)(Activiti Cycle)提供底層的支撐。Activiti引擎則是以前的PVM。

 

協作(zuò)工(gōng)具(jù):與jBPM4相比,Activiti5最令人矚目的特性就在于它的協作(zuò)工(gōng)具(jù)組件。

 

Activiti Cycle完全是一種新(xīn)類型的BPM組件。它是一個用(yòng)來促進業務(wù)人員、開發人員和IT運營人員協作(zuò)的Web應用(yòng)程序。 在現實的場景中(zhōng),業務(wù)文(wén)檔有(yǒu)業務(wù)人員所持有(yǒu),而軟件程序由開發團隊所管理(lǐ),被部署的軟件應用(yòng)則被IT管理(lǐ)人員所管理(lǐ),三者之間不能(néng)很(hěn)好的協作(zuò)。我們可(kě)以想象這樣一個場景,業務(wù)經理(lǐ)用(yòng)文(wén)檔來維護需求和visio格式的流程圖,開發人員管理(lǐ)可(kě)執行的流程和大量的Java源文(wén)件而IT維護人員則管理(lǐ)部署在Tomcat中(zhōng)的.war文(wén)件和存儲在Activiti數據庫中(zhōng)的流程。

 

圖 6:Activiti cycle協作(zuò)組件邏輯示意圖

 

Activiti Cycle通過BusinessLink将與流程相關的業務(wù)人員、開發團隊與IT維護人員關聯起來,實現他(tā)們之間的協作(zuò)。

 

總而言之,與jBPM4相比,Activiti5目前最重要的增強就是實現了流程的可(kě)視化以及創新(xīn)的Activiti Cycle協作(zuò)組件,此外,通過與Mule的集成加強了其集成能(néng)力。其對PVM的保留使其繼承了jBPM4強大的可(kě)擴展能(néng)力,對jBPM的老用(yòng)戶來說,這是向其遷移的重要理(lǐ)由。

 

 

七、總結
 

 

jBPM3是一個完整的工(gōng)作(zuò)流系統實現,面向開發人員,目的在于簡化對組織核心流程進行支撐的軟件創建,不支持标準。

 

jBPM4引入PVM,使其擁有(yǒu)更強大的擴展性,同時增加BPMS特性,這些特性包括了對BPMN的支持、面向業務(wù)人員的Web建模器和簡單統計分(fēn)析功能(néng)的加入。

 

jBPM5基于原先的Drools Flow,支持BPMN,通過與Drools的合并支持BAM,通過内容倉庫增加對流程可(kě)視化的支持。由于放棄了jBPM4的PVM,引擎的可(kě)擴展性受到損害,并且不再支持jPDL。

 

Activiti5基于jBPM4,與Alfresco的集成增加了其流程可(kě)視化與管理(lǐ)能(néng)力,同時通過創新(xīn)的Activiti Cycle協作(zuò)組件支持流程相關人員之間的協調,最後,它加強了集成能(néng)力。

 

對于工(gōng)作(zuò)流應用(yòng)或者jBPM3、jBPM4的老用(yòng)戶,建議轉向Activiti5。

 

分(fēn)享到:
地址:福建省福州市銅盤路軟件大道89号軟件園A區(qū)26号樓 電(diàn)話:0591-83519233 傳真:0591-87882335 E-mail:doone@doone.com.cn
版權所有(yǒu) 新(xīn)東網科(kē)技(jì )有(yǒu)限公(gōng)司 京ICP證000000号 閩公(gōng)網安(ān)備 35010202001006号