蓝凌EKP18产品:流程引擎技术篇之流程核心概念模型

上一章节我们讲了流程引擎的基本概念,讲了什么是流程引擎,流程引擎能给我们带来什么便利,解决什么业务问题,这一章节我们讲流程引擎的一些基本概念,流程引擎有哪些概念,流程定义,流程实例,流程节点,流程工作项,连线,这些我们都一一来认识它们,有问题可以直接评论区见,我会一一解答,为我和大家一起进步。

一、流程定义 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   │                待办卡片
        │(张三待办) │   │(系统执行) │
        └──────────┘   └──────────┘
              
          ------ 流转规则 ------ 节点间的连线 ------ 定义条件和方向

六、总结

概念 一句话 类比 存在形式
流程定义 流程长什么样 建筑图纸 静态
流程实例 一个具体的流程 在建的大楼 运行时
节点 流程中的一个步骤 大楼的一层 定义的一部分
工作项 处理人的待办卡片 工单/任务卡 运行时产生
流转规则 节点间的跳转条件 图纸上的箭头 定义的一部分

相关推荐
没有钱的钱仔1 小时前
pytorch_cuda安装
人工智能·pytorch·python
大模型最新论文速读1 小时前
06-11 · LLM 最新论文速览
论文阅读·人工智能·深度学习·机器学习·自然语言处理
xianghongtao01161 小时前
在你思考之前:System 0 与“认知殖民”——三种 AI 认知框架之争
人工智能·认知框架·认知殖民
Full Stack Developme1 小时前
Apache Tika 教程
java·开发语言·python·apache
私人珍藏库1 小时前
[Android] 视频下载鸟 v20.02 会员
android·人工智能·智能手机·app·工具·多功能
吨吨不打野1 小时前
梯度变化的数学解释
人工智能
鹅城剑仙2 小时前
Java线程池完全指南
java
李白的天不白2 小时前
SmartAdmin(基于 Spring Boot 框架)中配置跨域请求 VUE3 设置请求头
java·前端
SmartBrain2 小时前
编程助手工具自动化开发对比报告:OpenSpec、Claude Code、Cursor、PI
大数据·人工智能