提供一个工作流的表设计

限制:允许定义多个工作流,但每个条工作流的两个节点间仅允许【同意】、【拒绝】两种选择。无法支持动态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='业务数据-实际工作流表';
相关推荐
青山师2 小时前
动态代理深度解析:JDK与CGLIB底层实现与实战
java·设计模式·面试·动态代理·java面试·cglib
生活真难3 小时前
SpringCloud - 任务调度 - xxl-job-java
java·spring boot·spring cloud
人道领域3 小时前
【黑马点评日记】:用户签到功能详解——从Bitmap入门到避坑指南
java·数据库·redis·后端
梦梦代码精3 小时前
《企业开源商城选型:商业闭环、二次开发与成本平衡》
java·开发语言·低代码·开源·github
狼与自由4 小时前
灰度发布的策略
java
神仙别闹4 小时前
基于QT(C++)实现线性表的建立、插入、删除、查找等基本操作
java·c++·qt
Kiyra4 小时前
从上传到可问答:Interview Agent 的知识库 RAG 链路
java·人工智能·后端·spring·职场和发展
拙野4 小时前
工作中Mybatis动态SQL的使用
java·sql·mybatis
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题】【Java基础篇】第39题:说说反射的用途及实现原理,Java获取反射(Class)的三种方法
java·开发语言·后端·python·面试