外观
流程模型
概述
流程模型模块是 BPM 工作流的「设计中枢」,负责把散落在各处的流程配置(分类、表单、节点、人员)组织成一个可被部署和运行的单元。它对应后端 module_bpm 下的 category(分类)、model(模型)与 definition(定义)三个子模块,统一挂载在 /bpm 路由前缀下。

设计态与运行态
BPM 把「流程长什么样」和「流程正在跑哪一版」拆成两层:
- 流程模型(model,设计态):可反复编辑的草稿。包含名称、图标、分类、表单、钉钉飞书风格设计器 JSON、发起人范围、状态等。对应表
bpm_model。 - 流程定义(definition,运行态):模型「发布」后的只读快照。每次发布生成一个新的版本,记录当时的表单配置、节点结构、发起人等,对应表
bpm_process_definition。
两者通过 key 关联:模型创建时若不传 key,系统自动生成 PROC_xxxx 唯一标识;发布后定义继承同一 key,并以 version 区分版本。
流程分类

分类用于对模型做业务归组,本身不参与流程运转,主要在前端「模型列表」中作为分组卡片展示。
关键字段:
code:分类编码,全局唯一,是模型category字段引用的依据。name:分类名称。status:0开启 /1关闭。仅开启状态会出现在simple-list(模型创建时的下拉选择)中。sort:排序,支持批量调整。
流程模型
流程定义与设计
模型是流程配置的主体。除基础信息外,它承载了「用哪套表单」「谁能发起」「流程结构如何」三件大事。关键枚举:
| 字段 | 取值 | 含义 |
|---|---|---|
model_type | 10 / 20 | 设计器类型:支持 20 钉钉飞书风格设计器 |
form_type | 10 / 20 | 表单类型:流程表单(动态表单)/ 业务表单(自定义路由) |
start_user_type | 0 / 1 / 2 | 发起人类型:全员 / 指定人员 / 指定部门 |
status | 1 / 2 | 模型状态:激活 / 挂起(改状态时同步作用于其全部定义) |
当 form_type = 20 时通过 form_custom_create_path / form_custom_view_path 指向业务表单路由。发起人范围由 start_user_type 配合 start_user_ids / start_dept_ids 决定,manager_user_ids 用于配置可管理人员。
基本信息

流程设计

发布流程
「发布」是把设计态模型固化为运行态定义的关键动作,流程引擎会做一系列校验和快照处理:
要点:
- 发布前调用
BpmProcessEngine.validate_simple_model校验钉钉飞书风格设计器 JSON,结构不合法会拦截。 - 若关联了流程表单(
form_type = 10),会把表单的conf与fields一并快照进定义,后续运行中不再依赖原表单改动。 - 同一模型每次发布
version递增,旧版本自动置为挂起,仅最新激活版本可用于发起流程。 clean用于清理模型下的全部历史定义版本(谨慎使用)。
前端:模型管理
模型列表页 views/bpm/model/index.vue 以「分类 → 模型卡片」的层级展示,支持按名称搜索、新建模型、新建分类、分类拖拽排序。
创建/修改走向导页 views/bpm/model/form/index.vue,分四步,对应模型的核心组成:
- 基本信息:名称、图标、
category、表单类型与表单来源、start_user_type及发起人范围。 - 表单设计:选择已有流程表单,或对接业务表单路由。
- 流程设计:钉钉飞书风格设计器编排节点(审批人、抄送、条件、子流程等,详见《流程框架》)。
- 更多设置:自动审批、标题/摘要、撤回、流程编号规则等增强配置。
向导保存后回到列表,点击「发布」即触发上面描述的部署流程。路由 BpmModelCreate / BpmModelUpdate 为隐藏路由,由列表页跳转进入。