




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、沈陽新一代信息技術(shù)有限公司工作流引擎技術(shù)調(diào)研報告技術(shù)文檔董威2016/3/14目錄一、背景3二、目的3三、需求及簡介31 . 需求32. 簡介4四、詳細(xì)介紹41.Snaker42.Activiti53.JBPM64.UFLO7五技術(shù)實現(xiàn)總結(jié)8六附件9一、 背景 將業(yè)務(wù)流程的定義,審批從業(yè)務(wù)系統(tǒng)中分離出來,統(tǒng)一進(jìn)行規(guī)劃與管理。二、 目的對工作流引擎的各種實現(xiàn)技術(shù)進(jìn)行統(tǒng)一的甄別,確定適合項目需求,和現(xiàn)應(yīng)用技術(shù)進(jìn)行良好集成,學(xué)習(xí)成本相對較低的工作流引擎。三、 需求及簡介工作流是一項分離業(yè)務(wù)操作和系統(tǒng)流程的技術(shù)。工作流由實體(Entity)、參與者(Participant)、流程定義(Flow Def
2、inition)、工作流引擎(Engine) 四部分組成。Ø 實體是工作流的主體,是需要隨著工作流一起流動的物件(Object)。例如,在一個采購申請批準(zhǔn)流程中,實體就是采購申請單;在公文審批流程中,實體就是公文。Ø 參與者是各個處理步驟中的責(zé)任人,可能是人,也可能是某個職能部門,還可能是某個自動化的設(shè)備;Ø 流程定義是預(yù)定義的工作步驟,它規(guī)定了實體流動的路線。它可能是完全定義的,即對每種可能的情況都能完全確定下一個參與者,也可能是不完全定義的,需要參與者根據(jù)情況決定下一個參與者;Ø 工作流引擎是驅(qū)動實體按流程定義從一個參與者流向下一個參與者的機制前三個
3、要素是靜態(tài)的,而第四個要素是動態(tài)的,它將前三者結(jié)合起來,是工作流的核心組成元素。1 . 需求所選工作流引擎需實現(xiàn)以下功能。Ø 具有強大的流程設(shè)計器。Ø 流程定義??勺孕徐`活定義流程圖,并達(dá)到流程變化時代碼改動量盡可能少。Ø 流程表單設(shè)計靈活。Ø 流程審批節(jié)點靈活定義。Ø 流程各節(jié)點審批人定義??芍С謺?。Ø 可支持批量審批。Ø 獨立于業(yè)務(wù)系統(tǒng),需融合時簡單靈活。Ø 網(wǎng)絡(luò)資料豐富,運行效率高,學(xué)習(xí)成本相對較低。Ø 需保存每個步驟的數(shù)據(jù),方便實現(xiàn)流程的回退,撤消等操作。Ø 能對項目現(xiàn)應(yīng)用技術(shù)如spr
4、ing等進(jìn)行大力度支持。Ø 支持流程代辦。Ø 流程版本管控。優(yōu)秀工作流引擎特點:2. 簡介 目前java開源的工作流引擎有70余種。詳細(xì)介紹見下面鏈接?,F(xiàn)根據(jù)對其他技術(shù)的支持程度,網(wǎng)絡(luò)資料,設(shè)計器和學(xué)習(xí)成本幾方面考慮,對應(yīng)用相對較多的Snaker,activiti,JBPM, UFLO幾項開源引擎進(jìn)行詳細(xì)分析與調(diào)研。四、 詳細(xì)介紹1. SnakerSnaker是一個基于Java的開源工作流引擎,適用于企業(yè)應(yīng)用中常見的業(yè)務(wù)流程。本著輕量、簡單、靈巧理念設(shè)計,定位于簡單集成,多環(huán)境支持。目前最新版本為支持Spring、Jdbc、SpringJdbc、Hibernate3or4、
5、Mybatis等orm框架。 包括了依賴包,流程引擎,eclipse插件,網(wǎng)盤資料,案例,文檔,設(shè)計。Snaker架構(gòu)表設(shè)計簡單(10張核心表,涵蓋了實現(xiàn)原理的核心),流程組件簡單(包含了開始。結(jié)束,分裂,組合,自定義,任務(wù))。Snaker對外提供可擴(kuò)展的接口,支持流程設(shè)計器,節(jié)點自定義,屬性自定義,表單自定義。學(xué)習(xí)成本較低,適合在小型項目中使用。a. 優(yōu)點1). Snaker有詳細(xì)的api文檔說明,路徑: 。2). 能夠與spring進(jìn)行整合。并良好的支持springjdbc,hibernate 3/4,mybatis.3). 能夠基于spring進(jìn)行流程引擎的配置。4). 事務(wù)方
6、面可將流程引擎的事務(wù)托管給spring進(jìn)行統(tǒng)一管理。可與具體業(yè)務(wù)事務(wù)進(jìn)行統(tǒng)一集成管理。5). 數(shù)據(jù)庫支持角度,可良好的支持oracle,postgres,mysql,mssql。6). 支持子流程,時限控制,會簽,流程分支。7). 支持轉(zhuǎn)派(主辦,協(xié)辦),撤回,提取,駁回,喚醒,更新。8). 支持基于eclipse的設(shè)計器。9). 可擴(kuò)展性良好??蓴U(kuò)展組件,表單,節(jié)點。10).學(xué)習(xí)成本相對較低,且靈活。b. 實例1). 資源下載(包括源碼,eclipse插件,lib包,部署包)2). 創(chuàng)建數(shù)據(jù)庫在路徑schema下,找到并執(zhí)行schema-postgres.sql(根據(jù)不同數(shù)據(jù)庫選擇不同sql
7、)3). 部署在snaker-web路徑下,找到snaker-springmvc-0.0.1.war,將其拷貝到tomcat,webapps下,重新啟動tomcat,war包將自動解壓。4). 修改數(shù)據(jù)庫配置文件在解壓后的路徑下找到snakerWEB-INFclasses,pserties文件,修改數(shù)據(jù)庫信息。5). 啟動tomcat,訪問,即可進(jìn)入頁面,在此處可查看代辦任務(wù),查看流程實例,也可查詢或部署流程圖。6). 集成設(shè)計器將Snakersnakerflow-libseclipse插件拷貝到eclipse安裝目錄下放入dropins目錄下,重新啟動eclip
8、se。新建項目,輸入snaker即可出現(xiàn)下圖。 7). 創(chuàng)建Snaker項目及snaker 流程圖。具體說明參照文檔:2. ActivitiActiviti是一個業(yè)務(wù)流程管理(BPM)和工作流系統(tǒng),適用于開發(fā)人員和系統(tǒng)管理員。其核心是超快速,前身是jbpm3/4。它易于與 Spring集成使用。Activiti5基于jBPM4,與Alfresco的集成增加了其流程可視化與管理能力,同時通過創(chuàng)新的Activiti Cycle協(xié)作組件支持流程相關(guān)人員之間的協(xié)調(diào),最后,它加強了集成能力。下載地址:a. 優(yōu)點1) 有api文檔,路徑 2) 可以和spring進(jìn)行集成。3) 引擎本身提供form,同時也
9、支持自定義form。4) 事務(wù)方面底層基于spring事務(wù)控制5) 支持oracle,mssql,mysql等6) 支持子流程,會簽,流程分支。7) 網(wǎng)絡(luò)資源及代碼較豐富。8) 支持基于eclipse的設(shè)計器。上手比較快,界面也比較簡潔、直觀.9). Activiti最大的優(yōu)勢是采用了PVM(流程虛擬機, 流程虛擬機是一個用來構(gòu)建和執(zhí)行流程圖的簡單的java類庫。它充當(dāng)各種工作流、業(yè)務(wù)流程管理和編制流程語言的基礎(chǔ)),支持除了BPMN2.0規(guī)范之外的流程格式10).服務(wù)接口清晰, API更為簡單。b. 缺點持久化層沒有遵循JPA規(guī)范.c. 實例1). 資源下載并解壓(包括設(shè)計器文件,和war包,
10、lib包)路徑:2). 創(chuàng)建數(shù)據(jù)庫在路徑activiti-5.19.0activiti-5.19.0databasecreate下,找到并執(zhí)行如下sql(根據(jù)不同數(shù)據(jù)庫選擇不同sql,支持hsql,mssql,mysql,oracle,postgres),共25張表。3). 部署在activiti-5.19.0activiti-5.19.0wars路徑下,找到activiti-explorer.war,將其拷貝到tomcat,webapps下,重新啟動tomcat,war包將自動解壓。4). 修改數(shù)據(jù)庫配置文件在解壓后的路徑下找到activiti-explorerWEB-INFclasses,
11、pertiess文件,修改數(shù)據(jù)庫信息,配置成自己的數(shù)據(jù)庫。5). 啟動tomcat,訪問,輸入用戶名kermit,密碼kermit,即可進(jìn)入頁面。6). 集成設(shè)計器將activiti-designer-5.8.0site插件拷貝到eclipse安裝目錄下放入dropins目錄下,重新啟動eclipse。新建項目,輸入activiti即可出現(xiàn)下圖。7). 部署流程。網(wǎng)頁端部署,將xml和圖片打成zip包,應(yīng)用網(wǎng)頁版的管理à部署包功能進(jìn)行發(fā)布。8). 和業(yè)務(wù)端整合。具體整合方式獨立章節(jié)介紹。資料: 使用總結(jié):2.2. 核心組件介紹2.2.1. 關(guān)鍵對象1.
12、0; Deployment:流程部署對象,部署一個流程時創(chuàng)建。2. ProcessDefinitions:流程定義,部署成功后自動創(chuàng)建。3. ProcessInstances:流程實例,啟動流程時創(chuàng)建。 4. Task:任務(wù),在Activiti中的Task僅指有角色參與的任務(wù),即定義中的UserTask。 5.
13、 Execution:執(zhí)行計劃,流程實例和流程執(zhí)行中的所有節(jié)點都是Execution,如UserTask、ServiceTask等。2.2.2. 服務(wù)接口1. ProcessEngine:流程引擎的抽象,通過它我們可以獲得我們需要的一切服務(wù)。 2. RepositoryService:Activiti中每一個不同版本的業(yè)務(wù)流程的定義都需要使用一些定義文件,部署文件和支持?jǐn)?shù)據(jù)(例如BPMN2
14、.0 XML文件,表單定義文件,流程定義圖像文件等),這些文件都存儲在Activiti內(nèi)建的Repository中。RepositoryService提供了對 repository的存取服務(wù)。3. RuntimeService:在Activiti中,每當(dāng)一個流程定義被啟動一次之后,都會生成一個相應(yīng)的流程對象實例。RuntimeService提供了啟動流程、查詢流程實例、設(shè)置獲取流程實例變量等功能。此外它還提供了對流程部署,流程定義和流程實例的存取服務(wù)。4.
15、;TaskService: 在Activiti中業(yè)務(wù)流程定義中的每一個執(zhí)行節(jié)點被稱為一個Task,對流程中的數(shù)據(jù)存取,狀態(tài)變更等操作均需要在Task中完成。TaskService提供了對用戶Task 和Form相關(guān)的操作。它提供了運行時任務(wù)查詢、領(lǐng)取、完成、刪除以及變量設(shè)置等功能。 5. IdentityService: Activiti中內(nèi)置了用戶以及組管理的功能,必須使用這些用戶和組的信息才能獲取到相應(yīng)的Task。IdentityService提供了對Activiti 系統(tǒng)中的用戶和組的管理功能。6.
16、; ManagementService: ManagementService提供了對Activiti流程引擎的管理和維護(hù)功能,這些功能不在工作流驅(qū)動的應(yīng)用程序中使用,主要用于Activiti系統(tǒng)的日常維護(hù)。 7. HistoryService: HistoryService用于獲取正在運行或已經(jīng)完成的流程實例的信息,與RuntimeService中獲取的流程信息不同,歷史信息包含已經(jīng)持久化存儲的永久信息,并已經(jīng)被針對查詢優(yōu)化。3. JBPMJBPM,全稱是J
17、ava Business Process Management(業(yè)務(wù)流程管理),它是覆蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域的一個開源的、靈活的、易擴(kuò)展的可執(zhí)行流程語言框架。它的業(yè)務(wù)邏輯定義采用了它自己定義的JBoss jBPM Process definition language (jPdl)。jPdl認(rèn)為一個業(yè)務(wù)流程可以被看作是一個UML狀態(tài)圖。jPdl就是詳細(xì)定義了這個狀態(tài)圖的每個部分,如起始、結(jié)束狀態(tài),以及狀態(tài)之間的轉(zhuǎn)換,通過圖型化的流程定義,直觀地描述業(yè)務(wù)流程。jBPM的另一個特色是它使用Hibernate來管理它的數(shù)據(jù)庫。jBPM5和Activiti都是從jBPM4發(fā)展出來的,
18、jBPM5是JBOSS的,Activiti是原jBPM4項目負(fù)責(zé)人離開JBOSS后,在Alfresco公司推出的。jBPM5基于原先的Drools Flow,支持BPMN,通過與Drools的合并支持BAM,通過內(nèi)容倉庫增加對流程可視化的支持。由于放棄了jBPM4的PVM,引擎的可擴(kuò)展性受到損害,并且不再支持jPDL。JBPM架構(gòu)本身比較復(fù)雜,內(nèi)部實現(xiàn)也比較復(fù)雜,學(xué)習(xí)成本較高,適合于項目流程比較多,流程復(fù)雜的項目。系統(tǒng)運行和維護(hù)、升級時,流程可能需要修改、調(diào)整和跟蹤、控制的項目。a. 優(yōu)點1). 提供基于Eclipse插件開發(fā)的流程模版可視化設(shè)計器。2). 支持回退,撤銷,會簽,子流程等操作。
19、3). 支持oracle,mssql,mysql等.4). 使用hibernate來管理數(shù)據(jù)庫。b. 實例1). 資源下載 (包括源碼,eclipse插件,lib包,部署包)2). 創(chuàng)建數(shù)據(jù)庫在路徑j(luò)bpm-6.2.0.Final-installer-fulljbpm-installerdbddl-scriptspostgresql下,找到并執(zhí)行sql文件,生成數(shù)據(jù)庫表(根據(jù)不同數(shù)據(jù)庫選擇不同sql)3). 部署在snaker-web路徑下,找到snaker-springmvc-0.0.1.war,將其拷貝到tomcat,webapps下,重新啟動tomcat,war包將自動解壓。4). 修改
20、數(shù)據(jù)庫配置文件在解壓后的路徑下找到snakerWEB-INFclasses,pserties文件,修改數(shù)據(jù)庫信息。5). 啟動tomcat,訪問,即可進(jìn)入頁面,在此處可查看代辦任務(wù),查看流程實例,也可查詢或部署流程圖。6). 集成設(shè)計器將Snakersnakerflow-libseclipse插件拷貝到eclipse安裝目錄下放入dropins目錄下,重新啟動eclipse。新建項目,輸入snaker即可出現(xiàn)下圖。4. UFLOUFLO是一套由BSTEK自主研發(fā)的基于Java的流程引擎,它以Spring為基礎(chǔ)框架,采用Hibernate作為持久層,可運行于所有主流
21、程應(yīng)用服務(wù)器及流數(shù)據(jù)庫之上的輕量級流程引擎。 除公網(wǎng)資源,其他資源較少,如不采用dorado7+BDF開發(fā)框架,不建議使用。a. 優(yōu)點1). 可以和spring進(jìn)行集成。2). 支持流程分支,子流程,流程會簽流程跳轉(zhuǎn)等。3). 可以很好的支持集群。4). 網(wǎng)絡(luò)操作指南:5). 提供基于Eclipse插件開發(fā)的流程模版可視化設(shè)計器。6). 實現(xiàn)在J2EE環(huán)境下B/S應(yīng)用或C/S應(yīng)用當(dāng)中對業(yè)務(wù)流程的流程控制。7). UFLO還提供了一套基于網(wǎng)頁的流程模版設(shè)計器,網(wǎng)頁版的設(shè)計器提供了與Eclipse插件版設(shè)計器完全相同的功能。b. 缺點1). 除公網(wǎng)發(fā)布的實例代碼,網(wǎng)絡(luò)其他實例較少,使用不
22、多。使用時與BDF其他技術(shù)集成使用更快捷。c.實例五技術(shù)實現(xiàn)總結(jié)1. 開發(fā)流程a.下載相應(yīng)設(shè)計器b集成到eclipse開發(fā)工具b. 下載并部署管理端。下載相應(yīng)war包,將其部署到tomcat下(獨立部署:適用于新開發(fā)的系統(tǒng))。瀏覽器訪問,即可發(fā)布流程設(shè)計文件。也可下載發(fā)布包,將源碼文件拷貝到應(yīng)用項目路徑下(嵌入式部署:適用于現(xiàn)成系統(tǒng)表單不更改,接口調(diào)用),重新進(jìn)行配置,將其嵌入項目中。此種方式不用部署多個應(yīng)用,可和應(yīng)用項目集成在一起,方便進(jìn)行管理。部署操作參考:c. 編寫流程設(shè)計文件。在eclipse中新建相應(yīng)流程項目,利用集成好的設(shè)計器設(shè)計流程文件,包括流程圖,xml文件等。d. 將流程設(shè)計
23、文件發(fā)布到流程管理端。2. 業(yè)務(wù)整合 在管理端搭建完成后,進(jìn)行業(yè)務(wù)和流程引擎的整合。在業(yè)務(wù)端表單對應(yīng)的數(shù)據(jù)庫表設(shè)計中,添加流程id(具體流程請求編碼),和流程定義id(哪個流程,在流程設(shè)計時定義)字段。在表單提交時,先接收表單提交信息,然后根據(jù)流程定義id,啟動流程,并將流程id存入表單實體中,最后將信息存入數(shù)據(jù)庫。 六附件七數(shù)據(jù)字典1. Snaker2. Activiti Activiti使用到的表都是ACT_開頭的。ACT_RE_*:RE表示repository(存儲),RepositoryService接口所操作的表。帶此前綴的表包含的是靜態(tài)信息,如,流程定義,流程的資源(圖片,規(guī)則等)
24、。ACT_RU_*:RU表示runtime,運行時表-RuntimeService。這是運行時的表存儲著流程變量,用戶任務(wù),變量,職責(zé)(job)等運行時的數(shù)據(jù)。Activiti只存儲實例執(zhí)行期間的運行時數(shù)據(jù),當(dāng)流程實例結(jié)束時,將刪除這些記錄。這就保證了這些運行時的表小且快。ACT_ID_*:ID表示identity (組織機構(gòu)),IdentityService接口所操作的表。用戶記錄,流程中使用到的用戶和組。這些表包含標(biāo)識的信息,如用戶,用戶組,等等。ACT_HI_*:HI表示history,歷史數(shù)據(jù)表,HistoryService。就是這些表包含著流程執(zhí)行的歷史相關(guān)數(shù)據(jù),如結(jié)束的流程實例,變量,任務(wù),等等ACT_GE_*:全局通用數(shù)據(jù)及設(shè)置(general),各種情況都使用的數(shù)據(jù)。1.2、 所有表的含義序號表名說明1 act_ge_bytearra
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院能源托管項目可行性研究報告
- 2025至2030年中國電串烤式烤爐行業(yè)投資前景及策略咨詢報告
- 數(shù)據(jù)驅(qū)動下的醫(yī)療資源分配優(yōu)化策略
- 2025至2030年中國毛尖染色毛皮行業(yè)投資前景及策略咨詢報告
- 2025至2030年中國有機硅精細(xì)化工品行業(yè)投資前景及策略咨詢報告
- 陜西省咸陽市2022-2023學(xué)年高二下學(xué)期期末文科數(shù)學(xué)試題(學(xué)生版)
- 金屬制品企業(yè)面臨的行業(yè)發(fā)展趨勢與挑戰(zhàn)
- 學(xué)生主體性在初中綜合實踐活動跨學(xué)科教學(xué)中的培養(yǎng)與促進(jìn)
- 初中體育與健康跨學(xué)科教學(xué)中的評價體系構(gòu)建
- 廢鹽處理項目可行性研究報告
- 小學(xué)數(shù)學(xué)五年級下冊第三單元《分?jǐn)?shù)乘法》作業(yè)設(shè)計
- 走近核科學(xué)技術(shù)智慧樹知到期末考試答案2024年
- 血氣分析在婦產(chǎn)科的應(yīng)用
- 人行現(xiàn)金業(yè)務(wù)培訓(xùn)課件
- 2024年廣東廣州市海珠區(qū)華洲街道雇員招聘筆試參考題庫附帶答案詳解
- 金屬表面處理的安全與環(huán)保要求
- 馬拉之死藝術(shù)鑒賞
- 2024《HSK標(biāo)準(zhǔn)教程3》第3課 桌子上放著很多飲料 教案
- 中國傳統(tǒng)元素之中國紅
- 2024年臨界生輔導(dǎo)計劃及措施初中
- 會計學(xué) 第7版 課后習(xí)題及答案 徐經(jīng)長 -第1-4章
評論
0/150
提交評論