工作流知識:
我們主要使用場景一個是OA,一個是ESB接口流程編排
一.選型:activiti6.0
原因:1.比較穩定
2.集成springboot
3.相比於flowable缺少一些高級功能目前用不到,也更加複雜,但是activiti6可以升級爲flowable,而且學習文檔比較多
二.接口和表:
-
RepositoryService:提供一系列管理流程部署和流程定義的API。
-
RuntimeService:在流程運行時對流程實例進行管理與控制。
-
TaskService:對流程任務進行管理,例如任務提醒、任務完成和創建任務等。
-
IdentityService:提供對流程角色數據進行管理的API,這些角色數據包括用戶組、用戶及它們之間的關係。
-
ManagementService:提供對流程引擎進行管理和維護的服務。
-
HistoryService:對流程的歷史數據進行操作,包括查詢、刪除這些歷史數據。
-
FormService:表單服務。
-
act_ge_ 通用數據表,ge是general的縮寫
-
act_hi_ 歷史數據表,hi是history的縮寫,對應HistoryService接口
-
act_id_ 身份數據表,id是identity的縮寫,對應IdentityService接口
-
act_re_ 流程存儲表,re是repository的縮寫,對應RepositoryService接口,存儲流程部署和流程定義等靜態數據
-
act_ru_ 運行時數據表,ru是runtime的縮寫,對應RuntimeService接口和TaskService接口,存儲流程實例和用戶任務等動態數據
三.一個簡單的審批流程:
0:設置流程發起人:indentityService.setAuthenticatedUserId();
-
新增act_ru_execution,act_ru_task;流程實例和執行實例(act_ru_execution) act_ru_execution表parentId爲空就是流程實例,parentId不爲空就是執行實例
-
act_ru_task也會相應的產生一條用戶數據
-
查詢個人任務: select distinct RES.* from act_ru_task
-
完成任務:自定義權限校驗,每一個執行節點執行完都是刪除本節點,新增下一節點的任務,會更新act_ru_execution的ACT_ID爲新的任務,當所有的任務都執行完act_ru_task,act_ru_execution都會刪除
四.常用功能:
1.獲取流程圖(高亮節點)
2.流程變量(全局變量和局部變量act_ru_variable): 流程變量的作用域範圍是只對應一個流程實例。也就是說各個流程實例的流程變量是不相互影響的。流程實例結束完成以後流程變量還保存在數據庫中
3.網關:排他網關(執行一個流程),
並行網關(執行多個流程 :分支和匯聚)
4.任務分配(個人任務和組任務 ):
4.1:定義bpmn文件時候直接分配 userId
4.2:使用全局流程變量${userId}
4.3:使用taskListener類。通過任務認領解決歷史表沒有assignerId的bug
5.監聽器
6.通過processInstanceHelper擴展助手:記錄日誌,啓動流程前權限校驗等等(可以獲得流程定義信息和實例名稱等信息)
7.流程定義掛起,激活,定時器掛起
8.手動觸發流程執行:通過runtimeService.triggre(執行實例ID);任務節點不能往下走會報錯可以刪除act_ru_task也可以跑
9.接受任務:通過trigger觸發實例往下跑,因爲接受任務的act_ru_task爲空,可以用來做一些郵件通知
10.表單(動態,外置)引擎(formService):
10.1 定義表單:開始事件和任務上設置表單
10.2 獲取表單信息
10.3 設置表單屬性