4. 流程节点设计:开始节点、审批节点、条件分支节点、并行节点、子流程节点、结束节点的配置方法

流程节点是工作流引擎的基本构成单元。在审查意见处理流程中,合理配置各类型节点决定了流程的流转效率与逻辑严谨性。本章将逐一讲解六类核心节点的配置要点与适用场景。

4.1 节点类型概览与功能对比

在开始配置前,首先明确各类节点的职责边界。下表总结了六类节点的核心功能与典型应用场景:

节点类型 核心功能 审查意见流程典型场景 配置要点
开始节点 流程实例的启动入口 提交审查意见申请 设置表单触发器、启动权限
审批节点 人工审核与决策 部门负责人审批、总工审批 审批人分配、会签/或签模式
条件分支节点 根据条件选择流转路径 意见类型判断(一般/重大) 条件表达式、优先级排序
并行节点 多路任务同时执行 同步征求多专业意见 并行网关、合并策略
子流程节点 调用独立子流程 专家评审子流程 子流程版本绑定、参数映射
结束节点 流程实例的终止出口 流程归档、通知发起人 结束事件、后置动作

4.2 开始节点(Start Node)

开始节点是流程实例的唯一起点。在审查意见处理流程中,通常由申请人提交表单触发。

4.2.1 配置步骤

  1. 设置触发方式:选择“表单提交触发”或“API 调用触发”。审查意见流程推荐使用表单触发。
  2. 绑定启动表单:关联《审查意见传递单》表单,包含字段:意见编号、项目名称、意见描述、附件等。
  3. 配置启动权限:限定哪些角色或部门可以发起流程,例如“项目组成员”或“质量管理部门”。
  4. 定义流程变量初始化:在开始节点中初始化全局变量,如 opinionType、urgencyLevel。
最佳实践:开始节点应包含数据校验逻辑,确保必填字段(如意见描述、关联项目编号)在流程启动前已完成验证,避免无效流程实例。

4.3 审批节点(Approval Node)

审批节点是人工参与的核心环节。在审查意见流程中,审批节点通常配置为“部门审批”和“总工审批”两级。

4.3.1 审批人分配策略

分配方式 配置方法 适用场景
固定审批人 直接指定用户或角色 总工审批(固定角色)
表单字段动态指定 从表单字段读取审批人 部门负责人由申请人选择
组织架构自动匹配 根据发起人部门自动匹配上级 部门负责人自动匹配
表达式计算 通过脚本或规则引擎计算 按项目类型动态分配

4.3.2 会签与或签模式

  • 会签(全部通过):所有审批人必须同意,流程才继续。适用于重大意见审查。
  • 或签(任一通过):任一审批人同意即可。适用于一般意见快速流转。
// 审批节点配置示例(伪代码)
{
  "nodeType": "approval",
  "nodeName": "部门负责人审批",
  "assigneeType": "dynamic",
  "assigneeExpression": "#{departmentManager}",
  "approvalMode": "countersign", // 会签
  "passCondition": "agreeCount >= totalCount",
  "rejectAction": "退回至发起人"
}

4.4 条件分支节点(Condition Branch Node)

条件分支节点根据流程变量的值决定后续流转路径。在审查意见流程中,最常见的分支逻辑是“意见类型判断”。

4.4.1 条件表达式配置

条件分支通常使用表达式引擎(如 MVEL、Groovy 或内置规则引擎)编写。以下为典型配置:

分支路径 条件表达式 说明
一般意见 #{opinionType} == 'GENERAL' 直接进入归档节点
重大意见 #{opinionType} == 'MAJOR' 进入总工审批节点
紧急意见 #{urgencyLevel} >= 3 并行通知相关方
注意:条件分支必须设置“默认路径”,当所有条件都不满足时,流程走默认路径,避免流程卡死。

4.5 并行节点(Parallel Node)

并行节点用于同时执行多个独立任务。在审查意见流程中,当需要同步征求多个专业部门的意见时,使用并行节点。

4.5.1 并行网关配置

  1. 拆分(Fork):在并行网关处将流程拆分为多个分支,每个分支独立执行。
  2. 合并(Join):所有分支完成后,流程汇聚到合并网关继续执行。
  3. 合并策略:支持“全部完成合并”或“指定数量完成合并”。
// 并行节点配置示例
{
  "nodeType": "parallelGateway",
  "gatewayType": "fork",
  "branches": [
    { "branchId": "branch_1", "targetNode": "结构专业审批" },
    { "branchId": "branch_2", "targetNode": "电气专业审批" },
    { "branchId": "branch_3", "targetNode": "暖通专业审批" }
  ],
  "joinStrategy": "allComplete"
}

4.6 子流程节点(Subprocess Node)

子流程节点允许在一个流程中调用另一个独立的流程定义。在审查意见流程中,常用于调用“专家评审子流程”或“第三方检测子流程”。

4.6.1 子流程配置要点

  • 子流程版本绑定:建议绑定固定版本号,避免子流程变更影响主流程。
  • 参数映射:主流程变量与子流程变量之间的映射关系必须显式配置。
  • 同步/异步模式:同步模式下主流程等待子流程完成;异步模式下主流程继续执行。
// 子流程节点配置示例
{
  "nodeType": "subprocess",
  "subprocessKey": "expert_review_v2",
  "version": 2,
  "inputMapping": {
    "projectId": "#{projectId}",
    "opinionDesc": "#{opinionDescription}"
  },
  "outputMapping": {
    "reviewResult": "#{expertReviewResult}"
  },
  "executionMode": "synchronous"
}

4.7 结束节点(End Node)

结束节点是流程实例的终止点。配置不当会导致流程无法正常归档或通知缺失。

4.7.1 结束节点配置项

配置项 说明 推荐设置
结束事件类型 无事件 / 消息事件 / 信号事件 无事件(默认)
后置动作 发送通知、更新状态、触发回调 通知发起人“流程已完成”
流程变量清理 是否保留流程变量供历史查询 保留 30 天
归档策略 自动归档至文档系统 关联传递单归档

4.8 节点关系与流程结构图

下图展示了审查意见处理流程中各类节点的典型连接关系,帮助理解节点之间的协作逻辑:

审查意见处理流程 — 节点关系结构图 开始节点 条件分支节点 一般意见 重大意见 紧急意见 审批节点(部门) 审批节点(总工) 并行节点 结构 电气 暖通 子流程节点 结束节点 虚线表示汇聚路径 实线表示主流转路径

4.9 节点配置避坑指南

常见配置错误与解决方案:
  • 开始节点无校验:导致空表单流程实例大量产生。解决方案:在开始节点前增加表单校验规则。
  • 条件分支无默认路径:当所有条件不满足时流程卡死。解决方案:始终配置一条默认路径。
  • 并行节点合并策略错误:使用“全部完成合并”但某分支无人处理,流程永久等待。解决方案:设置超时自动跳过或使用“指定数量完成合并”。
  • 子流程版本未绑定:子流程更新后主流程行为异常。解决方案:显式绑定子流程版本号。
  • 结束节点无后置动作:流程完成后发起人未收到通知。解决方案:配置结束事件的通知动作。

4.10 配置顺序建议

在实际配置流程时,建议按照以下顺序依次完成各节点配置,避免遗漏:

  1. 先配置 开始节点 和 结束节点,确定流程边界。
  2. 配置 审批节点,确定人工审批环节。
  3. 配置 条件分支节点,确定流程的分流逻辑。
  4. 配置 并行节点,处理多路并发场景。
  5. 最后配置 子流程节点,引用外部流程定义。
  6. 完成所有节点配置后,进行 流程仿真测试,验证各路径流转正确性。