前言
在上文工作流流程引擎 Activity 介紹與實踐 中已經(jīng)簡單介紹過Activity工作流框架與簡單的示例,那么現(xiàn)在開始講解怎么在業(yè)務(wù)中使用Activity框架。
原生的不足
Activiti自己維護一套用戶信息,未與業(yè)務(wù)系統(tǒng)的用戶關(guān)聯(lián)起來
表單與流程綁定缆蝉,存儲在Activiti自己表中,無法與業(yè)務(wù)表單進行關(guān)聯(lián)
需要經(jīng)過2步操作(簽收與辦理)才能完成一個任務(wù)
業(yè)務(wù)操作未與流程操作分離,如完成任務(wù)前需要更新業(yè)務(wù)狀態(tài)
架構(gòu)圖
關(guān)聯(lián)業(yè)務(wù)系統(tǒng)用戶
實現(xiàn)方式是部署流程時寫入角色信息笼裳,這樣導(dǎo)入流程后可以讀取節(jié)點的所有信息包括跟節(jié)點關(guān)聯(lián)的角色(執(zhí)行者)。在頁面上重新選擇執(zhí)行者的時候系統(tǒng)會重新生成綁定了角色信息的xml部署粱玲。
可以查詢到用戶組躬柬。
業(yè)務(wù)實現(xiàn)一個CustomGroupEntityManager,繼承GroupEntityManager這個類抽减,重寫findGroupsByUser()方法允青。然后根據(jù)傳入的用戶名返回用戶所在角色的信息。
動態(tài)配置表單
流程每個節(jié)點的表單都會有點不同卵沉,所以能夠動態(tài)地配置表單是很常見的需求颠锉。
結(jié)構(gòu)圖
配置每個表單的編碼標題和訪問路徑
配置每個表單是否可見與是否可編輯
自動派單
上文說過任務(wù)有簽收和辦理兩步,這在操作上有點不方便史汗,我們?nèi)粘5膶徟到y(tǒng)都是上一個節(jié)點的人辦理好就自動流轉(zhuǎn)到下一個節(jié)點而且辦理人也是確定的木柬。這就相當(dāng)于是自動簽收。
這里以一個簡單的FIFO(先進先出)的輪詢規(guī)則來輪詢執(zhí)行者角色的辦理人
使用策略模式來編寫派單策略
集成腳本引擎
Activiti 內(nèi)部充斥著各種各樣的事件淹办,每個動作后面都全產(chǎn)生一個事件眉枕。所以我們需要定義全局事件監(jiān)聽器,截獲所有事件。再分派給具體handler進行處理速挑。我們使用流程腳本就可以做到業(yè)務(wù)與平臺框架的分離谤牡,在流程流轉(zhuǎn)的時候執(zhí)行腳本的代碼去完成業(yè)務(wù)的操作。
常見使用場景:流轉(zhuǎn)到某個節(jié)點就改變訂單相應(yīng)的狀態(tài)姥宝。
后記
以上介紹了一些業(yè)務(wù)系統(tǒng)上一些比較良好的Activity實踐翅萤。如果有興趣可以查看相關(guān)的書籍更深一步地學(xué)習(xí),推薦這本Activity實踐以及社區(qū)