tech-flow-version-db-design.md 2.3 KB

流程版本管理数据库设计模板

来源:变更 flow-model-version-management
时间:2026-05-09

问题描述

流程模型需要支持多版本管理,每个版本需要记录部署时间、状态、部署人等关键信息,并能与 Flowable 流程定义关联。

解决方案

表结构设计:sys_flow_model_version

字段 类型 说明
id varchar(64) 主键
model_id varchar(64) 关联模型 ID
version int 版本号(业务版本)
flowable_version int Flowable 流程定义版本
status int 状态:0=待部署, 1=已部署, 2=已发布, 3=已归档
is_primary int 是否主版本:0=否, 1=是
bpmn_xml longtext BPMN XML 内容
deploy_time datetime 部署时间
deploy_by varchar(64) 部署人
create_time datetime 创建时间
tenant_id varchar(64) 租户 ID

核心约束

  1. 同一 model_id 下 version 必须唯一
  2. 每个 model_id 只能有一个 is_primary=1 的版本
  3. 状态流转:待部署 → 已部署 → 已发布 → 已归档(单向)
  4. 删除模型时,所有版本记录一并删除(外键约束)

SQL 示例

CREATE TABLE sys_flow_model_version (
  id VARCHAR(64) PRIMARY KEY,
  model_id VARCHAR(64) NOT NULL COMMENT '关联模型ID',
  version INT NOT NULL COMMENT '业务版本号',
  flowable_version INT COMMENT 'Flowable流程定义版本',
  status INT DEFAULT 0 COMMENT '状态:0待部署,1已部署,2已发布,3已归档',
  is_primary INT DEFAULT 0 COMMENT '是否主版本:0否,1是',
  bpmn_xml LONGTEXT COMMENT 'BPMN XML内容',
  deploy_time DATETIME COMMENT '部署时间',
  deploy_by VARCHAR(64) COMMENT '部署人',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  create_by VARCHAR(64),
  update_by VARCHAR(64),
  tenant_id VARCHAR(64) DEFAULT '1',
  UNIQUE KEY uk_model_version (model_id, version),
  KEY idx_model_id (model_id),
  KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程模型版本表';

相关文件

  • forge/forge-framework/forge-plugin-parent/forge-plugin-flow/src/main/java/com/mdframe/forge/starter/flow/entity/FlowModelVersion.java
  • forge/forge-framework/forge-plugin-parent/forge-plugin-flow/src/main/resources/sql/flow_version_init.sql