Skip to content

规范 01 · 数据模型 ​

下方各表的建表 SQL 是从编辑源逐字生成的,编辑源才是权威:jeeflow-java 仓 jeeflow-repository-jdbc/src/test/resources/schema-mysql.sql(同目录并排 h2 / postgres 两份方言, 各语言仓的建表 SQL 由它分发而来)。改表结构的顺序是:改编辑源 → 分发到各语言仓 → 重新生成本节; 本节与编辑源的逐字一致性由门禁核对,漂移即拦发版。这里保留完整 DDL,是为了让你复制即用。

通用约定:

  • id 使用 BIGINT,无自增:由应用层的 ID 生成器赋值(跨库一致)
  • 时间字段使用 DATETIME / TIMESTAMP,MySQL 侧写成 DATETIME(3)(带毫秒,同一秒内的办理留痕可判先后)
  • variable 字段存储 JSON 字符串
  • create_user / update_user 为 VARCHAR(64)
  • 实例/任务状态码的全集与迁移图见规范 03 · 状态机;下方 DDL 注释只列了部分码值,状态名称以规范 03 为准

核心表(5 张) ​

wf_process_define(流程定义) ​

sql
CREATE TABLE IF NOT EXISTS wf_process_define (
  id          BIGINT       NOT NULL COMMENT '主键',
  name        VARCHAR(64)  NOT NULL COMMENT '唯一编码',
  display_name VARCHAR(100) NOT NULL COMMENT '显示名称',
  type        VARCHAR(32)  NULL COMMENT '流程类型',
  state       INT          NULL COMMENT '流程是否可用(1可用;0不可用)',
  content     BLOB         NULL COMMENT '流程模型定义',
  version     INT          NULL COMMENT '版本',
  create_time DATETIME(3)  NULL COMMENT '创建时间',
  create_user VARCHAR(64)  NULL COMMENT '创建用户',
  update_time DATETIME(3)  NULL COMMENT '更新时间',
  update_user VARCHAR(64)  NULL COMMENT '更新用户',
  PRIMARY KEY (id),
  KEY idx_process_define_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程定义';

wf_process_instance(流程实例) ​

sql
CREATE TABLE IF NOT EXISTS wf_process_instance (
  id               BIGINT      NOT NULL COMMENT '主键',
  parent_id        BIGINT      NULL COMMENT '父流程ID,子流程实例才有值',
  process_define_id BIGINT     NULL COMMENT '流程定义ID',
  state            INT         NULL COMMENT '流程实例状态(10:进行中;20:已完成;45:已拒绝)',
  parent_node_name VARCHAR(100) NULL COMMENT '父流程依赖的节点名称',
  business_no      VARCHAR(64) NULL COMMENT '业务编号',
  operator         VARCHAR(64) NULL COMMENT '流程发起人',
  expire_time      DATETIME(3) NULL COMMENT '期望完成时间',
  variable         TEXT        NULL COMMENT '附属变量json存储',
  create_time      DATETIME(3) NULL COMMENT '创建时间',
  create_user      VARCHAR(64) NULL COMMENT '创建用户',
  update_time      DATETIME(3) NULL COMMENT '更新时间',
  update_user      VARCHAR(64) NULL COMMENT '更新用户',
  PRIMARY KEY (id),
  KEY idx_process_instance_pfid (process_define_id),
  KEY idx_process_instance_operator (operator)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程实例';

wf_process_task(流程任务) ​

sql
CREATE TABLE IF NOT EXISTS wf_process_task (
  id                BIGINT       NOT NULL COMMENT '主键',
  process_instance_id BIGINT     NOT NULL COMMENT '流程实例ID',
  task_name         VARCHAR(100) NOT NULL COMMENT '任务名称编码',
  display_name      VARCHAR(100) NOT NULL COMMENT '任务显示名称',
  task_type         INT          NULL COMMENT '任务类型(0:主办任务;1:协办任务;2:记录)',
  perform_type      INT          NULL COMMENT '参与类型(0:普通参与;1:会签参与)',
  task_state        INT          NULL COMMENT '任务状态(10:进行中;20:已完成;99:已废弃)',
  operator          VARCHAR(64)  NULL COMMENT '任务处理人',
  finish_time       DATETIME(3)  NULL COMMENT '任务完成时间',
  expire_time       DATETIME(3)  NULL COMMENT '任务期待完成时间',
  form_key          VARCHAR(100) NULL COMMENT '任务处理表单KEY',
  task_parent_id    BIGINT       NULL COMMENT '父任务ID',
  variable          TEXT         NULL COMMENT '附属变量json存储',
  create_time       DATETIME(3)  NULL COMMENT '创建时间',
  create_user       VARCHAR(64)  NULL COMMENT '创建用户',
  update_time       DATETIME(3)  NULL COMMENT '更新时间',
  update_user       VARCHAR(64)  NULL COMMENT '更新用户',
  PRIMARY KEY (id),
  KEY idx_process_task_piid (process_instance_id),
  KEY idx_process_task_name (task_name),
  KEY idx_process_task_operator (operator)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程任务';

wf_process_task_actor(任务参与者) ​

sql
CREATE TABLE IF NOT EXISTS wf_process_task_actor (
  id            BIGINT      NOT NULL COMMENT '主键',
  process_task_id BIGINT    NOT NULL COMMENT '流程任务ID',
  actor_id      VARCHAR(64) NOT NULL COMMENT '参与者ID',
  create_time   DATETIME(3) NULL COMMENT '创建时间',
  create_user   VARCHAR(64) NULL COMMENT '创建用户',
  PRIMARY KEY (id),
  KEY idx_process_task_actor_ptid (process_task_id),
  KEY idx_process_task_actor_aid (actor_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程任务和参与人关系';

wf_process_cc_instance(抄送) ​

sql
CREATE TABLE IF NOT EXISTS wf_process_cc_instance (
  id                 BIGINT      NOT NULL COMMENT '主键',
  process_instance_id BIGINT     NOT NULL COMMENT '流程实例ID',
  actor_id           VARCHAR(64) NOT NULL COMMENT '被抄送人ID',
  state              INT         NULL DEFAULT 0 COMMENT '抄送状态(1:已读;0:未读)',
  create_time        DATETIME(3) NULL COMMENT '创建时间',
  create_user        VARCHAR(64) NULL COMMENT '创建用户',
  update_time        DATETIME(3) NULL COMMENT '更新时间',
  update_user        VARCHAR(64) NULL COMMENT '更新用户',
  PRIMARY KEY (id),
  KEY idx_process_cc_instance_piid (process_instance_id),
  KEY idx_process_cc_instance_aid (actor_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程抄送实例';

扩展表(3 张,v1.1.0 管理扩展) ​

设计稿 / 历史 / 委托是"周边管理能力",引擎核心不依赖。设计动机见 设计原理 07 · 管理扩展与门面。

wf_process_design(流程设计) ​

设计器保存的设计稿(流程 JSON 草稿)。**发布(deploy)**后生成 wf_process_define 记录。 字段独立定义(v1.1.0 扩展表),与内置版(boot2/boot3)存在列形差,不迁移。

sql
CREATE TABLE IF NOT EXISTS wf_process_design (
  id            BIGINT       NOT NULL COMMENT '主键',
  name          VARCHAR(100) NOT NULL COMMENT '流程编码(唯一)',
  display_name  VARCHAR(200) NOT NULL COMMENT '流程显示名称',
  type          VARCHAR(50)  NULL DEFAULT 'approval' COMMENT '流程类型',
  icon          VARCHAR(200) NULL COMMENT '图标',
  is_deployed   INT          NULL DEFAULT 0 COMMENT '是否已部署(0:否;1:是)',
  remark        TEXT         NULL COMMENT '备注',
  create_time   DATETIME(3)  NULL COMMENT '创建时间',
  create_user   VARCHAR(64)  NULL COMMENT '创建用户',
  update_time   DATETIME(3)  NULL COMMENT '更新时间',
  update_user   VARCHAR(64)  NULL COMMENT '更新用户',
  PRIMARY KEY (id),
  KEY idx_process_design_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程设计';

wf_process_design_his(流程设计历史) ​

每次保存设计的 content 快照,支持设计器"历史版本"回看。

sql
CREATE TABLE IF NOT EXISTS wf_process_design_his (
  id                BIGINT      NOT NULL COMMENT '主键',
  process_design_id BIGINT      NOT NULL COMMENT '流程设计ID',
  content           BLOB        NULL COMMENT '流程模型定义',
  create_time       DATETIME(3) NULL COMMENT '创建时间',
  create_user       VARCHAR(64) NULL COMMENT '创建用户',
  PRIMARY KEY (id),
  KEY idx_process_design_his_pdid (process_design_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程设计历史';

wf_process_surrogate(流程委托代理) ​

授权人(operator)在时间窗内把某流程(process_name)的待办委托给代理人(surrogate)。 引擎侧通过 SurrogateInterceptor(内置、默认开启、可显式关闭)在任务创建后把代理人加入参与者, 生效判据(时间窗 / 空 processName 兜底 / 自委托过滤 / enabled 只认 1)见 05-spi 与 06-facade §4.5。

sql
CREATE TABLE IF NOT EXISTS wf_process_surrogate (
  id            BIGINT      NOT NULL COMMENT '主键',
  process_name  VARCHAR(100) NULL COMMENT '流程编码(为空=全部流程)',
  operator      VARCHAR(64) NOT NULL COMMENT '授权人',
  surrogate     VARCHAR(64) NOT NULL COMMENT '代理人',
  start_time    DATETIME(3) NULL COMMENT '授权开始时间',
  end_time      DATETIME(3) NULL COMMENT '授权结束时间',
  enabled       INT         NULL DEFAULT 1 COMMENT '是否启用(1:启用;0:停用)',
  create_time   DATETIME(3) NULL COMMENT '创建时间',
  create_user   VARCHAR(64) NULL COMMENT '创建用户',
  update_time   DATETIME(3) NULL COMMENT '更新时间',
  update_user   VARCHAR(64) NULL COMMENT '更新用户',
  PRIMARY KEY (id),
  KEY idx_process_surrogate_op (operator),
  KEY idx_process_surrogate_sur (surrogate)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程委托代理';

jeeflow · 轻量级多语言工作流引擎