Appearance
规范 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_user为VARCHAR(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='流程委托代理表';