当前位置: 首页 > news >正文

【Flowable | 第四篇】flowable工作流多任务实例节点实现会签/或签

在这里插入图片描述

文章目录

  • 5.flowable工作流多任务实例节点实现会签/或签
    • 5.1会签/或签概念
    • 5.2多实例配置说明
    • 5.3会签例子
      • 5.3.1用户候选人配置
      • 5.3.2多实例配置
      • 5.3.3执行监听器配置
      • 5.3.5测试

5.flowable工作流多任务实例节点实现会签/或签

5.1会签/或签概念

  1. 我们在本篇中,将使用多任务实例实现会签和或签功能
  2. 会签:多个用户去执行同一个任务,需要全部用户执行完,才会放行
  3. 或签:多个用户去执行同一个任务,只要有一个用户执行完,就可以放行

5.2多实例配置说明

image-20240717221006000

  1. 多任务实例类型:

    1. 无:该节点只会创建一个实例
    2. 串行:表示该任务节点的多个实例需要按照顺序一个接一个地执行(该节点设置的审批人一个提交,下一个审批人收到)
    3. 并行:表示该任务节点的多个实例可以同时执行(该节点设置的审批人可以同时审核)
  2. 集合、变量、完成条件

    1. 集合:有多少个元素,就会创建多少个任务实例(指定用于创建多实例的数据源,通过执行监听器,将候选人添加到流程变量中,再从流程变量中获取

    2. 变量:集合中的每一个元素的命名

    3. 完成条件:会签和或签的完成条件

      1. nrOfCompletedInstances: 完成的任务实例数
      2. nrOfInstances: 总共生成的任务实例数(根据会签、或签指定的人数生成相应的任务数)
      3. nrOfActiveInstance: 未完成实例的数目
      4. loopCounter: 循环计数器,办理人在列表中的索引

      当是或签时,直接固定配置: ${nrOfCompletedInstances>=1} 即可

      当是会签时,固定配置: ${nrOfCompletedInstances==nrOfInstances} 即可

  3. 任务人员分配:${变量名},从多任务实例配置的变量取!

    image-20240717221051285

5.3会签例子

5.3.1用户候选人配置

image-20240717221248751

5.3.2多实例配置

image-20240717221410818

5.3.3执行监听器配置

image-20240717221502846

/*** @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测试

  1. 发起请假申请流程,查看流程图,同一任务节点有多个实例:

image-20240717222325504

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

    image-20240717222800394

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

http://www.lryc.cn/news/401694.html

相关文章:

  • 解决C#读取US7ASCII字符集oracle数据库的中文乱码
  • Linux驱动开发中设备节点、虚拟节点、逻辑节点之间的区别与关系
  • 【iOS】——ARC源码探究
  • ubuntu服务器安装labelimg报错记录
  • Transformer中Decoder的计算过程及各部分维度变化
  • QT实现滑动页面组件,多页面动态切换
  • 使用Python-docx库创建Word文档
  • C# 设计一个可变长度的数据通信协议编码和解码代码。
  • 【MATLAB库函数系列】MATLAB库函数pwelch之功率谱估计的详解及实现
  • 科技出海|百分点科技智慧政务解决方案亮相非洲展会
  • Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关
  • Qt窗口程序整理汇总
  • 简单实现一个本地ChatGPT web服务(langchain框架)
  • Elasticsearch-多边形范围查询(8.x)
  • Kotlin Misk Web框架
  • 【设计模式之美】【建造型】工厂模式:通过面向接口编程思路,串起业务流程
  • AI算法19-偏最小二乘法回归算法Partial Least Squares Regression | PLS
  • live555关于RTSP协议交互流程
  • Centos7 安装私有 Gitlab
  • 浅谈数学模型在UGC/AIGC游戏数值配置调参中的应用(AI智能体)
  • 第T5周:使用TensorFlow实现运动鞋品牌识别
  • 网络编程学习之tcp
  • 前端XMLHttpRequest、Fetch API、Axios实现文件上传、下载方法及后端Spring文件服务器处理方法
  • STM32智能交通监测系统教程
  • 【利用Selenium+autoIt实现文件上传】
  • python join
  • cython加速python代码
  • React@16.x(60)Redux@4.x(9)- 实现 applyMiddleware
  • level 6 day1 Linux网络编程之网络基础
  • PostgreSQL UPDATE 命令