背景
由於流程引擎的需求較多,最近出現一個不定長的有序審批需求,之前一直做的都是最基礎的流程審批,一下子被難住了,查了好多資料,大概確定方向是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。
// 待補充