跳到主要内容

审批节点

流程中的人工处理环节,需要指定审批人进行审批操作。

概念说明

本文档是 审批流 概念的具体配置说明。建议先阅读审批流概念,了解整体架构。

概述​

「审批节点」(NodeType 为 ApproveNode)是审批流中的人工审批环节。一个审批节点需要指定审批人与会签方式,并可选配置通知模板、执行接口、审批表单、驳回 / 撤回 / 时间限制等高级能力。当节点有多个审批人时,会签方式决定该节点何时判定通过或拒绝。

配置项​

配置项必填说明
节点名称是显示在流程图上的名称
副标题否补充说明文本
会签方式是多个审批人的通过 / 拒绝规则,默认「所有人同意」
设置比例或人数条件必填会签方式为「超过比例」「超过人数」时出现
审批人是通过高级选择器指定,可多选、可混合多种类型
审批人审批通知模板否审批人待办通知模板,留空使用系统默认模板
审批人点击同意后通知发起人模板否留空不发送
审批人点击不同意后通知发起人模板否留空不发送
节点同意后通知发起人模板否节点通过时通知发起人,留空不发送
节点不同意后通知发起人模板否节点拒绝时通知发起人,留空不发送
自定义执行前触发的接口否审批人操作前调用
自定义同意后触发的接口否节点通过时调用
自定义不同意后触发的接口否节点拒绝时调用
审批表单否审批人处理时使用的表单,仅可选择本对象下的表单
允许审批人驳回否开关,默认关闭
驳回时的通知消息模板否开启驳回后出现
允许选择驳回目标节点否开关,默认关闭;开启后可驳回至中间节点
允许发起人撤回否开关,默认关闭
启用审批时间限制否开关,默认关闭
审批开始时间 / 审批结束时间条件必填开启时间限制后出现
自定义错误信息否超出时间范围时的提示,留空使用系统默认文案

会签方式​

会签方式决定当节点存在多个审批人时,如何判定该节点通过或拒绝。

会签方式存储值通过条件拒绝条件
所有人同意(任意一人不同意则拒绝)0全部审批人同意任意一人不同意
任意一人同意(所有人不同意则拒绝)1任意一人同意全部审批人不同意
任意一人同意或拒绝2任意一人同意任意一人不同意
超过x比例人员同意3同意人数占比 ≥ 设定比例同意人数占比 > (100 − 设定比例)
超过x人数人员同意4同意人数 > 设定人数不同意人数 > (总人数 − 设定人数)

选择「超过x比例人员同意」或「超过x人数人员同意」时,「设置比例或人数」输入框出现,取值范围 0 ~ 100 的整数。

审批人配置​

审批人通过高级选择器配置,弹窗左侧按类型分组,可跨类型混合选择多个人或群体,结果以标签形式展示。支持的类型:

分组类型值说明
人员User直接选择具体用户
组织Organization按组织选择,展开该组织下的成员
档案Profile按档案(用户组)选择
角色Role按角色选择,角色内成员均可审批
组织负责人OrganizationResponsiblePersons选择组织的负责人
审批用户选择ApprovalUserSelect与发起人相关的角色(见下表)
动态用户选择DynamicUserSelect与当前登录人相关的角色(见下表)
接口用户选择MetaInterfaceUserSelect由接口动态返回审批人

审批时可用的动态角色取值:

类型值含义
LaunchUser发起人
LaunchUserLineManager发起人直属上级
LaunchUserLineManagerLevel2发起人上上级
LaunchUserLineManagerLevel3发起人上上上级
CurrentLogin当前登录人
CurrentLoginLineManager当前登录人直属上级
CurrentLoginLineManagerLevel2当前登录人上上级
CurrentLoginLineManagerLevel3当前登录人上上上级
审批人必须可解析

审批人配置后,发起审批时会自动解析出每个节点的具体审批人。若任一节点解析不到具体审批人,流程发起会失败。

通知消息模板​

通知模板用于向审批人和发起人推送消息,均「留空则使用系统默认或不发送」:

模板触发时机
审批人审批通知模板流程流转到本节点,通知审批人有待办
审批人点击同意后通知发起人模板单个审批人点击同意后
审批人点击不同意后通知发起人模板单个审批人点击不同意后
节点同意后通知发起人模板本节点整体判定通过后
节点不同意后通知发起人模板本节点整体判定拒绝后

自定义执行接口​

审批节点可挂载三个自定义接口,用于扩展业务逻辑:

接口触发时机
自定义执行前触发的接口审批人提交操作(同意 / 不同意 / 驳回 / 撤回)时,在处理逻辑之前调用
自定义同意后触发的接口本节点判定通过时调用
自定义不同意后触发的接口本节点判定拒绝时调用

接口调用时可选的来源仅包含标签为「功能」的接口,调用时会附带审批上下文参数。

驳回与撤回​

配置项说明
允许审批人驳回开启后审批人可驳回;关闭则隐藏驳回按钮
驳回时的通知消息模板驳回后通知相关人员的模板
允许选择驳回目标节点开启后驳回可选择目标中间节点,否则默认驳回到发起人
允许发起人撤回开启后发起人可在流程进行中撤回

审批时间限制​

开启「启用审批时间限制」后,需设置审批开始时间与结束时间。审批人只能在时间窗口内处理该节点,超出范围会被拒绝提交并提示错误信息;未填自定义错误信息时使用系统默认文案。

下一步​

属性明细​

以下内容面向技术实现与知识库检索,说明节点属性的属性名、类型、含义与存储格式。节点属性存储在流程图版本 LogicGraphical 的 data.meta 字典中,所有值均为字符串。

节点属性表​

属性名类型含义取值/存储值
typestring节点类型固定为 ApproveNode
Titlestring节点名称必填,为空时报「审批节点名称未设置」
SubTitlestring副标题可为空
PassConditionstring会签方式"0" ~ "4",默认 "0"
PercentOrPersonsstring比例或人数阈值数字字符串,如 "50";仅 PassCondition 为 "3"/"4" 时有效
Approverstring(JSON)审批人配置AdvancedSelectItem[] 的 JSON 字符串,必填
AssignApproversNotificationTemplateIdstring审批人审批通知模板 ID模板 ID,可为空
AgreeToLaunchUserNotificationTemplateIdForApproverOperationstring审批人点击同意后通知发起人模板 ID模板 ID,可为空
DisagreeToLaunchUserNotificationTemplateIdForApproverOperationstring审批人点击不同意后通知发起人模板 ID模板 ID,可为空
AgreeToLaunchUserNotificationTemplateIdForNodeFinishstring节点同意后通知发起人模板 ID模板 ID,可为空
DisagreeToLaunchUserNotificationTemplateIdForNodeFinishstring节点不同意后通知发起人模板 ID模板 ID,可为空
BeforeInterfaceIdstring自定义执行前触发的接口 ID接口 ID,可为空
AgreeInterfaceIdstring自定义同意后触发的接口 ID接口 ID,可为空
UnAgreeInterfaceIdstring自定义不同意后触发的接口 ID接口 ID,可为空
MetaFormIdstring审批表单 ID本对象下的表单 ID,可为空
DisplayReturnButtonstring允许审批人驳回"true" / "false"
ReturnMessageTemplateIdstring驳回时的通知消息模板 ID模板 ID,可为空
AllowSelectReturnTargetNodestring允许选择驳回目标节点"true" / "false"
AllowRevokestring允许发起人撤回"true" / "false"
EnableTimeLimitstring启用审批时间限制"true" / "false"
ApproveStartTimestring审批开始时间本地时间字符串
ApproveEndTimestring审批结束时间本地时间字符串
CustomTimeLimitErrorMessagestring超时自定义错误信息可为空

此外,属性面板顶部还提供通用节点属性:ID(只读,节点 ID)、执行优先级 order(数字字符串,影响引擎遍历顺序)。

会签方式枚举​

PassCondition 与后端枚举 ApprovalTypeEnum 一一对应:

存储值枚举名含义
"0"AllAgree所有人同意(任意一人不同意则拒绝)
"1"AnyAgree任意一人同意(所有人不同意则拒绝)
"2"AnyOneAgreeOrUnagree任意一人同意或拒绝
"3"MoreThanPercentAgree超过x比例人员同意
"4"MoreThanPersonsAgree超过x人数人员同意

审批人存储结构​

Approver 存储为 AdvancedSelectItem[] 的 JSON 字符串,每项包含 type、label、value 三个字段。其中「组织负责人」类型的 value 会带 r- 前缀。

[
{ "type": "User", "label": "张三", "value": "u-1001" },
{ "type": "Role", "label": "财务负责人", "value": "role-finance" },
{ "type": "OrganizationResponsiblePersons", "label": "华东大区负责人", "value": "r-org-2001" },
{ "type": "ApprovalUserSelect", "label": "发起人直属上级", "value": "LaunchUserLineManager" },
{ "type": "DynamicUserSelect", "label": "当前登录人", "value": "CurrentLogin" },
{ "type": "MetaInterfaceUserSelect", "label": "获取部门负责人", "value": "iface-3001" }
]

存储示例​

{
"shape": "node",
"id": "node-approve-1",
"data": {
"meta": {
"type": "ApproveNode",
"Title": "部门审批",
"SubTitle": "由部门负责人审批",
"PassCondition": "0",
"PercentOrPersons": "0",
"Approver": "[{\"type\":\"Role\",\"label\":\"部门负责人\",\"value\":\"role-dept\"}]",
"AssignApproversNotificationTemplateId": null,
"AgreeToLaunchUserNotificationTemplateIdForApproverOperation": null,
"DisagreeToLaunchUserNotificationTemplateIdForApproverOperation": null,
"AgreeToLaunchUserNotificationTemplateIdForNodeFinish": null,
"DisagreeToLaunchUserNotificationTemplateIdForNodeFinish": null,
"BeforeInterfaceId": null,
"AgreeInterfaceId": null,
"UnAgreeInterfaceId": null,
"MetaFormId": null,
"DisplayReturnButton": "false",
"ReturnMessageTemplateId": null,
"AllowSelectReturnTargetNode": "false",
"AllowRevoke": "false",
"EnableTimeLimit": "false",
"ApproveStartTime": null,
"ApproveEndTime": null,
"CustomTimeLimitErrorMessage": null,
"order": "0"
}
}
}

引擎行为​

阶段行为
校验Title 必填;Approver 必须可解析且非空,否则报错;该节点计入流程审批节点数量
构建解析 Approver 生成审批人明细,节点 ApprovalType 取 PassCondition
进入节点重新解析一次最新审批人,写入节点审批人明细;若解析结果为 0 人,标记需要流程转交;否则按「审批人审批通知模板」发送待办通知
同意按 PassCondition 判定节点是否通过;通过则节点置为已通过、未处理审批人被移除、通知下一节点,并调用「同意后触发的接口」与「节点同意后通知发起人模板」
不同意按 PassCondition 判定节点是否拒绝;拒绝则节点置为已拒绝,调用「不同意后触发的接口」并结束流程
驳回删除当前节点所有未处理待办;若指定了驳回目标节点且该节点为审批节点,则重置该节点及后续节点状态并从目标节点前一节点重新流转;否则驳回至发起人,流程置为已驳回
撤回删除本节点未处理待办并关闭待办,流程置为已撤回
审批意见必填按「流程属性设置」中 OpinionRequiredWhenAgree / OpinionRequiredWhenDisagree / OpinionRequiredWhenReturn 校验
时间限制启用时按 ApproveStartTime / ApproveEndTime 校验,超范围抛出错误信息

接口调用参数​

节点接口通过统一上下文 DicParam 传递审批信息:

参数含义
WorkflowId审批流 ID
WorkflowNodeId当前节点 ID
WorkflowNodeType当前节点类型(如 ApproveNode)
WorkflowDataIds流程实例 ID
Action当前动作(Agree / Disagree / Return / Revoke 等)
BizDataIds业务数据 ID
MetaObjectCode对象编码