节点配置
流程节点决定实例如何推进、如何生成任务、如何调用外部系统,以及异常时如何恢复。每个节点在设计器中都有稳定 key、显示名称和类型;关键节点建议使用业务可读的 key。
节点类型
| 节点 | 类型 | 是否阻塞流程 | 说明 |
|---|---|---|---|
| 发起人 | start | 否 | 起点,承载发起人表单权限 |
| 审批人 | approve | 是 | 生成审批任务,按审批方式和驳回策略推进 |
| 办理人 | handler | 是 | 生成办理任务,配置方式接近审批人 |
| 抄送 | ccNode | 否 | 生成抄送记录并继续推进 |
| 条件分支 | exclusiveGateway | 否 | 命中第一条满足条件的分支 |
| 并行分支 | parallelGateway | 是 | 所有分支同时执行并汇聚 |
| 包容分支 | inclusiveGateway | 是 | 满足条件的分支同时执行并汇聚 |
| 路由分支 | routeGateway | 否 | 通过规则中心决策资产或路由结果选择分支 |
| 延迟器 | delay | 是 | 创建等待任务和 delay_wake 作业,到期后继续 |
| 触发器 | trigger | 视类型而定 | HTTP 外呼、回调等待、表单数据更新或删除 |
| 子流程 | subProcess | 视配置而定 | 发起一个或多个子流程,可等待汇聚 |
| 异常捕获 | catchNode | 否 | 接收异常边,通知、转管理员或终止 |
| 结束 | end | 否 | 流程终点;所有活动路径到达后实例完结 |
表中「类型」即引擎运行态与流程图 flowData 中的节点类型标识,事件订阅、诊断和作业账本均使用该标识。
节点标识
每个节点都有系统生成的 id,也可以配置可读的 key。key 用于:
| 用途 | 说明 |
|---|---|
| 事件订阅 | 外部系统可以按 nodeKey 识别事件来源 |
| 驳回配置 | rejectToNodeKey 使用稳定节点标识作为目标 |
| 外部审批 | 回调和诊断信息展示节点标识 |
| 运行诊断 | 作业账本、引擎轨迹和诊断包按节点定位问题 |
节点 key 必须以字母开头,只能包含字母、数字和下划线;同一流程内唯一;start、end 为保留字。未配置时,系统使用节点 id 作为运行标识。
审批人与办理人
处理人来源
| 来源 | 说明 |
|---|---|
| 指定成员 | 节点中直接选择用户 |
| 指定角色 | 取角色成员,并按角色管理范围过滤 |
| 部门负责人 | 取发起人或指定表单部门的负责人 |
| 指定岗位 | 取岗位下启用用户 |
| 部门成员 | 取指定部门成员,可包含子部门 |
| 用户组 | 取用户组成员 |
| 发起人 | 发起人本人 |
| 发起人部门分管领导 | 发起人部门的分管领导 |
| 直属主管 | 按层级向上查找主管 |
| 连续多级上级 | 从直属主管逐级生成审批链 |
| 连续多级部门负责人 | 从发起人部门负责人逐级向上 |
| 表单联系人 | 读取人员字段 |
| 表单内部门 | 读取部门字段并解析负责人 |
| 节点审批人 | 取前序节点实际审批人 |
| 发起人自选 | 发起时选择审批人 |
| 发起人自选范围 | 发起时在用户、角色、部门或用户组范围内选择 |
| 审批人自选 | 上一节点处理时选择下一节点审批人 |
| 决策表 | 审批人矩阵通过规则中心决策表输出来源类型和 ID |
| 流程表达式 | 通过表达式计算用户 ID 或用户 ID 数组 |
审批方式
| 方式 | 说明 |
|---|---|
| 或签 | 一份正式基础意见满足基础条件;必须处理的锚定席位和补充加签组仍需完成 |
| 会签 | 全部基础席位通过,且满足补充加签组的条件 |
| 依次审批 | 按基础席位顺序处理,当前席位及其后加签组完成后开放下一席位 |
| 比例会签 | 按激活轮次冻结的基础席位数与 approveRatio 计算阈值;加签不改变分母 |
| 随机一人 | 从候选人中随机指派一人 |
| 自动通过 | 不需要人工处理,节点自动通过 |
设计态支持 random 和 auto,运行态落库的多人审批方式为 and、or、sequential、ratio。
审批计票使用正式席位,委派建议、抄送和任务数量本身不增加基础票数;完整处理与加签规则见审批、任务与协作。
边界策略
| 策略 | 说明 |
|---|---|
| 空处理人 | 自动通过、转交管理员、自动拒绝、转交指定人员 |
| 发起人与处理人相同 | 自己处理、自动跳过、转直属上级、转部门负责人 |
| 审批人去重 | 后续重复自动通过,或每个节点都重新审批 |
| 审批要求 | operations 仅支持 opinionRequired,控制审批意见必填;签名由独立的 signaturePolicy 配置 |
| 操作按钮 | actionButtons 配置通过、拒绝、转办、委派、加签、减签、退回的启停、文案、意见名、附件策略(不显示/选填/必填)和支持的跳转目标 |
未配置按钮时,通过与拒绝默认启用,其余协作按钮默认关闭。服务端对用户提交的七类动作再次校验启用态;超时、外部回调和管理员干预使用各自的系统处理入口。评论开关属于流程级 allowComment。
签名策略
审批节点使用独立的 signaturePolicy 配置;operations 只保留操作能力,不承载签名要求。
| 策略 | 通过时要求 | 批量通过 |
|---|---|---|
none(默认) | 无需签名,不保存额外提交的签名 | 允许,仍需满足其他节点限制 |
reusable | 本次手写,或确认使用自己的已保存签名 | 可以共用一次选择的个人模板,逐任务重新校验并记录证据 |
handwritten | 本次重新手写 | 必须单独审批 |
字段签名与节点签名相互独立:申请人已在表单内签名,不代替审批人的节点签名。策略随流程定义进入实例快照,运行实例按该快照执行;修改定义不回写已运行实例。
驳回与退回
驳回策略用于拒绝动作:
| 策略 | 说明 |
|---|---|
| 终止流程 | 实例进入 rejected |
| 退回上一节点 | 回到最近前序审批/办理节点 |
| 退回发起人 | 回到起点,发起人可重新提交 |
| 退回指定节点 | 按节点 key 回到指定节点 |
退回动作可选择前序审批/办理节点。退回模式支持重新执行后续路径,或目标节点完成后回到原节点继续。
抄送节点
抄送节点复用与审批人相同的处理人来源解析,生成抄送记录后立即继续推进,不阻塞流程。抄送送达即完成:运行态视图统一显示「已抄送」,「抄送我的」列表以 CC 任务送达时间为抄送时间。
| 配置 | 说明 |
|---|---|
| 抄送人来源 | 与审批人来源一致(指定成员、角色、部门负责人、表单联系人等) |
| 仅同意时抄送 | 开启后仅当上游审批/办理节点通过时才发送抄送;上游被驳回、撤回或跳过时不抄送 |
接收人在「抄送我的」查看与标记已读;运行中实例还支持动态补加抄送,见审批、任务与协作。
表单权限
审批、办理、抄送和发起人节点可按字段配置权限:
| 权限 | 说明 |
|---|---|
| 只读 | 可见不可编辑 |
| 可编辑 | 可见且可修改 |
| 隐藏 | 当前节点不可见 |
权限配置列出布局容器及其嵌套字段,支持为分栏、分组、标签页、分步中的控件和明细列分别设置权限;隐藏容器会同时隐藏其子字段。
节点权限在运行态全程生效:
- 发起:发起表单隐藏
hidden字段、置灰read字段;服务端按发起节点权限丢弃越权提交的字段值。 - 审批 / 办理:审批详情按当前节点权限过滤
hidden字段;存在edit字段时处理人可直接在详情中修改,随「通过」一并提交(请求体formUpdates),服务端按节点权限白名单过滤后合并进实例formData,会签未推进时同样持久化,后续分支条件使用合并后的数据。 - 字段是否必填仍由表单字段自身配置决定;被节点置为只读的字段不参与必填校验。
触发器重新打开时,设计器从已保存的 triggerConfig 回填触发类型、请求配置与数据字段;再次保存仍写入嵌套配置,节点卡片显示同一触发类型。
人工审批轮次保留解析后的审批方式与比例,即使实际仅有一名审批人,也不会把或签、顺序会签或比例会签改记为普通会签。历史实例的冻结轮次记录不随此规则回写。
超时处理
审批/办理节点可配置节点级超时。到期后由统一作业账本中的 task_timeout 作业处理。
| 配置 | 说明 |
|---|---|
| 时长 | 数值 + 分钟 / 小时 / 天 |
| 动作 | 自动提醒、自动通过、自动拒绝 |
| 最大提醒次数 | 自动提醒模式下重复提醒次数;每次提醒会向处理人发送催办通知(站内信 + 实时提醒,task.urged 事件) |
| 提醒耗尽后 | 不处理、自动同意、自动拒绝、转交给上级 |
| 上级层级与兜底 | 转交给上级时指定层级,找不到人时可保持挂起或自动处理 |
分支条件
条件支持字段比较、发起人维度和明细聚合。
| 能力 | 说明 |
|---|---|
| 运算符 | 等于、不等于、大于、大于等于、小于、小于等于、包含在、不包含在、包含、为空、不为空、区间、N 天内、早于 N 天前 |
| 表单字段 | 读取 formData 中的字段值 |
| 发起人维度 | 发起人本人、部门、角色、岗位 |
| 明细聚合 | 对明细字段执行 sum、count、avg 后比较 |
| 条件组 | 支持 and / or 组合 |
条件、路由、审批人等业务引用中的字段列表穿透分栏、分组、标签页和分步布局,但不会把明细列当成顶层字段。明细条件应选择明细字段,再指定聚合方式和聚合列;例如对 items 的 amount 列求和,而非直接读取 formData.amount。
条件分支按顺序取第一条命中路径;包容分支会进入所有命中路径;默认分支作为兜底。
路由分支可绑定规则中心已发布资产:decisionRefKind 为 table、scorecard 或 flow,分别引用决策表、评分卡或决策流。运行时先调用规则中心 decide(),把 outputs 合并进实例 formData,再按出边条件选择路径;未绑定决策资产时直接使用当前运行时数据。设计器中的 routeFieldKey 和分支匹配值在保存时编译为出边条件,不作为节点配置持久化。
延迟器
延迟器支持两种方式:
| 类型 | 说明 |
|---|---|
| 固定时长 | 按分钟、小时或天等待 |
| 指定日期 | 从表单日期字段读取目标时间 |
运行时创建 waiting 任务和 delay_wake 作业。到期后统一 Worker 唤醒任务并继续推进。
触发器
触发器支持 HTTP 请求、HTTP 回调、更新表单数据和删除表单数据。详见 触发器与外部审批。
触发器、子流程等外部副作用节点支持节点级统一失败策略(重试 / 补偿 / 兜底 / 通知 / 终止 / 继续),未启用时沿用「异常边 → 异常捕获节点」兜底。详见 补偿 / Saga 能力。
子流程
子流程节点可发起另一个已发布流程。
| 配置 | 说明 |
|---|---|
| 调用模式 | 单实例或多实例 |
| 等待子流程 | 等待时父节点任务进入 waiting,实例仍为 running;不等待时父节点立即继续 |
| 多实例数据源 | 遍历父表单数组字段 |
| 执行方式 | 并行或串行 |
| 子实例发起人 | 父流程发起人、表单字段、指定成员 |
| 入参映射 | 父表单字段或 {{item}} 映射到子流程 |
| 出参映射 | 子流程结束后回填父流程字段;多实例聚合为数组 |
| 子实例驳回 | 中止节点或忽略继续 |
子流程通过 subprocess_spawn 和 subprocess_join 作业发起与汇聚。父子关系写入实例的 parentInstanceId、parentTaskId 和循环项标识,详情页可查看子流程列表。
节点监听器
节点监听器是挂在单个节点上的 Webhook。支持事件:
| 事件 | 说明 |
|---|---|
onCreate | 节点任务创建 |
onApprove | 节点通过 |
onReject | 节点驳回 |
节点监听器适合与单个节点强绑定的外呼。跨流程、可统一管理和重试的外部推送使用 事件总线与事件订阅。
监听器由进程内订阅者按任务事件调用,单次请求时限为 8 秒;失败记入日志,不生成独立投递记录,也不独立重试。需要投递记录与重放时应使用事件订阅。