数据库设计
2025/12/3大约 7 分钟
FlowMind 系统数据库设计
1. 概述
FlowMind 系统数据库设计基于 RuoYi-Cloud 框架和 Flowable 工作流引擎,本文档重点介绍 Flowable 相关的数据库表结构和草稿箱功能设计。
2. 系统基础数据库
FlowMind 系统基础数据库采用 RuoYi-Cloud 框架的标准设计,包括用户管理、角色管理、部门管理等系统基础表。这些表结构遵循 RuoYi-Cloud 的设计规范,提供了完整的权限管理和组织架构支持。
RuoYi-Cloud 数据库设计特点:
- 采用逻辑删除机制(del_flag字段)
- 统一的审计字段(create_by, create_time, update_by, update_time)
- 标准化的命名规范(sys_前缀表示系统表)
- 完善的索引设计,提高查询效率
3. Flowable 工作流数据库
FlowMind 使用 Flowable 工作流引擎,其核心表结构由 Flowable 自动创建和管理。Flowable 数据库表以 act_ 为前缀,主要分为以下几类:
3.1 表结构分类
- ACT_RE_: 流程定义和静态资源表(repository)
- ACT_RU_: 运行时表(runtime),存储流程实例、任务、变量等运行时数据
- ACT_HI_: 历史表(history),存储历史流程实例、任务、变量等数据
- ACT_ID_: 身份表(identity),存储用户、组等信息
- ACT_GE_: 通用数据表(general)
3.2 核心表结构
Flowable 工作流引擎会自动创建大量核心表,包括流程定义表、流程实例表、任务表等。具体表结构可参考 Flowable 官方文档,此处不再详细列出。
4. 审批中心与草稿箱扩展模块
FlowMind 系统在 Flowable 工作流引擎基础上,扩展了审批中心和草稿箱功能,以满足企业级审批流程需求。
4.1 流程分类表 (wf_category)
CREATE TABLE `wf_category` (
`category_id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '流程分类id',
`category_name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '流程分类名称',
`code` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '分类编码',
`remark` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '备注',
`create_by` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
PRIMARY KEY (`category_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '流程分类表' ROW_FORMAT = Dynamic;4.2 流程表单信息表 (wf_form)
CREATE TABLE `wf_form` (
`form_id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '表单主键',
`form_name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '表单名称',
`content` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '表单内容',
`create_by` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注',
`del_flag` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
PRIMARY KEY (`form_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '流程表单信息表' ROW_FORMAT = Dynamic;4.3 流程实例关联表单表 (wf_deploy_form)
CREATE TABLE `wf_deploy_form` (
`deploy_id` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '流程实例主键',
`form_key` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '表单Key',
`node_key` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '节点Key',
`form_name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '表单名称',
`node_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '节点名称',
`content` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '表单内容',
PRIMARY KEY (`deploy_id`, `form_key`, `node_key`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '流程实例关联表单' ROW_FORMAT = Dynamic;4.4 流程抄送表 (wf_copy)
CREATE TABLE `wf_copy` (
`copy_id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '抄送主键',
`title` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '抄送标题',
`process_id` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '流程主键',
`process_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '流程名称',
`category_id` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '流程分类主键',
`deployment_id` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '部署主键',
`instance_id` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '流程实例主键',
`task_id` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '任务主键',
`user_id` bigint(0) NULL DEFAULT NULL COMMENT '用户主键',
`originator_id` bigint(0) NULL DEFAULT NULL COMMENT '发起人主键',
`originator_name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '发起人名称',
`create_by` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
`remark` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`copy_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '流程抄送表' ROW_FORMAT = Dynamic;4.5 流程草稿表 (wf_draft)
CREATE TABLE `wf_draft` (
`draft_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '草稿ID',
`user_id` bigint(20) NOT NULL COMMENT '用户ID',
`definition_id` varchar(255) NOT NULL COMMENT '流程定义ID',
`deploy_id` varchar(64) DEFAULT '' COMMENT '部署ID',
`process_name` varchar(255) DEFAULT '' COMMENT '流程名称',
`form_data` longtext COMMENT '表单数据',
`form_model` longtext COMMENT '表单模型',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`draft_id`),
UNIQUE KEY `uk_user_definition` (`user_id`,`definition_id`) USING BTREE COMMENT '同一用户同一流程定义只能有一个草稿',
KEY `idx_user_id` (`user_id`) USING BTREE,
KEY `idx_definition_id` (`definition_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='流程草稿表';5. 草稿箱功能设计
5.1 功能概述
草稿箱功能是 FlowMind 系统的重要特性,允许用户在提交审批前保存未完成的申请单,提高用户体验和工作效率。
5.2 设计特点
- 自动保存:系统定期自动保存用户编辑的内容,防止数据丢失
- 多格式支持:支持表单数据和表单模型的保存
- 唯一约束:同一用户同一流程定义只能有一个草稿
- 权限控制:用户只能查看和编辑自己的草稿
- 高效索引:通过用户ID和流程定义ID建立索引,提高查询效率
5.3 业务流程
- 用户创建新的流程申请或编辑已有申请
- 系统自动保存编辑内容到草稿表
- 用户可以随时查看、编辑或删除草稿
- 用户完成编辑后,可以基于草稿发起正式流程
- 流程发起后,草稿可以继续保留或删除
6. 工作流中心菜单设计
FlowMind 系统提供了完整的工作流中心菜单,包括:
流程管理:
- 流程分类
- 表单配置
- 流程模型
- 部署管理
办公管理:
- 新建流程
- 我的流程
- 待办任务
- 待签任务
- 已办任务
- 抄送我的
每个菜单都有对应的权限控制,确保用户只能访问授权范围内的功能。
7. 总结
FlowMind 数据库设计遵循了以下原则:
- 基于成熟的 Flowable 工作流引擎,确保工作流功能的稳定性和可靠性
- 结合 RuoYi-Cloud 的系统管理模块,提供完善的用户、角色、权限管理
- 扩展了流程分类、表单管理、抄送管理等功能,满足企业级审批流程需求
- 草稿箱功能提供自动保存和高效索引,提高用户体验
- 合理的索引设计,提高查询性能
- 统一的命名规范和审计字段,便于系统维护和管理
- 完善的备份与恢复策略,确保数据安全
该数据库设计能够支撑 FlowMind 系统的核心业务功能,特别是工作流和草稿箱功能,同时具备良好的扩展性和可维护性,能够适应未来业务的发展需求。