




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