新疆炒菜哥李健教做新疆菜网站百度账号一键登录

文章目录
5.flowable工作流多任务实例节点实现会签/或签
5.1会签/或签概念
- 我们在本篇中,将使用多任务实例实现会签和或签功能
 - 会签:多个用户去执行同一个任务,需要全部用户执行完,才会放行
 - 或签:多个用户去执行同一个任务,只要有一个用户执行完,就可以放行
 
5.2多实例配置说明

-  
多任务实例类型:
- 无:该节点只会创建一个实例
 - 串行:表示该任务节点的多个实例需要按照顺序一个接一个地执行(该节点设置的审批人一个提交,下一个审批人收到)
 - 并行:表示该任务节点的多个实例可以同时执行(该节点设置的审批人可以同时审核)
 
 -  
集合、变量、完成条件
-  
集合:有多少个元素,就会创建多少个任务实例(指定用于创建多实例的数据源,通过执行监听器,将候选人添加到流程变量中,再从流程变量中获取)
 -  
变量:集合中的每一个元素的命名
 -  
完成条件:会签和或签的完成条件
- nrOfCompletedInstances: 完成的任务实例数
 - nrOfInstances: 总共生成的任务实例数(根据会签、或签指定的人数生成相应的任务数)
 - nrOfActiveInstance: 未完成实例的数目
 - loopCounter: 循环计数器,办理人在列表中的索引
 
当是或签时,直接固定配置: ${nrOfCompletedInstances>=1} 即可
当是会签时,固定配置: ${nrOfCompletedInstances==nrOfInstances} 即可
 
 -  
 -  
任务人员分配:${变量名},从多任务实例配置的变量取!

 
5.3会签例子
5.3.1用户候选人配置

5.3.2多实例配置

5.3.3执行监听器配置

/*** @Author haipeng_lin* @Mailbox haipeng_lin@163.com* @Date 2024/7/17 22:02* @Description 多实例任务监听器*/
@Component
@Slf4j
public class MultiInstanceListener implements ExecutionListener {@Overridepublic void notify(DelegateExecution execution) {FlowElement element = execution.getCurrentFlowElement();if (element instanceof UserTask) {UserTask userTask = (UserTask) element;List<String> candidateUsers = userTask.getCandidateUsers();// 多任务时,每个任务都会执行一次这个监听器,所以更新、插入操作需要小心,避免重复操作Object flag = execution.getVariable(userTask.getId().concat("_approverList"));if (flag==null) {log.info("candidateUsers value: {}", candidateUsers.toString());// userTask.getId() 就是节点定义ID,拼上它,可以解决一个流程里面多个审批节点问题execution.setVariable(userTask.getId().concat("_approverList"), candidateUsers);}}}
}
 
5.3.5测试
- 发起请假申请流程,查看流程图,同一任务节点有多个实例:
 

-  
任意一个组长审批节点 审批提交

 -  
如图:需要全部节点审批完,才可以到达部门审批节点

 
