Skip to content

流程模型 ​

概述 ​

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

image-20260930165557316

设计态与运行态 ​

BPM 把「流程长什么样」和「流程正在跑哪一版」拆成两层:

  • 流程模型(model,设计态):可反复编辑的草稿。包含名称、图标、分类、表单、钉钉飞书风格设计器 JSON、发起人范围、状态等。对应表 bpm_model。
  • 流程定义(definition,运行态):模型「发布」后的只读快照。每次发布生成一个新的版本,记录当时的表单配置、节点结构、发起人等,对应表 bpm_process_definition。

两者通过 key 关联:模型创建时若不传 key,系统自动生成 PROC_xxxx 唯一标识;发布后定义继承同一 key,并以 version 区分版本。

流程分类 ​

image-20260930165922872

分类用于对模型做业务归组,本身不参与流程运转,主要在前端「模型列表」中作为分组卡片展示。

关键字段:

  • code:分类编码,全局唯一,是模型 category 字段引用的依据。
  • name:分类名称。
  • status:0 开启 / 1 关闭。仅开启状态会出现在 simple-list(模型创建时的下拉选择)中。
  • sort:排序,支持批量调整。

流程模型 ​

流程定义与设计 ​

模型是流程配置的主体。除基础信息外,它承载了「用哪套表单」「谁能发起」「流程结构如何」三件大事。关键枚举:

字段取值含义
model_type10 / 20设计器类型:支持 20 钉钉飞书风格设计器
form_type10 / 20表单类型:流程表单(动态表单)/ 业务表单(自定义路由)
start_user_type0 / 1 / 2发起人类型:全员 / 指定人员 / 指定部门
status1 / 2模型状态:激活 / 挂起(改状态时同步作用于其全部定义)

当 form_type = 20 时通过 form_custom_create_path / form_custom_view_path 指向业务表单路由。发起人范围由 start_user_type 配合 start_user_ids / start_dept_ids 决定,manager_user_ids 用于配置可管理人员。

基本信息

image-20261003150732300

流程设计

image-20261003150947208

发布流程 ​

「发布」是把设计态模型固化为运行态定义的关键动作,流程引擎会做一系列校验和快照处理:

要点:

  • 发布前调用 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 为隐藏路由,由列表页跳转进入。