本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種基于Activiti的業(yè)務(wù)流程管理方法。
背景技術(shù):
互聯(lián)網(wǎng)領(lǐng)域因其快速迭代的特性,在技術(shù)層面上最直接的痛點表現(xiàn)在:因頻繁的業(yè)務(wù)變更,導(dǎo)致相關(guān)開發(fā)人員不斷的調(diào)整代碼內(nèi)的業(yè)務(wù)邏輯。若將流程控制邏輯交由業(yè)務(wù)代碼管理,無論是前期開發(fā)還是后期迭代,開發(fā)效率太慢。
Activiti系由Tom Bayen于2010年5月發(fā)布首版的Java工作流開源工具,其主要致力于對流程的管理,工作流是由若干活動任務(wù)組成的具有一定功能的任務(wù)扭轉(zhuǎn)流,故其命名為Activity的復(fù)數(shù)Activities化簡而得。適用業(yè)務(wù)主要包括:OA、CRM、ERP等系統(tǒng)。
將業(yè)務(wù)流程交由自身代碼管理,開發(fā)成本高,后期的維護和迭代工作量大。甚至可能出現(xiàn)因耦合度太高,導(dǎo)致后期一個細小的調(diào)整,需要重新編寫流程控制代碼。要做到適應(yīng)于頻繁的業(yè)務(wù)變更,代價非常高。
現(xiàn)有的Activiti能夠通過拖拽控件,繪制流程圖,完成對流程的管理,但是不能夠很好的解決因?qū)嶋H場景導(dǎo)致的業(yè)務(wù)變更的效率問題,但其只管理相關(guān)的流程,并不能對各種業(yè)務(wù)數(shù)據(jù)進行分類管理,不利于對業(yè)務(wù)數(shù)據(jù)進行分類管理,將業(yè)務(wù)數(shù)據(jù)和Activiti結(jié)合起來使用,已經(jīng)有大量的案例,但其基本都是單一業(yè)務(wù)和Activiti結(jié)合使用,業(yè)務(wù)數(shù)量過多的情況下1:1的配置會大量的浪費資源。
因此,本領(lǐng)域技術(shù)人員亟需開發(fā)出一種能適應(yīng)多條業(yè)務(wù)線、能夠合理分類業(yè)務(wù)數(shù)據(jù)、有效管理、能將流程管理平臺與業(yè)務(wù)服務(wù)以1:N模型配置、完成業(yè)務(wù)數(shù)據(jù)的分類管理的基于Activiti的業(yè)務(wù)流程管理方法。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種基于Activiti的業(yè)務(wù)流程管理方法,該基于Activiti的業(yè)務(wù)流程管理方法能適應(yīng)多條業(yè)務(wù)線、能夠合理分類業(yè)務(wù)數(shù)據(jù)、有效管理、能將流程管理平臺與業(yè)務(wù)服務(wù)以1:N模型配置、完成業(yè)務(wù)數(shù)據(jù)的分類管理。
為解決上述技術(shù)問題,本發(fā)明提供了一種基于Activiti的業(yè)務(wù)流程管理方法,提供業(yè)務(wù)數(shù)據(jù)模塊、流程圖處理模塊、流程節(jié)點模塊及流程管理模塊,所述流程圖處理模塊包括流程圖掛載單元,所述流層節(jié)點模塊包括業(yè)務(wù)聚合單元及接口路由單元,所述流程管理模塊包括業(yè)務(wù)分發(fā)單元及activiti掛載單元;該基于Activiti的業(yè)務(wù)流程管理方法包括以下步驟:
S1:用戶根據(jù)實際業(yè)務(wù),設(shè)計整體流程,繪制對應(yīng)的業(yè)務(wù)流程圖,所述業(yè)務(wù)數(shù)據(jù)模塊判斷用戶是否提出新的業(yè)務(wù)需求,如果是,則執(zhí)行步驟S2,如果否,則結(jié)束流程;
S2:所述流程圖處理模塊將對應(yīng)的業(yè)務(wù)流程圖上傳到流程圖存儲模塊,形成多種業(yè)務(wù)操作流程;
S3:所述業(yè)務(wù)數(shù)據(jù)模塊根據(jù)對應(yīng)的業(yè)務(wù)流程圖指定任務(wù)節(jié)點的業(yè)務(wù)數(shù)據(jù)操作接口;
S4:通過直連和流程節(jié)點兩種模式,將業(yè)務(wù)數(shù)據(jù)操作接口注冊至對應(yīng)的所述業(yè)務(wù)流程圖中,實現(xiàn)流程和業(yè)務(wù)的關(guān)聯(lián),當(dāng)為流程節(jié)點模式時,所述接口路由單元服務(wù)于定位到下游的服務(wù),所述業(yè)務(wù)聚合單元將下游服務(wù)的業(yè)務(wù)數(shù)據(jù)操作接口輸出成標(biāo)準(zhǔn)的格式與流程通信;
S5:所述流程圖掛載單元將所述業(yè)務(wù)流程圖掛載至activiti引擎單元,所述業(yè)務(wù)分發(fā)單元將流程存儲模塊里不同業(yè)務(wù)流程分發(fā)至對應(yīng)的流程接口,通過一套管理平臺管理多個業(yè)務(wù)下的對應(yīng)的若干流程;
S6:流程運行模塊根據(jù)業(yè)務(wù)數(shù)據(jù)操作接口的數(shù)據(jù)及流程圖運行整個流程。
優(yōu)選地,所述業(yè)務(wù)數(shù)據(jù)模塊包括業(yè)務(wù)需求判斷單元,所述步驟S1的實現(xiàn)步驟包括:用戶根據(jù)實際業(yè)務(wù),設(shè)計整體流程,繪制對應(yīng)的業(yè)務(wù)流程圖,所述業(yè)務(wù)需求判斷單元判斷用戶是否提出新的業(yè)務(wù)需求,如果是,執(zhí)行步驟S2,如果否,則結(jié)束流程。
優(yōu)選地,所述流程圖處理模塊包括流程圖上傳單元,所述步驟S2的實現(xiàn)步驟包括:所述流程圖上傳單元將對應(yīng)的業(yè)務(wù)流程圖上傳到流程圖存儲模塊,形成多種業(yè)務(wù)操作流程。
優(yōu)選地,所述業(yè)務(wù)數(shù)據(jù)模塊包括業(yè)務(wù)需求發(fā)送單元,所述步驟S3的實現(xiàn)步驟包括:所述業(yè)務(wù)需求發(fā)送單元根據(jù)對應(yīng)的業(yè)務(wù)流程圖指定任務(wù)節(jié)點的業(yè)務(wù)數(shù)據(jù)操作接口,將對應(yīng)的業(yè)務(wù)數(shù)據(jù)發(fā)送至對應(yīng)的業(yè)務(wù)數(shù)據(jù)操作接口。
優(yōu)選地,提供流程運行監(jiān)控模塊,所述基于Activiti的業(yè)務(wù)流程管理方法還包括步驟:
步驟S7:流程運行監(jiān)控模塊監(jiān)控所述流程運行模塊運行的業(yè)務(wù)流程是否需要調(diào)整,如果需要,則返回步驟S1,否則,結(jié)束流程。
優(yōu)選地,所述流程圖處理模塊包括兩種流程設(shè)計工具:
Activiti Modeler,面向用戶人員,使用BPMN描述業(yè)務(wù)流程圖;
Ecilipse Designer,設(shè)定ecilipse的插件,定制每個業(yè)務(wù)節(jié)點的屬性。
優(yōu)選地,所述流程圖處理模塊還包括流程圖轉(zhuǎn)換輸出單元,所述業(yè)務(wù)數(shù)據(jù)模塊還包括IdentityService接口,流程圖轉(zhuǎn)換輸出單元將流程圖上傳單元上傳的業(yè)務(wù)流程圖轉(zhuǎn)換成ACT_ID表格,所述IdentityService接口操控所述ACT_ID表格,在原有業(yè)務(wù)邏輯后面添加同步到Activiti的代碼。
優(yōu)選地,在所述ACT_ID表格中,對應(yīng)的每一個業(yè)務(wù)對象添加PROCESS_INSTANCE_ID字段,通過PROCESS_INSTANCE_ID字段,查詢流程實例ID,根據(jù)流程實例ID查詢實體然后把流程對象設(shè)置到實體的一個屬性中,所述流程數(shù)據(jù)處理模塊將所述實體發(fā)送到流程運行前端。
優(yōu)選地,所述業(yè)務(wù)數(shù)據(jù)模塊還包括審批擴展單元,所述審批擴展單元指定實際用戶,驗證用戶權(quán)限,在集成業(yè)務(wù)系統(tǒng)中對用戶的流程權(quán)限進行監(jiān)聽,在所述ACT_ID表格中定義userTask_id,通過該userTask_id將通過的用戶發(fā)送至流程節(jié)點模塊,在對應(yīng)的流程節(jié)點指定通過的用戶及用戶組,當(dāng)流程執(zhí)行到一個用戶任務(wù)節(jié)點時,通過用戶或者用戶組在任務(wù)中指定的角色來創(chuàng)建一個新的用戶任務(wù)。
采用了上述方法之后,用戶根據(jù)實際業(yè)務(wù),設(shè)計整體流程,繪制對應(yīng)的業(yè)務(wù)流程圖,所述業(yè)務(wù)數(shù)據(jù)模塊判斷用戶是否提出新的業(yè)務(wù)需求,如果是,所述流程圖處理模塊將對應(yīng)的業(yè)務(wù)流程圖上傳到流程圖存儲模塊,形成多種業(yè)務(wù)操作流程;所述業(yè)務(wù)數(shù)據(jù)模塊根據(jù)對應(yīng)的業(yè)務(wù)流程圖指定任務(wù)節(jié)點的業(yè)務(wù)數(shù)據(jù)操作接口;通過直連和流程節(jié)點兩種模式,將業(yè)務(wù)數(shù)據(jù)操作接口注冊至對應(yīng)的所述業(yè)務(wù)流程圖中,實現(xiàn)流程和業(yè)務(wù)的關(guān)聯(lián),當(dāng)為流程節(jié)點模式時,所述接口路由單元服務(wù)于定位到下游的服務(wù),所述業(yè)務(wù)聚合單元將下游服務(wù)的業(yè)務(wù)數(shù)據(jù)操作接口輸出成標(biāo)準(zhǔn)的格式與流程通信;所述流程圖掛載單元將所述業(yè)務(wù)流程圖掛載至activiti引擎單元,所述業(yè)務(wù)分發(fā)單元將流程存儲模塊里不同業(yè)務(wù)流程分發(fā)至對應(yīng)的流程接口,通過一套管理平臺管理多個業(yè)務(wù)下的對應(yīng)的若干流程,流程運行模塊根據(jù)業(yè)務(wù)數(shù)據(jù)操作接口的數(shù)據(jù)及流程圖運行整個流程,如果否,則結(jié)束流程,該基于Activiti的業(yè)務(wù)流程管理方法能適應(yīng)多條業(yè)務(wù)線、能夠合理分類業(yè)務(wù)數(shù)據(jù)、有效管理、能將流程管理平臺與業(yè)務(wù)服務(wù)以1:N模型配置、完成業(yè)務(wù)數(shù)據(jù)的分類管理。
附圖說明
圖1是本發(fā)明的一種基于Activiti的業(yè)務(wù)流程管理方法的實現(xiàn)流程圖;
圖2是與圖1的步驟流程圖對應(yīng)的整體模型示意圖;
圖3是與圖1的步驟流程圖對應(yīng)的業(yè)務(wù)線、業(yè)務(wù)流程及接口服務(wù)的實施例示意圖
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用于解釋本發(fā)明,并不用于限定本發(fā)明。
實施例1
請參閱圖1至圖2,圖1是本發(fā)明的一種基于Activiti的業(yè)務(wù)流程管理方法的實現(xiàn)流程圖;圖2是與圖1的步驟流程圖對應(yīng)的整體模型示意圖。
本發(fā)明公開了一種基于Activiti的業(yè)務(wù)流程管理方法,包括以下步驟:
提供業(yè)務(wù)數(shù)據(jù)模塊、流程圖處理模塊、流程節(jié)點模塊及流程管理模塊,所述流程圖處理模塊包括流程圖掛載單元,所述流層節(jié)點模塊包括業(yè)務(wù)聚合單元及接口路由單元,所述流程管理模塊包括業(yè)務(wù)分發(fā)單元及activiti掛載單元;
S1:用戶根據(jù)實際業(yè)務(wù),設(shè)計整體流程,繪制對應(yīng)的業(yè)務(wù)流程圖,所述業(yè)務(wù)數(shù)據(jù)模塊判斷用戶是否提出新的業(yè)務(wù)需求,如果是,則執(zhí)行步驟S2,如果否,則結(jié)束流程;
S2:所述流程圖處理模塊將對應(yīng)的業(yè)務(wù)流程圖上傳到流程圖存儲模塊,形成多種業(yè)務(wù)操作流程;
S3:所述業(yè)務(wù)數(shù)據(jù)模塊根據(jù)對應(yīng)的業(yè)務(wù)流程圖指定任務(wù)節(jié)點的業(yè)務(wù)數(shù)據(jù)操作接口;
S4:通過直連和流程節(jié)點兩種模式,將業(yè)務(wù)數(shù)據(jù)操作接口注冊至對應(yīng)的所述業(yè)務(wù)流程圖中,實現(xiàn)流程和業(yè)務(wù)的關(guān)聯(lián),當(dāng)為流程節(jié)點模式時,所述接口路由單元服務(wù)于定位到下游的服務(wù),所述業(yè)務(wù)聚合單元將下游服務(wù)的業(yè)務(wù)數(shù)據(jù)操作接口輸出成標(biāo)準(zhǔn)的格式與流程通信;
S5:所述流程圖掛載單元將所述業(yè)務(wù)流程圖掛載至activiti引擎單元,所述業(yè)務(wù)分發(fā)單元將流程存儲模塊里不同業(yè)務(wù)流程分發(fā)至對應(yīng)的流程接口,通過一套管理平臺管理多個業(yè)務(wù)下的對應(yīng)的若干流程
S6:流程運行模塊根據(jù)業(yè)務(wù)數(shù)據(jù)操作接口的數(shù)據(jù)及流程圖運行整個流程。
在本實施例中,優(yōu)選的所述業(yè)務(wù)數(shù)據(jù)模塊還包括業(yè)務(wù)需求判斷單元,所述步驟S1的實現(xiàn)步驟包括:用戶根據(jù)實際業(yè)務(wù),設(shè)計整體流程,繪制對應(yīng)的業(yè)務(wù)流程圖,所述業(yè)務(wù)需求判斷單元判斷用戶是否提出新的業(yè)務(wù)需求,如果是,執(zhí)行步驟S2,如果否,則結(jié)束流程。
在本實施例中,優(yōu)選的所述流程圖處理模塊還包括流程圖上傳單元,所述步驟S2的實現(xiàn)步驟包括:所述流程圖上傳單元將對應(yīng)的業(yè)務(wù)流程圖上傳到流程圖存儲模塊,形成多種業(yè)務(wù)操作流程。
在本實施例中,優(yōu)選的所述業(yè)務(wù)數(shù)據(jù)模塊包括業(yè)務(wù)需求發(fā)送單元,所述步驟S3的實現(xiàn)步驟包括:所述業(yè)務(wù)需求發(fā)送單元根據(jù)對應(yīng)的業(yè)務(wù)流程圖指定任務(wù)節(jié)點的業(yè)務(wù)數(shù)據(jù)操作接口,將對應(yīng)的業(yè)務(wù)數(shù)據(jù)發(fā)送至對應(yīng)的業(yè)務(wù)數(shù)據(jù)操作接口。
在本實施例,提供流程運行監(jiān)控模塊,優(yōu)選的所述基于Activiti的業(yè)務(wù)流程管理方法還包括步驟:
步驟S7:流程運行監(jiān)控模塊監(jiān)控所述流程運行模塊運行的業(yè)務(wù)流程是否需要調(diào)整,如果需要,則返回步驟S1,否則,結(jié)束流程。
所述流程圖處理模塊包括兩種流程設(shè)計工具:
Activiti Modeler,面向用戶人員,使用BPMN描述業(yè)務(wù)流程圖;
Ecilipse Designer,設(shè)定ecilipse的插件,定制每個業(yè)務(wù)節(jié)點的屬性。
在本實施例中,優(yōu)選的所述流程圖處理模塊還包括流程圖轉(zhuǎn)換輸出單元,所述業(yè)務(wù)數(shù)據(jù)模塊還包括IdentityService接口,流程圖轉(zhuǎn)換輸出單元將流程圖上傳單元上傳的業(yè)務(wù)流程圖轉(zhuǎn)換成ACT_ID表格,所述IdentityService接口操控所述ACT_ID表格,在原有業(yè)務(wù)邏輯后面添加同步到Activiti的代碼。
在本實施例中,在所述ACT_ID表格中,對應(yīng)的每一個業(yè)務(wù)對象添加PROCESS_INSTANCE_ID字段,通過PROCESS_INSTANCE_ID字段,查詢流程實例ID,根據(jù)流程實例ID查詢實體然后把流程對象設(shè)置到實體的一個屬性中,所述流程數(shù)據(jù)處理模塊將所述實體發(fā)送到流程運行前端。
所述業(yè)務(wù)數(shù)據(jù)模塊還包括審批擴展單元,所述審批擴展單元指定實際用戶,驗證用戶權(quán)限,在集成業(yè)務(wù)系統(tǒng)中對用戶的流程權(quán)限進行監(jiān)聽,在所述ACT_ID表格中定義userTask_id,通過該userTask_id將通過的用戶發(fā)送至流程節(jié)點模塊,在對應(yīng)的流程節(jié)點指定通過的用戶及用戶組,當(dāng)流程執(zhí)行到一個用戶任務(wù)節(jié)點時,通過用戶或者用戶組在任務(wù)中指定的角色來創(chuàng)建一個新的用戶任務(wù)。
請參閱圖3,圖3是與圖1的步驟流程圖對應(yīng)的業(yè)務(wù)線、業(yè)務(wù)流程及接口服務(wù)的實施例示意圖,
在本實施例中,優(yōu)選的有A、B兩條業(yè)務(wù)線。因業(yè)務(wù)A和業(yè)務(wù)B有一定的耦合,根據(jù)實際場景,業(yè)務(wù)A需要拆分成兩個流程A1、A2,由于A、B業(yè)務(wù)中存在一定關(guān)聯(lián),在業(yè)務(wù)A中需要更新部分業(yè)務(wù)B的業(yè)務(wù)數(shù)據(jù)。流程A2即對A、B之間的業(yè)務(wù)數(shù)據(jù)做一次聚合操作。
實現(xiàn)過程中,先獨立完成流程圖A1、A2、B和業(yè)務(wù)數(shù)據(jù)操作接口A、B、C,此時,流程圖之間相互獨立,接口之間也相互獨立,各模塊之間實現(xiàn)解耦,流程管理平臺為所述流程管理模塊,所述流程管理模塊包括業(yè)務(wù)分發(fā)單元及activiti掛載單元,通過activiti實現(xiàn)對業(yè)務(wù)流程的管控,通過業(yè)務(wù)分發(fā)單元實現(xiàn)1:N模型,業(yè)務(wù)分發(fā)單元的下游分為兩種:第一,直接對接接口;第二對接不同業(yè)務(wù)的流程節(jié)點。所述業(yè)務(wù)分發(fā)單元將流程存儲模塊里不同業(yè)務(wù)流程分發(fā)至對應(yīng)的流程接口,通過一套管理平臺管理多個業(yè)務(wù)下的對應(yīng)的若干流程,在注冊的業(yè)務(wù)接口中,快速定位到需要調(diào)用的業(yè)務(wù)。
所述流層節(jié)點模塊包括業(yè)務(wù)聚合單元及接口路由單元,所述流程節(jié)點模塊是對業(yè)務(wù)接口層的一次聚合,因業(yè)務(wù)流程圖中某個節(jié)點的業(yè)務(wù)數(shù)據(jù)比較復(fù)雜,需要涉及到多個業(yè)務(wù)的數(shù)據(jù)管理,若交由流程與多個業(yè)務(wù)接口對接不利于對接口的管理,流程節(jié)點屬于流程和業(yè)務(wù)的中間層,只需要按標(biāo)準(zhǔn)的輸入輸出與上游的流程交互,下游可以無限的掛載新接口到流程節(jié)點上,加強了整個系統(tǒng)的擴展性,流程節(jié)點分為路由和聚合兩部分,路由服務(wù)于定位到下游的服務(wù),聚合即將下游服務(wù)的調(diào)用接口輸出成標(biāo)準(zhǔn)的格式與流程通信。
圖3中:流程A2需要調(diào)用兩個業(yè)務(wù)接口調(diào)整業(yè)務(wù)數(shù)據(jù),故引入流程節(jié)點,分別調(diào)用業(yè)務(wù)數(shù)據(jù)操作接口B、業(yè)務(wù)數(shù)據(jù)操作接口C,若業(yè)務(wù)有變更,需要第三個接口接入,則只需向流程節(jié)點上再掛載另一個業(yè)務(wù)數(shù)據(jù)操作接口即可,無需對流程圖進行修改,擴張非常靈活。
版本迭代分三種情況:改流程、改業(yè)務(wù)、流程業(yè)務(wù)都需要改,因流程和業(yè)務(wù)分離,所以在只需要改流程的情況下,對流程圖進行升級即可,無需關(guān)心業(yè)務(wù)接口是否要升級,同理,業(yè)務(wù)接口的更新也不影響流程,若在業(yè)務(wù)設(shè)計之初就存在比較大的漏洞,業(yè)務(wù)和流程都需重新升級,則按照新流程的設(shè)計模式,對接口和流程分別進行升級即可,因為實現(xiàn)了解耦,故無需擔(dān)心版本迭代所造成的關(guān)聯(lián)性異常,可以快速的完成版本迭代。
采用了上述方法之后,用戶根據(jù)實際業(yè)務(wù),設(shè)計整體流程,繪制對應(yīng)的業(yè)務(wù)流程圖,所述業(yè)務(wù)數(shù)據(jù)模塊判斷用戶是否提出新的業(yè)務(wù)需求,如果是,所述流程圖處理模塊將對應(yīng)的業(yè)務(wù)流程圖上傳到流程圖存儲模塊,形成多種業(yè)務(wù)操作流程;所述業(yè)務(wù)數(shù)據(jù)模塊根據(jù)對應(yīng)的業(yè)務(wù)流程圖指定任務(wù)節(jié)點的業(yè)務(wù)數(shù)據(jù)操作接口;通過直連和流程節(jié)點兩種模式,將業(yè)務(wù)數(shù)據(jù)操作接口注冊至對應(yīng)的所述業(yè)務(wù)流程圖中,實現(xiàn)流程和業(yè)務(wù)的關(guān)聯(lián),當(dāng)為流程節(jié)點模式時,所述接口路由單元服務(wù)于定位到下游的服務(wù),所述業(yè)務(wù)聚合單元將下游服務(wù)的業(yè)務(wù)數(shù)據(jù)操作接口輸出成標(biāo)準(zhǔn)的格式與流程通信;所述流程圖掛載單元將所述業(yè)務(wù)流程圖掛載至activiti引擎單元,所述業(yè)務(wù)分發(fā)單元將流程存儲模塊里不同業(yè)務(wù)流程分發(fā)至對應(yīng)的流程接口,通過一套管理平臺管理多個業(yè)務(wù)下的對應(yīng)的若干流程,流程運行模塊根據(jù)業(yè)務(wù)數(shù)據(jù)操作接口的數(shù)據(jù)及流程圖運行整個流程,如果否,則結(jié)束流程,該基于Activiti的業(yè)務(wù)流程管理方法能適應(yīng)多條業(yè)務(wù)線、能夠合理分類業(yè)務(wù)數(shù)據(jù)、有效管理、能將流程管理平臺與業(yè)務(wù)服務(wù)以1:N模型配置、完成業(yè)務(wù)數(shù)據(jù)的分類管理。
同時,應(yīng)當(dāng)理解的是,以上僅為本發(fā)明的優(yōu)選實施例,不能因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效實現(xiàn)方法,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。