Skip to content

数据库设计

本精简为原则,核心表共4张,并没有设计历史表,如后续需要,再考虑增加历史表的设计。

注:本工作流是在Mysql8.0的数据库进行开发的。

ER图

img

表说明

流程定义(wf_process_define)

列名类型默认值备注
idvarchar(36)-主键
namevarchar(64)-唯一编码
display_namevarchar(100)-显示名称
type_idvarchar(36)-流程类型ID
stateint(11)0流程是否可用(1可用;0不可用)
contentjson-流程模型定义
versionint(11)-版本
create_timeint(10)-创建时间
create_uservarchar(36)-创建用户
update_timeint(10)-更新时间
update_uservarchar(36)-更新用户
is_delint(1)0是否删除

流程实例(wf_process_instance)

列名类型默认值备注
idvarchar(36)-主键
parent_idvaerchar(36)-父流程ID,子流程实例才有值
process_define_idvarchar(36)-流程定义ID
stateint(11)-流程实例状态(10:进行中;20:已完成;30:已撤回;40:强行中止;50:挂起;99:已废弃)
parent_node_namevarchar(100)-父流程依赖的节点名称
business_novarchar(64)-业务编号
operatorvarchar(64)-流程发起人
expire_timeint(10)-期望完成时间
variablejson-附属变量json存储
create_timeint(10)-创建时间
create_uservarchar(36)-创建用户
update_timeint(10)-更新时间
update_uservarchar(36)-更新用户

流程任务(wf_process_task)

列名类型默认值备注
idvarchar(36)-主键
process_instance_idvarchar(36)-流程实例ID
task_namevarchar(36)-任务名称编码
display_namevarchar(100)-任务显示名称
task_typeint(11)-任务类型(0:主办任务;1:协办任务)
perform_typeint(11)-参与类型(0:普通参与;1:会签参与)
task_stateint(11)-任务状态(10:进行中;20:已完成;30:已撤回;40:强行中止;50:挂起;99:已废弃)
operatorvarchar(64)-任务处理人
finish_timeint(10)-任务完成时间
expire_timeint(10)-任务期待完成时间
form_keyvarchar(100)-任务处理表单KEY
task_parent_idvarchar(36)-父任务ID
variablejson-附属变量json存储
create_timevarchar(3)-创建时间
create_uservarchar(36)-创建用户
update_timeint(10)-更新时间
update_uservarchar(36)-更新用户

流程任务和参与人关系(wf_process_task_actor)

列名类型默认值备注
idvarchar(36)-主键
process_task_idvarchar(36)-流程任务ID
actor_idvarchar(36)-参与者ID
create_timeint(10)-创建时间
create_uservarchar(36)-创建用户

建表DLL

php
CREATE TABLE wf_process_define (
  id VARCHAR(36) NOT NULL,
  name VARCHAR(64) NOT NULL,
  display_name VARCHAR(100) NOT NULL,
  type_id VARCHAR(36) NOT NULL,
  state INT(11) NOT NULL DEFAULT 0,
  content JSON NOT NULL,
  version INT(11),
  create_time INT(10) NOT NULL,
  create_user VARCHAR(36) NOT NULL,
  update_time INT(10),
  update_user VARCHAR(36),
  is_del INT(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (id)
);
CREATE TABLE wf_process_instance (
  id VARCHAR(36) NOT NULL,
  parent_id VARCHAR(36),
  process_define_id VARCHAR(36) NOT NULL,
  state INT(11),
  parent_node_name VARCHAR(100),
  business_no VARCHAR(64),
  operator VARCHAR(64),
  expire_time INT(10),
  variable JSON,
  create_time INT(10) NOT NULL,
  create_user VARCHAR(36) NOT NULL,
  update_time INT(10),
  update_user VARCHAR(36),
  PRIMARY KEY (id)
);
CREATE TABLE wf_process_task (
  id VARCHAR(36) NOT NULL,
  process_instance_id VARCHAR(36) NOT NULL,
  task_name VARCHAR(36) NOT NULL,
  display_name VARCHAR(100),
  task_type INT(11),
  perform_type INT(11),
  task_state INT(11),
  operator VARCHAR(64),
  finish_time INT(10),
  expire_time INT(10),
  form_key VARCHAR(100),
  task_parent_id VARCHAR(36),
  variable JSON,
  create_time INT(10),
  create_user VARCHAR(36),
  update_time INT(10),
  update_user VARCHAR(36),
  PRIMARY KEY (id)
);
CREATE TABLE wf_process_task (
  id VARCHAR(36) NOT NULL,
  process_instance_id VARCHAR(36) NOT NULL,
  task_name VARCHAR(36) NOT NULL,
  display_name VARCHAR(100),
  task_type INT(11),
  perform_type INT(11),
  task_state INT(11),
  operator VARCHAR(64),
  finish_time INT(10),
  expire_time INT(10),
  form_key VARCHAR(100),
  task_parent_id VARCHAR(36),
  variable JSON,
  create_time INT(10),
  create_user VARCHAR(36),
  update_time INT(10),
  update_user VARCHAR(36),
  PRIMARY KEY (id)
);