上一章节我们讲了流程引擎的基本概念,讲了什么是流程引擎,流程引擎能给我们带来什么便利,解决什么业务问题,这一章节我们讲流程引擎的一些基本概念,流程引擎有哪些概念,流程定义,流程实例,流程节点,流程工作项,连线,这些我们都一一来认识它们,有问题可以直接评论区见,我会一一解答,为我和大家一起进步。
一、流程定义 vs 流程实例
一句话区分:流程定义是图纸,流程实例是按图纸正在建造的大楼。
1.1 流程定义
流程定义是一个静态模板,描述流程"长什么样"。
请假流程定义(设计态):
┌─────────────────────────────────────────────────────────┐
│ 流程名称:员工请假审批 │
│ 版本号:v2.0 │
│ │
│ [开始] → [提交请假申请] → [部门经理审批] → [人事归档] → [结束] │
│ │
│ 节点数:4 连线数:3 │
└─────────────────────────────────────────────────────────┘
关键属性:
| 属性 | 说明 | 举例 |
|---|---|---|
| 流程名称 | 唯一标识 | "员工请假审批" |
| 版本号 | 支持流程升级 | v1.0 → v2.0 |
| 节点集合 | 包含哪些步骤 | [申请](#属性 说明 举例 流程名称 唯一标识 "员工请假审批" 版本号 支持流程升级 v1.0 → v2.0 节点集合 包含哪些步骤 申请[归档] 连线集合 节点间如何流转 申请通过 → 经理审批)归档 |
| 连线集合 | 节点间如何流转 | 申请通过 → 经理审批 |
1.2 流程实例
流程实例是运行时实体------某人发起的一个具体流程。
张三的请假流程实例(运行态):
┌─────────────────────────────────────────────────────────┐
│ 流程实例ID:PI-20260607-001 │
│ 发起人:张三 │
│ 发起时间:2026-06-07 09:30 │
│ 当前状态:审批中 │
│ │
│ [开始]✓→ [提交请假申请]✓→ [部门经理审批]进行中→ [人事归档]→ [结束] │
│ │
│ 流程定义:员工请假审批 v2.0 │
└─────────────────────────────────────────────────────────┘
关键属性:
| 属性 | 说明 |
|---|---|
| 实例ID | 唯一标识,如 PI-20260607-001 |
| 关联定义 | 指向哪个流程定义 |
| 发起人 | 谁创建的这个流程 |
| 当前状态 | 运行中 / 已完成 / 已驳回 / 已废弃 |
| 当前节点 | 流程走到哪一步了 |
1.3 一对多关系
流程定义(1个)
│
┌─────────┼─────────┐
↓ ↓ ↓
实例A 实例B 实例C
(张三) (李四) (王五)
核心认知:一个流程定义可以产生无数个流程实例,就像一张图纸可以盖无数栋楼。每个实例有自己的状态、变量和执行路径,互不干扰。
1.4 类比总结
| 概念 | 类比 | 存在形式 |
|---|---|---|
| 流程定义 | 建筑图纸 | 静态,存数据库 |
| 流程实例 | 在建的大楼 | 运行时,有生命周期 |
| 关系 | 图纸 vs 按图纸建的楼 | 一对多 |
二、节点
一句话:节点是流程中的一个步骤,决定"谁来干活、干什么活、干完去哪"。
2.1 节点的三要素
┌──────────────┐
│ 参与者 │ → 谁来干活?
├──────────────┤
┌───────►│ 处理逻辑 │ → 干什么活?
│ ├──────────────┤
│ │ 流转方向 │ → 干完去哪?
│ └──────────────┘
2.2 节点类型
节点类型
│
┌───────────────────┼───────────────────┐
↓ ↓ ↓
人工节点 自动节点 控制节点
(需要人处理) (系统执行) (流程控制)
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
↓ ↓ ↓ ↓ ↓ ↓
审批 填写意见 计算 发通知 开始 结束
节点 节点 节点 节点 节点 节点
五种基础节点类型:
| 类型 | 作用 | 是否产生工作项 | 举例 |
|---|---|---|---|
| 开始节点 | 流程入口 | 否 | "发起请假"的起点 |
| 人工节点 | 需要人审批/填写 | 是 | "部门经理审批" |
| 自动节点 | 系统自动执行 | 否 | "自动计算加班时长" |
| 结束节点 | 流程出口 | 否 | "流程结束" |
| 分支/聚合 | 控制流转路径 | 否 | 条件分支、并行聚合 |
2.3 节点的 EKP 模型
// LbpmWorkitem 中关联的节点结构
public class LbpmWorkitem {
protected LbpmNode fdNode; // 当前节点
protected String fdStatus; // 工作项状态
protected SysOrgElement fdHandler; // 当前处理人
protected SysOrgElement fdExpecter; // 预计处理人(下一个)
}
关键认知:节点不是孤立存在的,节点之间通过连线连接,连线决定了"下一步去哪"。
三、工作项
一句话:工作项就是流程跑到某个节点时,给处理人生成的"待办任务卡片"。
3.1 工作项的产生
流程定义(静态) 流程实例(运行时)
┌──────────────────┐ ┌─────────────────────────┐
│ [提交申请] │ │ 张三填表 ✓ │
│ [经理审批] ──触发→ │ 李四待审批 ← 工作项产生! │
│ [人事归档] │ │ (还未到达) │
└──────────────────┘ └─────────────────────────┘
↑
工作项在实例运行时才出现
3.2 工作项的核心属性
| 属性 | 说明 | 举例 |
|---|---|---|
| 状态 | 待处理 / 处理中 / 已完成 | "待处理" |
| 处理人 | 当前正在处理的人 | 李四 |
| 所属节点 | 属于哪个流程节点 | "部门经理审批" |
| 所属流程 | 属于哪个流程实例 | PI-20260607-001 |
| 创建时间 | 什么时候生成的 | 2026-06-07 09:30 |
| 父工作项 | 沟通/加签时关联的原工作项 | --- |
3.3 工作项生命周期
创建 → 待处理 → 处理中 → 已完成
↑ │
│ 退回 │ 驳回
└───────┘
3.4 生活化类比
工作项就像外卖订单:
创建工作项 = 用户下单
待处理 = 订单等待骑手接单
处理中 = 骑手已接单,正在配送
已完成 = 送达确认
四、流转规则
一句话:流转规则定义了"从哪个节点,在什么条件下,走到哪个节点"。
4.1 基本的流转模型
[提交申请] ──通过──→ [经理审批] ──通过──→ [人事归档]
│ │
│ 废弃 │ 驳回
↓ ↓
[结束] [提交申请]
4.2 流转的三要素
| 要素 | 说明 | 举例 |
|---|---|---|
| 源节点 | 从哪里来 | "经理审批" |
| 目标节点 | 到哪里去 | "人事归档" |
| 条件 | 在什么情况下走 | "通过" or "驳回" |
4.3 常见流转模式
1. 顺序流转(串行)
[节点A] → [节点B] → [节点C]
最基础的模式,一个接一个
2. 条件分支
┌→ [分支1] ─┐
[节点A] ──┤ ├→ [节点D]
└→ [分支2] ─┘
根据条件走不同路径(如:金额<1000走经理,≥1000走总监)
3. 并行流转
┌→ [财务审批] ─┐
[提交] → ├→ [法务审批] ─┼→ [聚合] → [结束]
└→ [技术审批] ─┘
多条路径同时执行,最后汇合
4. 循环流转
[节点A] → [节点B] → 不满足 → 回到[节点A]
不满足条件时重新走
4.4 流转的本质(埋一个伏笔)
从代码层面看,流转就是:完成当前工作项 → 触发原子操作 → 创建下一个节点的工作项。
这个"原子操作"就是我们下节课要讲的核心概念。
五、四者关系全景图
┌─────────────────────┐
│ 流程定义 │ 静态模板
│ (图纸,存数据库) │
└─────────┬───────────┘
│ 启动
↓
┌─────────────────────┐
│ 流程实例 │ 运行时容器
│ (一栋在建的大楼) │
│ id, 状态, 发起人 │
└─────────┬───────────┘
│ 包含
┌───────────────┼───────────────┐
↓ ↓ ↓
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 节点A │ │ 节点B │ │ 节点C │ 步骤单元
│ (审批) │ │ (自动) │ │ (结束) │
└─────┬─────┘ └─────┬────┘ └──────────┘
│ │
│ 产生 │ 产生
↓ ↓
┌──────────┐ ┌──────────┐
│ 工作项1 │ │ 工作项2 │ 待办卡片
│(张三待办) │ │(系统执行) │
└──────────┘ └──────────┘
------ 流转规则 ------ 节点间的连线 ------ 定义条件和方向
六、总结
| 概念 | 一句话 | 类比 | 存在形式 |
|---|---|---|---|
| 流程定义 | 流程长什么样 | 建筑图纸 | 静态 |
| 流程实例 | 一个具体的流程 | 在建的大楼 | 运行时 |
| 节点 | 流程中的一个步骤 | 大楼的一层 | 定义的一部分 |
| 工作项 | 处理人的待办卡片 | 工单/任务卡 | 运行时产生 |
| 流转规则 | 节点间的跳转条件 | 图纸上的箭头 | 定义的一部分 |