提供一个工作流的表设计

限制:允许定义多个工作流,但每个条工作流的两个节点间仅允许【同意】、【拒绝】两种选择。无法支持动态N无限分支的情况。

sql 复制代码
CREATE TABLE IF NOT EXISTS `Workflow` (
    `id` INT  NOT NULL AUTO_INCREMENT COMMENT 'ID,自增主键',
    `name` VARCHAR(100) NOT NULL COMMENT '工作流名称',
    PRIMARY KEY (`id`)
)  COMMENT='工作流表_工作流定义(没啥大用,只是定义表)';

CREATE TABLE IF NOT EXISTS `Workflow_schema` (
    `id` INT  NOT NULL AUTO_INCREMENT COMMENT 'ID,自增主键',
    `workflowId` VARCHAR(100) NOT NULL COMMENT 'Workflow 外建',
    `status` TINYINT DEFAULT 1 COMMENT '状态',
    `operation_authority_scope` TINYINT DEFAULT 1 COMMENT '允许执行的权限(多个逗号分隔)',
    `agree_to_id` INT  NOT NULL  COMMENT '同意后的下个流程,Workflow_schema 外建,指向本表',
    `reject_to_id` INT  NOT NULL  COMMENT '拒绝后的下个流程,Workflow_schema 外建,指向本表',
    `index` INT  NOT NULL default 1 COMMENT '排序号',
    PRIMARY KEY (`id`)
)  COMMENT='工作流表_工作流流程字典';


CREATE TABLE IF NOT EXISTS `BussinessData` (
    `id` INT  NOT NULL AUTO_INCREMENT COMMENT 'ID,自增主键',
    `data1` VARCHAR(50) NOT NULL COMMENT 'data1',
    `data2` VARCHAR(100) NOT NULL COMMENT 'data2',
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`)
)  COMMENT='业务数据表';


CREATE TABLE IF NOT EXISTS `BussinessData_Workflow` (
    `id` INT  NOT NULL AUTO_INCREMENT COMMENT 'ID,自增主键',
    `parentId` VARCHAR(50) NOT NULL COMMENT 'BussinessData 外建',
    `workflowId` VARCHAR(50) NOT NULL COMMENT 'Workflow 外建,配合 status,能便找到Workflow_schema信息的唯一记录',
    `status` TINYINT DEFAULT 1 COMMENT '状态(冗余字段)',
    `operation_authority` TINYINT DEFAULT 1 COMMENT '执行的权限(具体执行的权限),即该值必须在Workflow_schema 表 operation_authority_scope的范围内',
    `operation_user` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '执行人',
    `operation_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '执行时间',
    PRIMARY KEY (`id`)
)  COMMENT='业务数据-实际工作流表';
相关推荐
vx-程序开发4 分钟前
【毕设分享】springboot废品上门回收微信小程序---附源码94491
java·spring boot·毕业设计·源码·课程设计·毕设·大作业
宸津-代码粉碎机5 分钟前
Spring AI 高危CVE漏洞深度复盘|生产禁跑版本汇总+临时防御+修复方案
java·大数据·人工智能·python·spring
敲代码的嘎仔34 分钟前
用 Redis 合并写 + DelayQueue 延迟检测,把视频播放进度写库频率降到 1/60
java·开发语言·数据库·redis·缓存·音视频·高并发
youyou-06061 小时前
AUTOSAR‑COM 常见问题 QA (1)
java·linux·服务器·单片机·汽车
谢亮_vipxieliang1 小时前
ValidX时间段验证详解:ISO 8601标准与简化格式
java·spring boot·后端·spring·spring cloud·hibernate
Lsetea1 小时前
Java 请求 HTTPS 报 PKIX path building failed:从证书链到 truststore 的完整排查
java·https·ssl证书·keytool·truststore
蓝桉柒72 小时前
java判断语句
java·开发语言
Zane19942 小时前
String::compareTo凭什么能当参数传?方法引用的四种形式讲透
java·后端
青山木2 小时前
Hot 100 --- 打家劫舍
java·数据结构·算法·leetcode·动态规划
敲代码的嘎仔2 小时前
28届后端开发-百人小厂面试题
java·后端·面试·程序员·秋招·实习·转正