审批节点
审批节点(ApproveNode)是审批流中的人工审批环节,需要指定审批人进行审批操作。
概述
审批节点是审批流中的人工审批环节。一个审批节点需要指定审批人与会签方式,并可选配置通知模板、执行接口、审批表单、驳回 / 撤回 / 时间限制等高级能力。当节点有多个审批人时,会签方式决定该节点何时判定通过或拒绝。
配置项
| 配置项 | 必填 | 说明 |
|---|---|---|
| 节点名称 | 是 | 显示在流程图上的名称,缺省为「审批节点」 |
| 副标题 | 否 | 节点名称下方的补充说 明文本 |
| 会签方式 | 是 | 多个审批人的通过 / 拒绝规则,缺省为「所有人同意」 |
| 设置比例或人数 | 条件必填 | 会签方式为「超过x比例」「超过x人数」时出现,取值 0~100 的整数 |
| 审批人 | 是 | 通过高级选择器指定,可多选、可混合多种类型 |
| 审批人审批通知模板 | 否 | 审批人待办通知模板,留空使用系统默认模板 |
| 审批人点击同意后通知发起人模板 | 否 | 留空不发送 |
| 审批人点击不同意后通知发起人模板 | 否 | 留空不发送 |
| 节点同意后通知发起人模板 | 否 | 本节点判定通过时通知发起人,留空不发送 |
| 节点不同意后通知发起人模板 | 否 | 本节点判定拒绝时通知发起人,留空不发送 |
| 自定义执行前触发的接口 | 否 | 审批人操作前调用 |
| 自定义同意后触发的接口 | 否 | 本节点判定通过时调用 |
| 自定义不同意后触发的接口 | 否 | 本节点判定拒绝时调用 |
| 审批表单 | 否 | 审批人处理时使用的表单,仅可选择本对象下的表单 |
| 允许审批人驳回 | 否 | 开关,缺省关闭 |
| 驳回时的通知消息模板 | 否 | 开启驳回后出现 |
| 允许选择驳回目标节点 | 否 | 开关,缺省关闭;开启后可驳回至中间节点 |
| 允许发起人撤回 | 否 | 开关,缺省关闭 |
| 启用审批时间限制 | 否 | 开关,缺省关闭 |
| 审批开始时间 / 审批结束时间 | 条件必填 | 开启时间限制后出现 |
| 自定义错误信息 | 否 | 超出时间范围时的提示,留空使用系统默认文案 |
会签方式取值
| 界面名称 | 值(PassCondition) | 说明 |
|---|---|---|
| 所有人同意(任意一人不同意则拒绝) | 0 | 全部审批人同意才通过,缺省值 |
| 任意一人同意(所有人不同意则拒绝) | 1 | 任意一人同意即通过 |
| 任意一人同意或拒绝 | 2 | 任意一人表态即判定 |
| 超过x比例人员同意 | 3 | 同意人数占比达到设定比例即通过 |
| 超过x人数人员同意 | 4 | 同意人数超过设定人数即通过 |
选择「超过x比例人员同意」或「超过x人数人员同意」时出现「设置比例或人数」输入框。
审批人配置
审批人通过高级选择器配置,可跨类型混合选择,支持人员、组织、档案、角色、组织负责人、审批用户选择、动态用户选择、接口用户选择等类型。会签方式与审批人的详细规则见 审批节点。
审批人配置后,发起审批时会自动解析出每个节点的具体审批人。若任一节点解析不到具体审批人,流程发起会失败。
驳回与撤回
| 配置项 | 说明 |
|---|---|
| 允许审批人驳回 | 开启后审批人可驳回;关闭则隐藏驳回按钮 |
| 驳回时的通知消息模板 | 驳回后通知相关人员的模板 |
| 允许选择驳回目标节点 | 开启后驳回可选择目标中间节点,否则默认驳回到发起人 |
| 允许发起人撤回 | 开启后发起人可在流程进行中撤回 |
审批时间限制
开启「启用审批时间限制」后,需设置审批开始时间与结束时间。审批人只能在时间窗口内处理该节点,超出范围会被拒绝提交并提示错误信息;未填自定义错误信息时使用系统默认文案。
下一步
属性明细
以下内容面向技术实现与 AI 检索,说明审批节点的节点元数据。所有值均为字符串。
节点元数据
审批节点由 FlowCmpType.ApproveNode 标识:
| 属性名 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
type | string | 组件类型 | 固定为 "ApproveNode" |
Title | string | 节点名称 | 必填,缺省 "审批节点" |
SubTitle | string | 副标题 | 可为空 |
PassCondition | string | 会签方式 | "0"~"4",缺省 "0" |
PercentOrPersons | string | 比例或人数阈值 | 数字字符串,如 "50";仅 PassCondition 为 "3"/"4" 时有效 |
Approver | string(JSON) | 审批人配置 | AdvancedSelectItem[] 的 JSON 字符串,必填 |
AssignApproversNotificationTemplateId | string | 审批人审批通知模板 ID | 模板 ID,可为空 |
AgreeToLaunchUserNotificationTemplateIdForApproverOperation | string | 审批人点击同意后通知发起人模板 ID | 模板 ID,可为空 |
DisagreeToLaunchUserNotificationTemplateIdForApproverOperation | string | 审批人点击不同意后通知发起人模板 ID | 模板 ID,可为空 |
AgreeToLaunchUserNotificationTemplateIdForNodeFinish | string | 节点同意后通知发起人模板 ID | 模板 ID,可为空 |
DisagreeToLaunchUserNotificationTemplateIdForNodeFinish | string | 节点不同意后通知发起人模板 ID | 模板 ID,可为空 |
BeforeInterfaceId | string | 自定义执行前触发的接口 ID | 标签为「功能」的接口 ID,可为空 |
AgreeInterfaceId | string | 自定义同意后触发的接口 ID | 接口 ID,可为空 |
UnAgreeInterfaceId | string | 自定义不同意后触发的接口 ID | 接口 ID,可为空 |
MetaFormId | string | 审批表单 ID | 本对象下的表单 ID,可为空 |
DisplayReturnButton | string(bool) | 允许审批人驳回 | "true" / "false" |
ReturnMessageTemplateId | string | 驳回时的通知消息模板 ID | 模板 ID,可为空 |
AllowSelectReturnTargetNode | string(bool) | 允许选择驳回目标节点 | "true" / "false" |
AllowRevoke | string(bool) | 允许发起人撤回 | "true" / "false" |
EnableTimeLimit | string(bool) | 启用审批时间限制 | "true" / "false" |
ApproveStartTime | string | 审批开始时间 | 本地时间字符串 |
ApproveEndTime | string | 审批结束时间 | 本地时间字符串 |
CustomTimeLimitErrorMessage | string | 超时自定义错误信息 | 可为空 |
order | string | 同级排序 | 例:"4" |
元数据存储示例
{
"ID": "approve-node1",
"type": "ApproveNode",
"Title": "部门审批",
"SubTitle": "由部门负责人审批",
"PassCondition": "0",
"PercentOrPersons": "0",
"Approver": "[{\"type\":\"Role\",\"label\":\"部门负责人\",\"value\":\"role-dept\"}]",
"DisplayReturnButton": "false",
"AllowSelectReturnTargetNode": "false",
"AllowRevoke": "false",
"EnableTimeLimit": "false",
"order": "4"
}
数据源
接口下拉通过 POST /api/DataSource/GetMetaInterfaceDataSource(extend.tags = "Function")获取,表单下拉通过 POST /api/DataSource/GetMetaFormDataSource 获取,通知模板下拉通过 POST /api/DataSource/GetMetaMessageTemplateDataSource 获取。
服务端执行逻辑
审批节点由 ApproveNodeComponentManager 实现,继承 WorkflowComponentManagerBase,组件类型为 FlowComponentTypeEnum.ApproveNode。审批人在创建实例与进入节点两个时点各解析一次;会签判定在每次审批动作后按 PassCondition 重算。
节点 meta 以 Dictionary<string, string> 存储,PassCondition、PercentOrPersons、Approver 等全部为字符串;Approver 是 AdvancedSelectItem[] 的 JSON 字符串,服务端读取后反序列化。
执行时机与场景
| 时机 | 入口 | 说明 |
|---|---|---|
| 保存 / 发布校验 | _VerifyAsync | 校验 Title、Approver 并计入 FinalResultCount |
| 发起审批(构建节点列表) | _BuildAsync | 解析审批人并写入 NodeItems |
| 流转到本节点 | _NotifyAsync | 置节点进行中,重新解析审批人并发送待办通知 |
| 审批人操作 | _ExecuteAsync | 处理同意 / 不同意 / 驳回 / 撤回,按会签规则判定节点完成 |
| 审批人配置变更重分配 | _ReAssignAsync | 发布新版本时刷新进行中实例的审批人 |