版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
縱觀jBPM:從jBPM3到jBPM5以及Activiti5作者榮浩發(fā)布于2010年12月28日上午12時0分社區(qū)Java主題業(yè)務流程建模,業(yè)務流程管理標簽ActivitijBPM,JBoss分享I對jBPM來說,今年最大的事件莫過于jBPM的創(chuàng)建者TomBaeyens離開JBoss了。TomBaeyens離開的具體原因尚不清楚,但他的離開產(chǎn)生了兩個結果:一是jBPM的下一個版本jBPM5完全放棄了jBPM4的基礎代碼,基于DroolsFlow重頭來過;二是TomBaeyens加入Alfresco后很快推出了新的基于jBPM4的開源工作流系統(tǒng)Activiti。由此不難推測TomBaeyens離開的部分原因:JBoss內部對jBPM未來版本的架構實現(xiàn)產(chǎn)生了嚴重的意見分歧。更加巧合的是12月1日Activiti5剛發(fā)布,緊接著12月2日jBPM5就發(fā)布了第一個候選發(fā)布版本,jBPM與Activiti之間的微妙關系可見一般。在這篇文章里,我們將一起回顧jBPM從jBPM3到jBPM5以及Activiti5的發(fā)展歷程,我們可以清晰的看見jBPM(包括Activiti)設計所遵循的一致原則:強調流程服務的可嵌入性和可擴展性。同時,從各個版本之間的變化我們也能看見產(chǎn)品設計思路的變化:更加強調面向業(yè)務人員,增加BPMS(業(yè)務流程管理系統(tǒng))特性。在回顧之前,我們首先討論一下BPMS應該嵌入還是獨立部署的問題,因為不管是jBPM還是Activiti,都強調了流程服務的可嵌入性。此外,我們還需要討論一下什么是BPMS的特性,它們所解決的問題是什么。一、嵌入式還是獨立部署?不管是jBPM還是Activiti,都強調了流程服務的可嵌入性。TomBaeyens在其個人博客里稱作為獨立部署的BPMS已死,原因有兩個:一是獨立部署的BPMS需要很高的安裝使用成本,需要獨立部署、需要用戶支出大量的培訓成本和維護成本;二是獨立部署的BPMS與外部系統(tǒng)的交互方式是分布式,這使得很多問題變得復雜,例如分布式事務。TomBaeyens代表了相當一部分人特別是開發(fā)人員的觀點。
TomBaeyens沒有完全理解BPMS。什么是BPMS?BPMS最重要的目標就是需要打破各個應用系統(tǒng)(CRM、ECM、ERP、SCM)之間的界線,將分散在這些系統(tǒng)中的流程集中管理,這是BPMS的實質。一如流程再造,打破各個部門之間的壁壘,減少浪費,建立流程驅動性的組織。如下圖1所示:Fmpkn/電史9 Customers PartnersFmpkn/電史9 Customers Partners甄程圖1:BPMS打破應用系統(tǒng)之間的界線BPMS所要解決的問題要求其必然是獨立部署的。TomBaeyens錯誤的根本原因在于其將BPMS與工作流系統(tǒng)的定義混為了一談,他如此定義BPMS:BPMS旨在簡化對組織核心流程進行支撐的軟件創(chuàng)建。也就是BPMS面向的是軟件開發(fā)人員,旨在簡化他們的開發(fā),降低他們使用流程的門檻。而這正是工作流系統(tǒng)需要解決的問題。BPMS面向企業(yè)用戶,工作流面向開發(fā)社區(qū)和系統(tǒng)集成商。二、BPMS特性jBPM4、jBPM5和Activiti5都增加了其BPMS特性,那些特性能夠稱為BPMS特性呢?我們先看一看BPMS需要解決的問題,為解決這些問題所增加的特性就是BPMS特性。如何設計流程,在組織中高效地對設計出的流程進行溝通,取得共識?o提供跨越組織的流程標準標記符號與術語(BPMN已經(jīng)成為標準)o流程及相關文檔的可視化(流程/內容存儲倉庫)o提供在組織結構內進行不同層次之間的流程導航(流程存儲倉庫支持組織模型)o流程定義在各個層次/部門間的一致性,避免業(yè)務人員的流程建模轉換到IT系統(tǒng)時受到損耗(流程引擎支持基于圖的建模,支持擴展)如何更好地執(zhí)行流程?o業(yè)務活動的實時監(jiān)控,預警與控制(BAM)o流程執(zhí)行的仿真o流程執(zhí)行的統(tǒng)計分析與反饋(報表)如何更好地管理流程?o打破各個應用系統(tǒng)之間的界線,統(tǒng)一管理所有流程(EAI,與ESB的集成)o對業(yè)務人員友好的建模工具如何在執(zhí)行流程過程中遵循業(yè)內最佳實踐和規(guī)則?o面向流程的知識管理o規(guī)則引擎三、完整的工作流實現(xiàn)jBPM3jBPM3的最新版本是3.2.7,其包括了以下組件:基于Eclipse的流程設計器、用于監(jiān)控案例(流程實例)和處理任務的Web控制臺以及jPDL核心庫。如下圖2所示:圖2:jBPM3組件基于Eclipse的流程設計器提供給開發(fā)人員繪制jPDL流程圖,因為該設計器基于Eclipse,所以生成的流程文件可以與開發(fā)代碼一起組織管理,非常容易進行單元測試。實現(xiàn)了工作流管理系統(tǒng)參考模型里的接口1。Web管理控制臺主要有兩個功能:一是作為工作流客戶端應用接口,給用戶提供一種手段,以處理案例運行過程中需要人工處理的任務;二是對案例的狀態(tài)進行監(jiān)控與管理。實現(xiàn)了工作流管理系統(tǒng)參考模型里的接口2和5。jPDL核心庫jPDL核心庫是一個單獨的JAR包,可以嵌入到目標應用中執(zhí)行,它包括了:o流程倉庫:解析jPDL流程定義文件并存儲讀??;o流程引擎:對流程定義進行初始化和調度執(zhí)行,節(jié)點的運行期行為與jPDL里定義的節(jié)點類型一一綁定;o任務管理:生成任務節(jié)點所對應的工作項,管理工作項的生命周期(初始化、分配執(zhí)行者、執(zhí)行、掛起、結束、終止);o事件管理:發(fā)布案例和任務的開始、結束事件,通過監(jiān)聽者模式調用相應的事件處理器;o異步執(zhí)行機制:通過線程實現(xiàn)了JobExecutor,進行異步工作的處理,這些工作包括了時間處理、異步動作。o身份組件模型:實現(xiàn)了一套簡單的身份組件模型,包括了組、用戶和權限。通過調用自定義Java代碼實現(xiàn)了對外部應用的調用,從而實現(xiàn)工作流管理系統(tǒng)參考模型里的接口3。jBPM3是一個輕量級的嵌入式工作流系統(tǒng)。它在Java社區(qū)的成功得益于兩個方面:一是嵌入式,這降低了使用工作流的門檻;二是對開發(fā)人員友好,這表現(xiàn)在易讀的jPDL、流程的可測試性(Eclipse插件)以及節(jié)點行為的可擴展性,我們可以非常容易的在流程運行中加入自己定制的行為(通過事件處理器和Action)。jBPM3面向開發(fā)人員,它解決的問題是流程的自動化,它的影響力集中在Java開發(fā)社區(qū),是一個完整的工作流系統(tǒng)實現(xiàn)。向BPMS努力的jBPM4與jBPM3相比,jBPM4最大的變化是引入了流程虛擬機(PVM),同時增加了BPMS的特性。jBPM4不再滿足于工作流系統(tǒng)的定位,開始向BPMS努力。1.為什么引入流程虛擬機盡管jBPM3在Java社區(qū)取得了很大的成功,但是有一件事始終被人們詬病,那就是它不支持流程語言規(guī)范,從最開始的XPDL、BPEL到后來的BPMN,它采用了自定義的jPDL。在jBPM3中,節(jié)點的運行期行為與jPDL里定義的節(jié)點類型是一一綁定的,這造成了流程引擎與特定流程語言的綁定,要支持其他的流程語言變得困難。于是在jBPM4中,jBPM提出了流程虛擬機的概念,即流程引擎與流程語言解耦,通過一套通用的流程模型并配以可定制的節(jié)點運行期行為實現(xiàn)了對多流程語言的支持。流程虛擬機帶來的好處是多方面的:第一也是最重要的是jBPM4支持了BPMN。第二是實現(xiàn)了基于流程組件的流程引擎,流程圖(語言)與實現(xiàn)解耦,我們使用通用編程語言實現(xiàn)節(jié)點運行期行為,稱之為流程組件,通過將流程圖與流程組件掛接,避免了圖的損耗。在這一點上,TomBaeyens對BPMN到BPEL的轉換提出了一針見血的批評:BPMN和jPDL以及XPDL都是基于圖的,而BPEL是基于塊的,這造成了當將業(yè)務人員使用BPMN所建立的流程模型向BPEL執(zhí)行模型進行轉換時,出現(xiàn)許多的不匹配,最初的流程模型會扭曲變形。而扭曲的后果就是業(yè)務人員與開發(fā)人員之間的協(xié)作困難,這影響了流程從業(yè)務到技術的實現(xiàn)。第三個好處是我們可以定義領域特定語言(DSL),在特定的應用里,采用DSL約定并隱藏了大部分的技術細節(jié)可能做到業(yè)務人員對執(zhí)行流程的直接修改,例如企業(yè)文檔管理里的審批流程。2.BPMS特性的加入這表現(xiàn)在以下三個方面:第一是支持了BPMN,BPMN已經(jīng)成為業(yè)務人員的流程建模標準;第二是引入了Signavio作為面向業(yè)務人員的Web建模器;第三是在已有的Web管理控制臺加入了對案例和任務的統(tǒng)計功能。jBPM4的組件如下圖3所示:
圖3:jBPM4組件和jBPM3—樣,jBPM4依然是輕量級的、可嵌入的工作流系統(tǒng)。相比jBPM3,它將業(yè)務人員作為最終用戶之一,增加了部分BPMS特性,同時PVM的引入使得它的可擴展性得到了極大的增強,我們甚至可以定義自己的DSL。在BPMS特性里我們提到了應該避免業(yè)務人員的流程建模轉換到IT系統(tǒng)時受到損耗,最理想的情況是業(yè)務人員與開發(fā)人員共用一個流程模型,業(yè)務人員能夠直接對流程進行調整(在特定應用中,通過DSL是可以做到的);其次是通過BPMS將業(yè)務人員的模型與實際執(zhí)行的技術模型關聯(lián)起來(很多商業(yè)產(chǎn)品已經(jīng)做到了這一點,在Activiti5中我們也會看到這一點),業(yè)務人員、開發(fā)人員以及運營團隊之間能夠做到很好的協(xié)調;最差是業(yè)務人員與開發(fā)人員各自為政,獨立維護各自的流程模型,并且模型之間存在極大的不匹配,此時流程的迅速變化基本上是奢望。五、鳩占鵲巢的DroolsFlow與jBPM5目前jBPM5剛剛發(fā)布了第一個候選發(fā)布版本,jBPM5基本上完全拋棄了jBPM4的代碼,所有代碼全部來自原先的DroolsFlow。DroolsFlow最初被用來解決規(guī)則執(zhí)行順序的問題。其實從DroolsFlow開始支持BPMN時起,我們已經(jīng)預感到它與jBPM的競爭關系。jBPM5依舊定位為輕量級的可嵌入的工作流系統(tǒng)。在jBPM5的特性里,有這么兩條引人關注:一是引入了Guvnor作為流程倉庫,這解決了流程的可視化問題,流程定義作為資源被管理,我們可以對流程定義進行可視化管理以及全文檢索(Guvnor使用了Jackrabbit作為了其存儲實現(xiàn),但我們的經(jīng)驗表明Jackrabbit在大數(shù)據(jù)量情況下性能存在嚴重問題);第二是規(guī)則引擎(DroolsExpert)、事件處理引擎(DroolsFusion)與流程引擎的合三為一,這是jBPM5最讓人期待的地方。jBPM5的組件如下圖4所示:詵程服務戒程引擎規(guī)則引擎(DroolsExpert)事件處理引擎(DroolsFusion)知識存儲倉庫(Guvnor)基于Eclipse的建模器〔開發(fā)人員)詵程服務戒程引擎規(guī)則引擎(DroolsExpert)事件處理引擎(DroolsFusion)知識存儲倉庫(Guvnor)基于Eclipse的建模器〔開發(fā)人員)菽程、規(guī)則的可視化管理CGuvnor)OryxDesignerWeb建模器(業(yè)務人員)業(yè)務活動監(jiān)控CBAM)案例、任務管理的Web拄制臺基于歷史庫的簡單報表統(tǒng)計圖4:jBPM5組件規(guī)則引擎在流程中的應用已經(jīng)非常廣泛了,我們這里說說事件處理引擎。事件處理引擎是業(yè)務活動監(jiān)控(BAM)的基礎,BAM的功能及執(zhí)行過程,如下:捕獲:BAM捕獲各種事件(通過消息監(jiān)聽器、適配器、代理等)。這些事件來自應用、系統(tǒng)軟件、外部交易伙伴。消息是BAM的核心——它們反應底層業(yè)務流程的狀況。?過濾:BAM過濾掉沒有直接后果的事件,在很多情況下由支持事件流處理(EventStreamProcessing,簡稱ESP)或復雜事件處理(ComplexEventProcessing,簡稱CEP)引擎來進行過濾。分析:BAM根據(jù)分析模型和規(guī)則將相關事件聯(lián)系起來。警告:BAM向用戶提出警告,以便用戶在必要時進行控制。如上所示,BAM的執(zhí)行過程包含四個步驟,而前三個步驟都是對事件進行相關的處理(捕獲事件、過濾事件、分析事件、關聯(lián)事件),因此在大多數(shù)BAM的技術實現(xiàn)方案中,都基于CEP和ESP的引擎來實現(xiàn)BAM的功能。與jBPM4相比,jBPM5對PVM的放棄也帶來了幾個不小的問題:第一是對開發(fā)人員來說只支持BPMN,不再支持jPDL(當然提供了遷移工具);第二是流程執(zhí)行的可擴展性回到了jBPM3的年代,僅僅支持自定義動作(相當于jBPM3里的Action)。此外,Web建模器由Signavio替換為了OryxDesigner??偠灾琷BPM5通過引入流程倉庫和BAM繼續(xù)向BPMS邁進(目前的進展是與流程倉庫的集成還未完成,BAM基于日志進行分析),同時,由于不再支持PVM和jPDL,帶來了流程擴展性的降低和社區(qū)開發(fā)人員的未來流失。六、Activiti5的反擊Activiti5是TomBaeyens加入Alfresco后推出的新的基于jBPM4的開源工作流系統(tǒng),1號剛剛發(fā)布第一個版本。Activiti的開發(fā)團隊相比與jBPM強大了許多,有23位核心開發(fā)者。當然這也是由于activiti規(guī)劃的功能所致:包括核心引擎、Web的流程建模器、協(xié)作工具ActivitiCycle、ActivitiProbe、ActivitiExplorer、與Spring的集成、與Mule的集成等。StoredContentDedicatedToolsCollaborationToolModelRepositorySVNRepository1VIVNRepositoryActivitiEngineProcessRepository\Do匚StoredContentDedicatedToolsCollaborationToolModelRepositorySVNRepository1VIVNRepositoryActivitiEngineProcessRepository\Do匚umentsRepositoryTasks,Pro匚E55instances,
History&
Reports圖5:Activiti5的組件如上圖所示,Activiti5由三種類型的組件組成,分別是:專用工具(DedicatedTools)、內容存儲工具(StoredContent)和協(xié)作工具(CollaborationTool)。專用工具包括以下:Alfresco一Alfresco公司的企業(yè)級內容管理產(chǎn)品Alfresco是一個開源的、企業(yè)級的內容管理系統(tǒng),功能包括:文檔管理協(xié)作、記錄管理、知識庫管理、Web內容管理等功能。Alfresco與Activiti的深入集成實現(xiàn)了流程及相關文檔的可視化。更重要的是Alfresco支持組織模型,能夠提供在組織結構內進行不同層次之間的流程導航。ActivitiModeler一建模器基于開源SignavioWeb流程編輯器的一個定制版本,提供了對BPMN2.0圖形化規(guī)范的支持,建模后的流程以文件格式進行存儲。ActivitiDesigner一Eclipse插件形式的建模器Activitiprobe一管理及監(jiān)控組件對流程引擎運行期實例提供管理及監(jiān)控的Web控制臺。包含部署的管理、流程定義的管理、數(shù)據(jù)庫表的檢視、日志查看、事務的平均執(zhí)行時間、失敗多次的工作等功能。ActivitiExplorer一任務管理組件提供任務管理功能和對案例、任務基于歷史數(shù)據(jù)的統(tǒng)計分析(報表)功能。Web應用程序。內容存儲工具:包括了文檔倉庫、模型倉庫、SVN倉庫、MVN倉庫和Activiti引擎。其中文檔倉庫、SVN倉庫和MVN倉庫三個組件為協(xié)作工具(ActivitiCycle)提供底層的支撐。Activiti引擎則是以前的PVM。協(xié)作工具:與jBPM4相比,Activiti5最令人矚目的特性就在于它的協(xié)作工具組件。ActivitiCycle完全是一種新類型的BPM組件。它是一個用來促進業(yè)務人員、開發(fā)人員和IT運營人員協(xié)作的Web應用程序。在現(xiàn)實的場景中,業(yè)務文檔有業(yè)務人員所持有,而軟件程序由開發(fā)團隊所管理,被部署的軟件應用則被IT管理人員所管理。三者之間不能很好的協(xié)作。我們可以想象這樣一個場景,業(yè)務經(jīng)理用文檔來維護需求和visio格式的流程圖,開發(fā)人員管理可執(zhí)行的流程和大量的Ja
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度瓷磚鋪貼施工節(jié)能減排合同4篇
- 2025年度畜牧養(yǎng)殖飼料原料供應鏈管理合同3篇
- 2025年度室內外裝飾設計與施工總承包合同模板
- 2025年度個人對個人無抵押借款合同范本8篇
- 商品房認購合同書
- 2025年度智能門禁系統(tǒng)監(jiān)控升級改造合同范本4篇
- 2025年度寵物行業(yè)數(shù)據(jù)服務與處理合同4篇
- 2025年度教育培訓機構租賃合同匯編4篇
- 2025版內蒙古自治區(qū)農(nóng)牧廳農(nóng)業(yè)科技示范園區(qū)建設與推廣合同4篇
- 2025版內墻膩子施工材料供應鏈管理合同4篇
- 電化學儲能電站安全規(guī)程
- 幼兒園學習使用人民幣教案教案
- 2023年浙江省紹興市中考科學真題(解析版)
- 語言學概論全套教學課件
- 大數(shù)據(jù)與人工智能概論
- 《史記》上冊注音版
- 2018年湖北省武漢市中考數(shù)學試卷含解析
- 測繪工程產(chǎn)品價格表匯編
- 《腎臟的結構和功能》課件
- 裝飾圖案設計-裝飾圖案的形式課件
- 護理學基礎教案導尿術catheterization
評論
0/150
提交評論