付曉明
摘要: 實例講解如何集成activiti工作流引擎到SpringMVC、Hibernate框架下的業(yè)務(wù)管理系統(tǒng)中,并脫離activiti的用戶、表單模塊,使用獨立設(shè)計的用戶角色模型、表單模型設(shè)置流程節(jié)點,方便業(yè)務(wù)系統(tǒng)的用戶模型和表單模型升級。
關(guān)鍵詞: activiti ;工作流引擎;Java語言
中圖分類號:TP311? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)26-0235-02
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
企業(yè)業(yè)務(wù)管理系統(tǒng)包含了各種審批流程,所以必須集成工作流引擎以完成審批功能,Activities作為開源的工作流引擎被廣泛應(yīng)用到各業(yè)務(wù)系統(tǒng),使業(yè)務(wù)系統(tǒng)更加專注于復(fù)雜業(yè)務(wù)邏輯的設(shè)計與實現(xiàn),同時工作流引擎的開源特性也使系統(tǒng)在工作流引擎的優(yōu)化升級簡單快捷。
1需求背景
本管理系統(tǒng)采用J2EE開發(fā)架構(gòu),包括SpringMVC及Hibernate,WEB前端使用的dwzUI、JQuery。由于Activiti的用戶與表單模型無法滿足本系統(tǒng)要求,故使用本系統(tǒng)的用戶角色管理模塊和表單管理模塊與工作流集成,達(dá)到在任意流程節(jié)點上靈活設(shè)置角色與表單的效果。
2集成方法
2.1創(chuàng)建數(shù)據(jù)庫
由于工作流引擎自帶一套數(shù)據(jù)庫表,需要使用引擎提供的sql文件在業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫中生成這些表,引擎提供了各種類型數(shù)據(jù)庫的腳本,本系統(tǒng)選擇的是oracle的sql文件,集成的Activiti是5.15版本,源碼中找到database\activiti.oracle.create.history.sql文件,并在oracle中生成表,因為本系統(tǒng)不使用工作流自帶的用戶模型,所以不需要執(zhí)行腳本activiti.oracle.create.identity.sql。
2.2配置XML文件
本系統(tǒng)采用SpringMVC框架,將Activiti的配置文件引入到applicationContext.xml中,activiti.xml放到resources下,并處理節(jié)點中文亂碼問題。
本系統(tǒng)使用Maven管理項目,需要將所有jar包上傳到maven-jar路徑下,在pom.xml文件
2.3上傳依賴文件
解壓activiti-explorer.war文件,將其中的api、editor、explorer、libs文件夾依次上傳到webapp目錄下,并將WEB-INF\classes下的editor.html、stencilset.json文件放到resources目錄下,activiti的jar包在activiti的lib目錄下,batik的jar包在sactiviti-explorer解壓后的WEB-INF\lib下,都需要拷貝到maven-jar路徑下。至此,所有開發(fā)環(huán)境及準(zhǔn)備工作都已完成。
3流程管理
為了適應(yīng)流程隨著業(yè)務(wù)變動而變化,滿足業(yè)務(wù)人員對流程進(jìn)行增刪改操作。本系統(tǒng)中設(shè)計了流程管理模塊,能夠?qū)崿F(xiàn)在線流程設(shè)計、任務(wù)節(jié)點處理人及表單設(shè)置、流程啟用、流程查詢等功能。
首先,在系統(tǒng)中創(chuàng)建流程模型的實體類,通過web.xml文件中配置的流程設(shè)計器重定向功能,調(diào)用流程設(shè)計器在線設(shè)計流程,流程模型的屬性必須包含流程KEY、流程名稱,在設(shè)計器中必填的ID、流程唯一標(biāo)識一般與流程KEY相同,設(shè)計完成保存流程后,引擎自動生成一個XML文件和一個流程圖片,xml文件名是流程名稱.bpmn20.xml,圖片名是流程名稱.流程KEY.png,這兩個文件都以blob的格式保存在ACT_GE_BYTEARRAY表中,表ACT_RE_MODEL中保存的是模型信息,當(dāng)設(shè)計完模型后,就可以調(diào)用repositoryService.saveModel(模型對象)來生成一個流程定義,相當(dāng)于發(fā)布了一個新版本的流程定義,同時在表ACT_RE_DEPLOYMENT、ACT_RE_PROCDEF中各生成一條數(shù)據(jù),表示當(dāng)前最新的流程定義,有用戶發(fā)起該流程時,使用的也是最新的流程定義。
流程定義都設(shè)置好后,該流程還需要設(shè)置表單和處理人,本系統(tǒng)的設(shè)計支持各任務(wù)節(jié)點獨立設(shè)置表單和處理人,通過讀取bpmn20.xml文件,解析流程的節(jié)點信息,展示到頁面中,對每個節(jié)點進(jìn)行設(shè)置,如圖1:
在這里可以為每個節(jié)點設(shè)置表單、用戶角色和處理人過濾功能。用戶角色成員都包含服務(wù)部門屬性,可以通過過濾設(shè)置,對指定節(jié)點設(shè)置處理人員范圍,例如按起草人過濾、按上一節(jié)點處理人過濾、按參數(shù)過濾等,其中按起草人過濾最常用,在流程流轉(zhuǎn)的時候,可以通過獲取流程定義次節(jié)點的處理人角色的設(shè)置,篩選出來用戶,流程根據(jù)用戶信息進(jìn)行流轉(zhuǎn),為任務(wù)節(jié)點設(shè)置處理人。代碼如下:
這樣就可以脫離activiti的用戶和表單模型,設(shè)計符合本系統(tǒng)需求的用戶角色模型和表單模型。使用當(dāng)前web前端技術(shù),設(shè)計出來表單設(shè)計器,使用戶在瀏覽器中拖拽web控件,就可以設(shè)計簡單表單(無復(fù)雜業(yè)務(wù)邏輯),在用戶啟動流程的時候,調(diào)用activiti提供的接口即可。
4結(jié)語
至此,完成activit工作流引擎與業(yè)務(wù)管理系統(tǒng)的集成,并使用模塊化設(shè)計,成了一個獨立于任何業(yè)務(wù)支持工作流引擎管理的系統(tǒng)框架。
【通聯(lián)編輯:唐一東】