2. 工作流基础回顾:节点类型、节点生命周期与标准参数模型

在深入审查意见驱动的参数配置之前,必须统一团队对工作流基础概念的认知。本章从三个维度构建共识:节点类型(流程的“积木”)、节点生命周期(每个积木的“状态机”)以及标准参数模型(积木间的“通信协议”)。

2.1 核心节点类型

BPMN 2.0 规范定义了数十种节点,但在审批工作流中,90% 的场景由以下三类节点覆盖:

节点类型 BPMN 元素 核心职责 典型场景
用户任务 User Task 等待人工操作,产生审查意见 部门审批、会签、知会
服务任务 Service Task 自动执行逻辑,无人工干预 发送邮件、调用接口、数据转换
网关 Gateway 控制流程路由,决定走向 条件分支、并行、合并
实践提示: 在 Camunda 中,用户任务通过 camunda:formData 或外部表单收集意见;服务任务通过 camunda:class 或 camunda:delegateExpression 绑定 Java 委托;网关通过条件表达式(如 ${approved == true})驱动分支。

2.1.1 网关子类型详解

网关是路由决策的核心,不同子类型对应不同的语义:

  • 排他网关 (Exclusive Gateway):多选一,默认走第一条满足条件的路径。适合“同意/驳回/转审”等互斥分支。
  • 并行网关 (Parallel Gateway):分叉时激活所有后续路径,合并时等待所有到达路径。适合“会签”或“并行任务”。
  • 包容网关 (Inclusive Gateway):分叉时激活所有满足条件的路径,合并时等待所有被激活的路径。适合“条件并行”。
  • 事件网关 (Event Gateway):基于捕获事件(如定时器、消息)决定分支,较少用于审批流。
常见误区: 排他网关与包容网关的区别在于“是否允许同时走多条路径”。排他网关是互斥的,包容网关是条件并行的。在审批流中,若需要“部门经理审批通过后,同时通知财务和法务”,应使用并行网关,而非排他网关。

2.2 节点生命周期

每个节点实例(Process Instance 中的 Activity Instance)都遵循一个标准状态机。理解生命周期是配置“审查意见驱动参数”的前提——因为参数只能在特定状态被读取或写入。

节点生命周期状态机 待处理 运行中 已完成 已取消 异常/重试 强制终止 超时/错误 重试 说明:用户任务在“运行中”状态时,引擎会创建待办任务;服务任务在“运行中”状态时,引擎会同步或异步执行委托逻辑。

节点生命周期中的关键状态转换点:

  • 待处理 → 运行中:引擎根据序列流条件激活节点。此时可读取流程变量,但尚未执行节点逻辑。
  • 运行中 → 已完成:用户任务提交表单/服务任务执行完毕。此时可写入审查意见或输出参数。
  • 运行中 → 异常/重试:服务任务抛出异常或用户任务超时。此时可触发补偿或重试策略。
  • 任意状态 → 已取消:流程被终止或节点被跳过。此时应清理临时变量。

2.3 标准参数模型

工作流引擎通过流程变量 (Process Variables) 在节点间传递数据。标准参数模型定义了变量的作用域、类型和生命周期,是“审查意见驱动配置”的数据基础。

2.3.1 参数作用域

作用域 可见范围 生命周期 典型用途
全局变量 整个流程实例 流程实例创建 → 结束 申请人、金额、审批结果
局部变量 当前节点及子流程 节点激活 → 完成 节点输入表单、临时计算结果
任务变量 仅当前用户任务 任务创建 → 完成 审查意见、附件列表

2.3.2 标准参数类型与命名规范

为避免参数混乱,建议团队遵循以下命名约定:

  • 输入参数:前缀 in_,如 in_approverList、in_amount。
  • 输出参数:前缀 out_,如 out_opinion、out_approved。
  • 配置参数:前缀 cfg_,如 cfg_timeout、cfg_skipCondition。
  • 临时变量:前缀 tmp_,如 tmp_calculatedScore。
最佳实践: 在 Camunda 中,使用 execution.setVariable("out_opinion", "同意") 写入输出参数;在 Activiti 中,通过 delegateExecution.setVariableLocal("tmp_result", value) 设置局部变量。始终明确作用域,避免全局变量污染。

2.3.3 参数模型与节点类型的映射

不同节点类型对参数模型的依赖程度不同:

节点类型与参数模型映射 用户任务 输入:表单字段 输出:审查意见 服务任务 输入:流程变量 输出:计算结果 网关 输入:条件表达式 输出:路由决策 关键映射关系: • 用户任务:审查意见写入 out_opinion 变量,驱动后续网关条件 • 服务任务:读取 in_* 变量,执行后写入 out_* 变量

2.4 本章小结

工作流基础回顾的核心要点:

  • 节点类型:用户任务(人工)、服务任务(自动)、网关(路由)是审批流的三大基石。
  • 节点生命周期:待处理 → 运行中 → 已完成/异常/取消,每个状态转换都是参数读写的时机。
  • 标准参数模型:全局/局部/任务三级作用域,配合 in_/out_/cfg_/tmp_ 命名规范,确保参数可追溯、可维护。