Springcloud項目集成activiti工作流(一)環境搭建和簡單的demo

最近項目出現一個應用場景,在加油站有很多用戶使用微信、支付寶支付,但是由於網絡等問題會出現用戶支付成功,但是後臺未到賬的情況。爲了補救這種問題,需要進行一系列的審批審覈操作。

(1)加油站員工對用戶支付成功的手機界面進行拍照,然後上傳,提交給客服人員。也可以是對有爭議的交易進行提交。

(2)客服人員對照片的清晰度和有效性進行審覈,然後繼續提交給運維。

(3)運維人員根據審覈後的照片對這筆交易進行覈查,覈查通過後在報表中進行修改和確認到賬。然後提交給財務。

(4)財務對這筆交易在系統中進行確認進行打款。然後提交給財務主管。

(5)財務主管確認後對這筆交易再次覈對,然後提交給客戶方的財務。

(6)客戶方的財務確認,對這筆交易進行覈銷。

這一現實需求考慮到使用activiti工作流來實現。下面將在我們原來的springcloud的項目中新建一個moudle,命名爲example-activiti。話不多少直接開始。

1,file--》new moudle,選擇spring initializr。

2,填寫項目相關信息,注意紅框部分的填寫。

3,選擇eureka client。

4,這裏的路徑一定不能選錯。

5,項目建成的目錄結構如下。

6,把原來創建的web或者service的pom文件和properties文件複製一份過來,刪除掉無用的引用,並且修改項目名即可。

7,安裝actibpm插件。file--》plugin--》搜索actiBPM安裝即可。

8,安裝後要修改一些配置,防止編輯的流程圖亂碼。

9,加上一行-Dfile.encoding=UTF-8就可以了。

10,添加activiti和數據庫的依賴。新建一個數據庫,表格會自動生成。在配置文件中加入數據庫的連接配置。

11,下面幾個步驟一定要做,要不然啓動報錯。因爲springboot2.0不能與activiti6.0.0直接集成使用,因爲activiti6.0.0出來的時候springboot2.0還沒有出來。

(1)springboot啓動類註解上增加以下內容。

(2)在配置文件中增加以下配置。

(3)項目的resource目錄下新建一個processess文件夾。file-->new-->directory

(4)在processes裏創建一個bpmnfile文件,隨便創建一個即可。(不創建也可以,在配置文件中配置的spring.activiti.check-process-definitions=false就是不檢查這個文件,我沒有測試,最好還是隨便創建一個吧)

(5)把右側的圖標直接拖進來即可。

(6)把光標懸停的圖標的中心中,然後等變化了以後拖拽就可以連線了。然後完成繪製。此時啓動項目就不會報錯了。

12,新建一個config包,並創建一個配置類,防止流程圖中文亂碼。

13,在processes裏繪製一個流程圖。中間步驟都選擇的是usertask。注意要點擊空白處,給你的流程命名和id。

(1)點擊空白處設置id和name。

(2)複製一份shenhe.bpnm文件,並重命名爲shenhe.xml。修改裏面的值。這裏是因爲不知道爲什麼,直接修改bpnm裏的不生效。然後把bpnm刪除掉,把shenhe.xml複製一份,重新命名shenhe.bpnm。

14,啓動eureka和activity兩個項目,會在數據庫中自動生成27張表。

15,activiti默認的ID生成策略在高併發場景下會出現ID重複的情況,因此在高併發場景下建議採用UUID的策略。修改activiti配置文件,增加以下語句,並增加IdGen類。

16,創建controller,service,impl包,準備進行簡單測試。

17,新建ActivitiController。

18,新建service接口和實現。

19,打開ie請求接口的測試地址,或者寫個test也可以。

20,多次請求,返現每次請求,都會多一項任務。

補充介紹:

(一)配置文件詳解。

(1) spring.activiti.database-schema-update。databaseSchemaUpdate配置項可以設置流程引擎啓動和關閉時數據庫執行的策略。 

false:false爲默認值,設置爲該值後,Activiti在啓動時,會對比數據庫表中保存的版本,如果版本不匹配時,將在啓動時拋出異常。

true:設置爲該值後,Activiti會對數據庫中所有的表進行更新,如果表不存在,則Activiti會自動創建。

create-drop:Activiti啓動時,會執行數據庫表的創建操作,在Activiti關閉時,執行數據庫表的刪除操作。

drop-create:Activiti啓動時,執行數據庫表的刪除操作在Activiti關閉時,會執行數據庫表的創建操作。

(2)spring.activiti.history-level.保存歷史數據級別設置爲full最高級別,便於歷史數據的追溯spring.activiti.history-level=full.

none:不保存任何的歷史數據,因此,在流程執行過程中,這是最高效的。

activity:級別高於none,保存流程實例與流程行爲,其他數據不保存。

audit:除activity級別會保存的數據外,還會保存全部的流程任務及其屬性。audit爲history的默認值。

full:保存歷史數據的最高級別,除了會保存audit級別的數據外,還會保存其他全部流程相關的細節數據,包括一些流程參數等。

(3)spring.activiti.check-process-definitions.關閉activiti自動部署(使用流程設計器部署,不使用具體文件訪問方式)spring.activiti.check-process-definitions=false.

(二)自動生成的表的作用。

 

本篇介紹了springboot+IDEA使用activiti工作流的簡單環境搭建。下一篇將繼續詳細介紹。

關注公衆號:直立行走的程序猿

公衆號回覆springcloud可獲得git下載地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章