Skip to content

规范 01 · 数据模型

唯一事实来源。所有语言实现的建表 SQL 由此派生(维护约定:源在 jeeflow-java 仓 jeeflow-repository-jdbc/src/test/resources/,改表结构后跑 jeeflow-hub/scripts/sync-schema.sh 分发到各语言)。

通用约定:

  • id 使用 BIGINT(雪花算法或等价方案)
  • 时间字段使用 DATETIME / TIMESTAMP
  • variable 字段存储 JSON 字符串
  • create_user / update_userVARCHAR(64)

核心表(5 张)

wf_process_define(流程定义)

sql
CREATE TABLE wf_process_define (
    id              BIGINT PRIMARY KEY COMMENT '主键ID',
    name            VARCHAR(100)  NOT NULL COMMENT '流程编码(唯一)',
    display_name    VARCHAR(200)  NOT NULL COMMENT '流程显示名称',
    type            VARCHAR(50)   DEFAULT 'approval' COMMENT '流程类型',
    state           INT           DEFAULT 1 COMMENT '状态:1=启用 0=停用',
    content         BLOB COMMENT '流程定义JSON(LogicFlow格式)',
    version         INT           DEFAULT 0 COMMENT '版本号',
    create_time     DATETIME COMMENT '创建时间',
    create_user     VARCHAR(64) COMMENT '创建人',
    update_time     DATETIME COMMENT '更新时间',
    update_user     VARCHAR(64) COMMENT '更新人'
) COMMENT='流程定义表';

wf_process_instance(流程实例)

sql
CREATE TABLE wf_process_instance (
    id                  BIGINT PRIMARY KEY COMMENT '主键ID',
    parent_id           BIGINT COMMENT '父流程实例ID(子流程用)',
    process_define_id   BIGINT NOT NULL COMMENT '流程定义ID',
    state               INT DEFAULT 10 COMMENT '状态:10=进行中 20=已完成 45=已拒绝',
    parent_node_name    VARCHAR(100) COMMENT '父流程节点名称(子流程用)',
    business_no         VARCHAR(100) COMMENT '业务流水号',
    operator            VARCHAR(64) COMMENT '发起人',
    expire_time         DATETIME COMMENT '期望完成时间',
    variable            TEXT COMMENT '流程变量(JSON)',
    create_time         DATETIME COMMENT '创建时间',
    create_user         VARCHAR(64) COMMENT '创建人',
    update_time         DATETIME COMMENT '更新时间',
    update_user         VARCHAR(64) COMMENT '更新人'
) COMMENT='流程实例表';

wf_process_task(流程任务)

sql
CREATE TABLE wf_process_task (
    id                  BIGINT PRIMARY KEY COMMENT '主键ID',
    process_instance_id BIGINT NOT NULL COMMENT '流程实例ID',
    task_name           VARCHAR(100) NOT NULL COMMENT '任务节点编码(对应节点id)',
    display_name        VARCHAR(200) NOT NULL COMMENT '任务节点显示名称',
    task_type           INT DEFAULT 0 COMMENT '任务类型:0=主办 1=协办',
    perform_type        INT DEFAULT 0 COMMENT '参与方式:0=普通 1=会签',
    task_state          INT DEFAULT 10 COMMENT '状态:10=进行中 20=已完成 99=已废弃',
    operator            VARCHAR(64) COMMENT '实际操作人',
    finish_time         DATETIME COMMENT '完成时间',
    expire_time         DATETIME COMMENT '期望完成时间',
    form_key            VARCHAR(100) COMMENT '表单标识',
    task_parent_id      BIGINT COMMENT '上一步任务ID(驳回用)',
    variable            TEXT COMMENT '任务变量(JSON,会签计数等)',
    create_time         DATETIME COMMENT '创建时间',
    create_user         VARCHAR(64) COMMENT '创建人',
    update_time         DATETIME COMMENT '更新时间',
    update_user         VARCHAR(64) COMMENT '更新人'
) COMMENT='流程任务表';

wf_process_task_actor(任务参与者)

sql
CREATE TABLE wf_process_task_actor (
    id                BIGINT PRIMARY KEY COMMENT '主键ID',
    process_task_id   BIGINT NOT NULL COMMENT '流程任务ID',
    actor_id          VARCHAR(64) NOT NULL COMMENT '参与者ID',
    create_time       DATETIME COMMENT '创建时间',
    create_user       VARCHAR(64) COMMENT '创建人'
) COMMENT='任务参与者表';
CREATE INDEX idx_task_actor_task ON wf_process_task_actor(process_task_id);
CREATE INDEX idx_task_actor_actor ON wf_process_task_actor(actor_id);

wf_process_cc_instance(抄送)

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

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

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

wf_process_design(流程设计)

设计器保存的设计稿(流程 JSON 草稿)。**发布(deploy)**后生成 wf_process_define 记录。 字段对齐 mldong 框架 boot3;与 boot3 的差异:不采用逻辑删除(is_deleted),删除即物理删除。

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

wf_process_design_his(流程设计历史)

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

sql
CREATE TABLE wf_process_design_his (
    id                BIGINT PRIMARY KEY COMMENT '主键ID',
    process_design_id BIGINT NOT NULL COMMENT '流程设计ID',
    content           BLOB COMMENT '流程模型定义(LogicFlow JSON)',
    create_time       DATETIME COMMENT '创建时间',
    create_user       VARCHAR(64) COMMENT '创建人'
) COMMENT='流程设计历史表';
CREATE INDEX idx_design_his_pdid ON wf_process_design_his(process_design_id);

wf_process_surrogate(流程委托代理)

授权人(operator)在时间窗内把某流程(process_name)的待办委托给代理人(surrogate)。 引擎侧通过 SurrogateInterceptor(参考实现)在任务创建后把代理人加入参与者。

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

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