4. 流程节点设计:开始节点、审批节点、条件分支节点、并行节点、子流程节点、结束节点的配置方法
流程节点是工作流引擎的基本构成单元。在审查意见处理流程中,合理配置各类型节点决定了流程的流转效率与逻辑严谨性。本章将逐一讲解六类核心节点的配置要点与适用场景。
4.1 节点类型概览与功能对比
在开始配置前,首先明确各类节点的职责边界。下表总结了六类节点的核心功能与典型应用场景:
| 节点类型 | 核心功能 | 审查意见流程典型场景 | 配置要点 |
|---|---|---|---|
| 开始节点 | 流程实例的启动入口 | 提交审查意见申请 | 设置表单触发器、启动权限 |
| 审批节点 | 人工审核与决策 | 部门负责人审批、总工审批 | 审批人分配、会签/或签模式 |
| 条件分支节点 | 根据条件选择流转路径 | 意见类型判断(一般/重大) | 条件表达式、优先级排序 |
| 并行节点 | 多路任务同时执行 | 同步征求多专业意见 | 并行网关、合并策略 |
| 子流程节点 | 调用独立子流程 | 专家评审子流程 | 子流程版本绑定、参数映射 |
| 结束节点 | 流程实例的终止出口 | 流程归档、通知发起人 | 结束事件、后置动作 |
4.2 开始节点(Start Node)
开始节点是流程实例的唯一起点。在审查意见处理流程中,通常由申请人提交表单触发。
4.2.1 配置步骤
- 设置触发方式:选择“表单提交触发”或“API 调用触发”。审查意见流程推荐使用表单触发。
- 绑定启动表单:关联《审查意见传递单》表单,包含字段:意见编号、项目名称、意见描述、附件等。
- 配置启动权限:限定哪些角色或部门可以发起流程,例如“项目组成员”或“质量管理部门”。
- 定义流程变量初始化:在开始节点中初始化全局变量,如
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 并行网关配置
- 拆分(Fork):在并行网关处将流程拆分为多个分支,每个分支独立执行。
- 合并(Join):所有分支完成后,流程汇聚到合并网关继续执行。
- 合并策略:支持“全部完成合并”或“指定数量完成合并”。
// 并行节点配置示例
{
"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 配置顺序建议
在实际配置流程时,建议按照以下顺序依次完成各节点配置,避免遗漏:
- 先配置 开始节点 和 结束节点,确定流程边界。
- 配置 审批节点,确定人工审批环节。
- 配置 条件分支节点,确定流程的分流逻辑。
- 配置 并行节点,处理多路并发场景。
- 最后配置 子流程节点,引用外部流程定义。
- 完成所有节点配置后,进行 流程仿真测试,验证各路径流转正确性。