1. 程式人生 > 實用技巧 >記camunda序列會籤的使用(同節點多人順序審批)

記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。

// 待補充