# 会签案例
会签概念: 当一个审批节点或任务需要多个参与者共同处理时,系统根据预设的规则来决定该节点是否通过以及何时流转到下一步的机制。
简单来说,就是“多人共同签字审批”的数字化体现。它在OA系统、BPM(业务流程管理)或ERP系统中非常常见,主要用于需要集体决策、多部门协同或风险控制的业务场景。
# 常见模式
会签的核心在于“汇总规则”,即系统如何判定多人操作后的最终结果。常见的模式包括:
全部通过(And 逻辑 / 严格会签)
规则:所有指定的参与人都必须同意(或通过),该节点才算通过,流程才能继续。
场景:高风险合同盖章、重大项目立项、财务预算审批。只要有一人否决,流程即驳回。
任一通过(Or 逻辑 / 竞争会签)
规则:只要其中有任意一人处理(同意)了,该节点即通过,流程继续,后续其他人的待办自动取消。
场景:任务抢单、多客服接待(谁先响应算谁的)、备用审批人机制。
按票数/比例通过(阈值会签)
规则:达到设定的同意票数或百分比即可通过(如3人中2人同意即通过)。
场景:董事会投票、民主评议、 committee 决策。
顺序会签(依次审批)
规则:多人按固定顺序一个接一个处理,前者完成后后者才能看到。
场景:逐级上报,虽然本质是串行,但在配置上也常归为广义的会签节点设置。
# 应用案例
请假/加班:需要直属领导和部门总监同时审批通过方可生效。
现在, 我们用若依工作流这个项目来模拟这个场景, 假设登录用户发起一个加班申请, 需要小若,小依进行审批,并且可以同时接收到审批信息。在线体验 (opens new window)账号信息如下
账号: ry
密码: ry2025
账号: ruo
密码: ry123456
账号: yi
密码: ry123456
# 流程建模
这个流程模型就是会签的场景的基础玩法,其中审批节点,我们设置了只需一人审批即可通过。更多的玩法可以参照用户任务多实例 (opens new window)
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
<bpmn:process id="Process_8179" name="会签" isExecutable="true">
<bpmn:startEvent id="Event_14vnv8w">
<bpmn:outgoing>Flow_1qj9o93</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_1qj9o93" sourceRef="Event_14vnv8w" targetRef="Activity_15s09hm" />
<bpmn:userTask id="Activity_15s09hm" name="请假申请" camunda:assignee="${startUser}">
<bpmn:extensionElements>
<camunda:formData>
<camunda:formField id="amount" label="金额" type="long" />
</camunda:formData>
</bpmn:extensionElements>
<bpmn:incoming>Flow_1qj9o93</bpmn:incoming>
<bpmn:outgoing>Flow_0kjy12o</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="Flow_0kjy12o" sourceRef="Activity_15s09hm" targetRef="Activity_08j09e7" />
<bpmn:userTask id="Activity_08j09e7" name="审批" camunda:assignee="${user}">
<bpmn:extensionElements>
<camunda:formData>
<camunda:formField id="content" label="评论" type="string" />
</camunda:formData>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0kjy12o</bpmn:incoming>
<bpmn:outgoing>Flow_0t7jvdu</bpmn:outgoing>
<bpmn:multiInstanceLoopCharacteristics camunda:collection="userList" camunda:elementVariable="user">
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfCompletedInstances >= 1}</bpmn:completionCondition>
</bpmn:multiInstanceLoopCharacteristics>
</bpmn:userTask>
<bpmn:endEvent id="Event_1tqe5qe">
<bpmn:incoming>Flow_0t7jvdu</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_0t7jvdu" sourceRef="Activity_08j09e7" targetRef="Event_1tqe5qe" />
</bpmn:process>
</bpmn:definitions>
流程模型的xml文件
# 在线演示
按照上面的流程模型, 我们建立一个会签的业务场景,还是以请假为例,这个申请就流转到两个用户,只需其中一个人做出裁决即可通过。
在审批的场景下,发起流程,选择这个会签的模型
发起之后, 我们看到已经有两个用户处于待办的状态
其中,小依审批不通过, 流程即结束
另起一个流程, 小若审批通过, 流程也结束。 在线体验 (opens new window)