news 2026/6/2 10:53:00

别再傻傻分不清了!用Camunda 7.20.0搞定工作流里的‘或签’、‘会签’和‘比例签’

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再傻傻分不清了!用Camunda 7.20.0搞定工作流里的‘或签’、‘会签’和‘比例签’

Camunda 7.20.0工作流实战:深度解析多人审批的三种模式

在企业级应用开发中,工作流引擎扮演着至关重要的角色。Camunda作为一款开源的工作流和决策自动化平台,其强大的流程编排能力尤其适合处理复杂的审批场景。本文将聚焦Camunda 7.20.0版本中三种典型的多人审批模式——"或签"、"会签"和"比例签",通过实际案例演示如何根据业务需求选择最合适的审批规则。

1. 核心概念与业务场景

多人审批是企业流程自动化中最常见的需求之一。不同的业务场景对审批规则有着截然不同的要求:

  • 或签(Any-one Approval):只需任意一位审批人通过即可继续流程,适用于紧急事务或信任度高的场景
  • 会签(All Approval):需要所有审批人一致同意,常见于重大决策或高风险操作
  • 比例签(Percentage Approval):按设定比例通过即可,平衡了效率与风险控制

这三种模式在OA系统、财务报销、合同审批等场景中各有应用。例如:

  • 差旅审批可能采用或签模式提高效率
  • 大额采购需要会签确保集体决策
  • 项目立项可采用比例签(如2/3通过)平衡各方意见

2. 技术实现原理

Camunda通过multiInstanceLoopCharacteristicscompletionCondition两个核心配置实现多人审批逻辑。

2.1 基础配置参数

在BPMN模型中,关键变量包括:

变量名描述示例值
nrOfInstances总实例数5
nrOfCompletedInstances已完成实例数2
loopCounter当前循环计数3
elementVariable集合元素变量"assignee"

2.2 XML配置示例

<bpmn:userTask id="approvalTask" name="审批节点"> <bpmn:multiInstanceLoopCharacteristics camunda:collection="${approvers}" camunda:elementVariable="approver"> <bpmn:completionCondition xsi:type="bpmn:tFormalExpression"> ${nrOfCompletedInstances >= 1} <!-- 或签条件 --> </bpmn:completionCondition> </bpmn:multiInstanceLoopCharacteristics> </bpmn:userTask>

3. 三种模式的具体实现

3.1 或签模式实现

或签是最简单的多人审批模式,只需一个审批人通过即可:

<bpmn:completionCondition> ${nrOfCompletedInstances >= 1} </bpmn:completionCondition>

注意:实际项目中建议使用==1而非>=1,避免重复审批导致的逻辑混乱

Java代码中设置审批人列表:

List<String> approvers = Arrays.asList("user1", "user2", "user3"); variables.put("approvers", approvers);

3.2 会签模式实现

会签要求所有审批人同意,配置最为简单:

<bpmn:completionCondition> ${nrOfCompletedInstances == nrOfInstances} </bpmn:completionCondition>

典型应用场景包括:

  • 董事会决议
  • 高风险操作授权
  • 跨部门协同审批

3.3 比例签模式实现

比例签通过数学表达式实现灵活的通过率控制:

<bpmn:completionCondition> ${nrOfCompletedInstances/nrOfInstances >= 0.6} <!-- 60%通过率 --> </bpmn:completionCondition>

常见比例设置建议:

  • 简单多数:>0.5
  • 绝对多数:≥0.67
  • 超级多数:≥0.75

4. 高级应用与最佳实践

4.1 动态审批人设置

通过Java代码动态生成审批人列表:

public List<String> getDepartmentApprovers(String deptId) { // 从数据库或API获取部门审批人 return userService.findApproversByDept(deptId); }

4.2 混合审批策略

复杂业务可能需要组合多种审批模式:

  1. 第一级:部门内或签
  2. 第二级:跨部门比例签(60%)
  3. 第三级:高管会签

4.3 性能优化建议

  • 对于大规模审批人列表(>50人),考虑分批次处理
  • 使用camunda:asyncBefore="true"避免长事务
  • 监控ACT_RU_TASK表防止任务堆积

5. 决策树:如何选择审批模式

根据业务需求选择合适模式的决策流程:

  1. 是否需要所有人同意?
    • 是 → 选择会签
    • 否 → 进入下一步
  2. 是否有明确的通过比例要求?
    • 是 → 选择比例签
    • 否 → 选择或签
  3. 是否需要分级审批?
    • 是 → 组合多种模式
    • 否 → 单一模式即可

实际项目中,我们曾遇到一个采购审批流程:5万元以下用或签,5-50万用比例签(50%),50万以上需要会签。这种阶梯式设计既保证了效率又控制了风险。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/2 10:49:19

LLM智能体如何革新漏洞检测:四层过滤架构与工程实践

1. 项目概述&#xff1a;当LLM智能体遇上漏洞检测在软件开发的日常里&#xff0c;安全扫描工具发出的警报声&#xff0c;对很多开发者来说&#xff0c;可能已经从“警钟”变成了“背景噪音”。传统的静态应用安全测试工具&#xff0c;也就是我们常说的SAST&#xff0c;确实能帮…

作者头像 李华
网站建设 2026/6/2 10:48:32

NS-USBLoader终极指南:一站式Switch游戏管理与传输解决方案

NS-USBLoader终极指南&#xff1a;一站式Switch游戏管理与传输解决方案 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitcode.com/gh_…

作者头像 李华
网站建设 2026/6/2 10:45:31

分数阶求导不止于数学:它在信号处理、金融建模中的5个真实应用案例

分数阶求导不止于数学&#xff1a;它在信号处理、金融建模中的5个真实应用案例当工程师第一次看到分数阶微分方程时&#xff0c;往往会陷入困惑——这个看似抽象的数学工具&#xff0c;究竟能在实际工程中解决哪些整数阶模型无法处理的问题&#xff1f;事实上&#xff0c;从金融…

作者头像 李华
网站建设 2026/6/2 10:44:02

终极指南:免费SketchUp STL插件快速打通3D打印全流程

终极指南&#xff1a;免费SketchUp STL插件快速打通3D打印全流程 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 想要将Sketc…

作者头像 李华