ebpe/models/ddl.sql
2025-08-27 18:28:22 +08:00

143 lines
7.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 企业表
CREATE TABLE orgs (
orgid VARCHAR(32) PRIMARY KEY COMMENT '企业ID主键',
name VARCHAR(255) NOT NULL COMMENT '企业名称',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) COMMENT='企业表';
-- 流程定义表
CREATE TABLE flow_definitions (
id VARCHAR(32) PRIMARY KEY COMMENT '流程定义ID',
orgid VARCHAR(32) NOT NULL COMMENT '企业ID',
code VARCHAR(100) NOT NULL COMMENT '流程编码(企业内唯一)',
name VARCHAR(255) NOT NULL COMMENT '流程名称',
version INT NOT NULL DEFAULT 1 COMMENT '流程版本',
description TEXT COMMENT '流程描述',
status TINYINT NOT NULL DEFAULT 1 COMMENT '流程状态1=启用 0=停用',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_org_code_version (orgid, code, version)
) COMMENT='流程定义表';
-- 流程节点定义表(增加子流程字段)
CREATE TABLE flow_nodes (
id VARCHAR(32) PRIMARY KEY COMMENT '节点ID',
orgid VARCHAR(32) NOT NULL COMMENT '企业ID',
flow_definition_id VARCHAR(32) NOT NULL COMMENT '所属流程定义ID',
node_key VARCHAR(100) NOT NULL COMMENT '节点唯一标识(流程内唯一)',
name VARCHAR(255) NOT NULL COMMENT '节点名称',
type ENUM('start','task','gateway','subflow','end') NOT NULL COMMENT '节点类型',
role_id VARCHAR(32) COMMENT '节点分配角色ID',
assignment_type VARCHAR(50) COMMENT '任务分配类型(轮询/抢占/自动)',
properties JSON COMMENT '节点属性JSON格式自定义扩展',
subflow_definition_id VARCHAR(32) COMMENT '子流程定义IDtype=subflow时使用',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE(flow_definition_id, node_key),
FOREIGN KEY(flow_definition_id) REFERENCES flow_definitions(id) ON DELETE CASCADE,
FOREIGN KEY(subflow_definition_id) REFERENCES flow_definitions(id)
) COMMENT='流程节点定义表';
-- 节点转移表
CREATE TABLE flow_transitions (
id VARCHAR(32) PRIMARY KEY COMMENT '节点转移ID',
orgid VARCHAR(32) NOT NULL COMMENT '企业ID',
flow_definition_id VARCHAR(32) NOT NULL COMMENT '所属流程定义ID',
source_node_id VARCHAR(32) NOT NULL COMMENT '起始节点ID',
target_node_id VARCHAR(32) NOT NULL COMMENT '目标节点ID',
condition_expr VARCHAR(1000) COMMENT '转移条件表达式',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY(source_node_id) REFERENCES flow_nodes(id),
FOREIGN KEY(target_node_id) REFERENCES flow_nodes(id)
) COMMENT='流程节点转移表';
-- 节点表单表
CREATE TABLE flow_node_forms (
id VARCHAR(32) PRIMARY KEY COMMENT '节点表单ID',
orgid VARCHAR(32) NOT NULL COMMENT '企业ID',
flow_node_id VARCHAR(32) NOT NULL COMMENT '节点ID',
schema JSON NOT NULL COMMENT '表单结构定义JSON/JIO',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY(flow_node_id) REFERENCES flow_nodes(id)
) COMMENT='节点表单定义表';
-- 流程实例表
CREATE TABLE flow_instances (
id VARCHAR(32) PRIMARY KEY COMMENT '流程实例ID',
orgid VARCHAR(32) NOT NULL COMMENT '企业ID',
flow_definition_id VARCHAR(32) NOT NULL COMMENT '流程定义ID',
version INT NOT NULL COMMENT '流程版本',
status ENUM('running','completed','terminated') DEFAULT 'running' COMMENT '实例状态',
context JSON COMMENT '运行时上下文数据',
created_by VARCHAR(32) NOT NULL COMMENT '发起人用户ID',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY(flow_definition_id) REFERENCES flow_definitions(id)
) COMMENT='流程实例表';
-- 流程实例节点表(增加 parent_instance_node_id 支持子流程嵌套)
CREATE TABLE flow_instance_nodes (
id VARCHAR(32) PRIMARY KEY COMMENT '流程实例节点ID',
orgid VARCHAR(32) NOT NULL COMMENT '企业ID',
flow_instance_id VARCHAR(32) NOT NULL COMMENT '流程实例ID',
flow_node_id VARCHAR(32) NOT NULL COMMENT '流程节点ID',
parent_instance_node_id VARCHAR(32) COMMENT '父节点实例ID子流程时使用',
status ENUM('pending','in_progress','completed','skipped') DEFAULT 'pending' COMMENT '节点实例状态',
assigned_to VARCHAR(32) COMMENT '指派用户ID当前',
form_data JSON COMMENT '填写的表单数据',
started_at TIMESTAMP COMMENT '节点开始时间',
completed_at TIMESTAMP COMMENT '节点完成时间',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY(flow_instance_id) REFERENCES flow_instances(id),
FOREIGN KEY(flow_node_id) REFERENCES flow_nodes(id),
FOREIGN KEY(parent_instance_node_id) REFERENCES flow_instance_nodes(id)
) COMMENT='流程实例节点表';
-- 节点任务表(人工任务)
CREATE TABLE flow_tasks (
id VARCHAR(32) PRIMARY KEY COMMENT '任务ID',
orgid VARCHAR(32) NOT NULL COMMENT '企业ID',
instance_node_id VARCHAR(32) NOT NULL COMMENT '流程实例节点ID',
assignee_id VARCHAR(32) COMMENT '指派用户ID原始',
candidate_role VARCHAR(128) COMMENT '候选角色',
status ENUM('pending','claimed','completed','failed') DEFAULT 'pending' COMMENT '任务状态',
input JSON COMMENT '任务输入数据',
output JSON COMMENT '任务输出数据',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY(instance_node_id) REFERENCES flow_instance_nodes(id)
) COMMENT='节点任务表';
-- 用户代理表(请假/任务委托)
CREATE TABLE user_delegations (
id VARCHAR(32) PRIMARY KEY COMMENT '委托ID',
orgid VARCHAR(32) NOT NULL COMMENT '企业ID',
user_id VARCHAR(32) NOT NULL COMMENT '原始任务用户ID',
delegate_id VARCHAR(32) NOT NULL COMMENT '代理用户ID',
start_time DATETIME NOT NULL COMMENT '生效开始时间',
end_time DATETIME NOT NULL COMMENT '生效结束时间',
status TINYINT DEFAULT 1 COMMENT '状态1=生效 0=停用',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) COMMENT='用户代理表';
-- 流程日志表
CREATE TABLE flow_logs (
id VARCHAR(32) PRIMARY KEY COMMENT '日志ID',
orgid VARCHAR(32) NOT NULL COMMENT '企业ID',
flow_instance_id VARCHAR(32) NOT NULL COMMENT '流程实例ID',
flow_node_id VARCHAR(32) COMMENT '节点ID可为空',
parent_instance_node_id VARCHAR(32) COMMENT '父节点实例ID子流程时使用',
action VARCHAR(100) NOT NULL COMMENT '操作动作start, complete, assign, transition, terminate',
operator_id VARCHAR(32) COMMENT '操作人用户ID',
original_assignee_id VARCHAR(32) COMMENT '原始任务指派人(代理场景使用)',
message TEXT COMMENT '日志内容',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
FOREIGN KEY(flow_instance_id) REFERENCES flow_instances(id),
FOREIGN KEY(flow_node_id) REFERENCES flow_nodes(id),
FOREIGN KEY(parent_instance_node_id) REFERENCES flow_instance_nodes(id)
) COMMENT='流程日志表';