記camunda序列會籤的使用(同節點多人順序審批)
背景
由於流程引擎的需求較多,最近出現一個不定長的有序審批需求,之前一直做的都是最基礎的流程審批,一下子被難住了,查了好多資料,大概確定方向是camunda的會籤,但資料又有些欠缺。
後來在看並行會籤的時候發現了這個功能,大致實現的功能是:某一個節點,可以選擇多個不同的審批人,按照順序審批下去,最後一個人審批通過則通過
繪圖
繪圖工具拿了Camunda Modeler,這邊摘取其中一個節點作為示例。
如圖,流程從發起申請開始,到達領導審批節點,領導審批節點會存在多個審批人,且需要按照順序,若有一個人不通過,則流程返回發起申請,否則流程完結。
流程圖
序列審批節點
選擇如圖橫著的三條槓,左側豎著的是並行
會籤引數
主要引數見右側
Collection:指集合名稱(所有需要審批人的標識列表)
Element Variable:集合內的元素變數(當處於某個審批人時,該變數裡存的會是當前審批人的標識)
Completion Condition:向下流轉的條件(這邊設定了未完成的審批=0或達成拒絕的條件時向下流轉)
注意
需要注意的是,右側的Assignee,Candidate Users,Candidate Groups依然按需填寫,按照負責人/歸屬使用者/歸屬組等條件查詢時依然需要。
若採用Assignee的話,填寫上一步中的Element Variable欄位的內容,即可獲取當前審批人。
會籤自動生成的欄位
處於會籤節點時,該task會自動生成以下幾個欄位(可用於上述作為節點完成的判斷條件),欄位與任務完成時塞入的map同一層級:
nrOfInstance
例項的數目nrOfCompletedInstances
完成例項的數目nrOfActiveInstance
未完成例項的數目loopCounter
迴圈計數器,辦理人在列表中的索引。
程式碼
程式碼邏輯與普通的流程處理無差,只是在流轉到序列審批節點時,需要將Collection中的欄位傳入map中如何執行complete。
// 待補充