【Camunda六】Camunda实现会签和或签
一、知識點
會簽:指同一個審批節點設置多個人,如ABC三人,三人會同時收到審批,需全部同意之后,審批才可到下一審批節點;
或簽:指同一個審批節點設置多個人,如ABC三人,三人會同時收到審批,只要其中任意一人審批即可到下一審批節點。
所以不管是會簽還是或簽它都是多實例節點,而會簽又可以分為并行與串行。
三條垂直線表示實例將并行執行,而三條水平線表示順序【串行】執行。
- nrOfInstances : 實例總數
- nrOfActiveInstances:當前活動的實例的數量。對于串行而言該值始終為1
- nrOfCompletedInstances:已經完成的實例數
- loopCounter 循環計數器
二、實現或簽
?這樣設置完后該節點就是多實例節點了,點擊該節點后可以看到需要填寫一些參數
?Loop Cardinality:循環基數,表示會簽的人數。
Collection:集合。會簽人數的集合,通常為list,和loop cardinality二選一。
Element Variable:元素變量。選擇Collection時必選,為collection集合每次遍歷的元素。
Completion Condition:完成條件。比如我們這里設置nrOfCompletedInstances == 1
具體把審批人變量的值設置到節點上還是得靠Assignee,所以注意上圖的參數設置。
部署流程定義和啟動流程請參考之前的博文,就不贅述了。?
public ResultReturn startProcessInstanceByKey(String processDefinitionKey, String businessKey,String initiator) {try {Map<String,Object> map = new HashMap<>();//設置流程發起人identityService.setAuthenticatedUserId("initiator");List<String> userList = new ArrayList<>(4);userList.add("userOne");userList.add("userTwo");userList.add("userThree");map.put("userList",userList);ProcessInstance processInstance=runtimeService.startProcessInstanceByKey(processDefinitionKey,businessKey,map);if (ObjectUtil.isNull(processInstance)) {return ResultReturnUtil.error(ResponseEnums.PROCESS_INSTANCE_START_FAIL);} else {String processInstanceId = processInstance.getProcessInstanceId();return ResultReturnUtil.success(processInstanceId);}}catch (Exception e){log.error(e.getMessage());throw new ProcessException(ResponseEnums.PROCESS_INSTANCE_START_FAIL.getMsg());}}然后發起流程
?來到Camunda監控平臺看一下
?我們去模擬審批一次
?回到監控平臺,可以發現該流程實例已經完成了
?三、實現會簽
前文也提到會簽和或簽只是該節點的完成條件不一樣。
?意思就是當已完成實例數等于實例總數該節點就算完成
${nrOfInstances == nrOfCompletedInstances}總結
以上是生活随笔為你收集整理的【Camunda六】Camunda实现会签和或签的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于表单验证中成功则跳转到指定页面否则不
- 下一篇: ps-色彩模式与图像色彩调整