diff --git a/models/ddl.sql b/models/ddl.sql new file mode 100644 index 0000000..7723f28 --- /dev/null +++ b/models/ddl.sql @@ -0,0 +1,142 @@ +-- 企业表 +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 '子流程定义ID(type=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='流程日志表'; + diff --git a/models/flow_definitions.xlsx b/models/flow_definitions.xlsx new file mode 100644 index 0000000..0784a0a Binary files /dev/null and b/models/flow_definitions.xlsx differ diff --git a/models/flow_instance_nodes.xlsx b/models/flow_instance_nodes.xlsx new file mode 100644 index 0000000..0784a0a Binary files /dev/null and b/models/flow_instance_nodes.xlsx differ diff --git a/models/flow_instances.xlsx b/models/flow_instances.xlsx new file mode 100644 index 0000000..0784a0a Binary files /dev/null and b/models/flow_instances.xlsx differ diff --git a/models/flow_logs.xlsx b/models/flow_logs.xlsx new file mode 100644 index 0000000..0784a0a Binary files /dev/null and b/models/flow_logs.xlsx differ diff --git a/models/flow_node_forms.xlsx b/models/flow_node_forms.xlsx new file mode 100644 index 0000000..0784a0a Binary files /dev/null and b/models/flow_node_forms.xlsx differ diff --git a/models/flow_nodes.xlsx b/models/flow_nodes.xlsx new file mode 100644 index 0000000..0784a0a Binary files /dev/null and b/models/flow_nodes.xlsx differ diff --git a/models/flow_tasks.xlsx b/models/flow_tasks.xlsx new file mode 100644 index 0000000..0784a0a Binary files /dev/null and b/models/flow_tasks.xlsx differ diff --git a/models/flow_transitions.xlsx b/models/flow_transitions.xlsx new file mode 100644 index 0000000..0784a0a Binary files /dev/null and b/models/flow_transitions.xlsx differ diff --git a/models/user_delegations.xlsx b/models/user_delegations.xlsx new file mode 100644 index 0000000..0784a0a Binary files /dev/null and b/models/user_delegations.xlsx differ diff --git a/models/~$flow_definitions.xlsx b/models/~$flow_definitions.xlsx new file mode 100644 index 0000000..5a93205 Binary files /dev/null and b/models/~$flow_definitions.xlsx differ