95 lines
3.8 KiB
SQL
95 lines
3.8 KiB
SQL
-- Workflow 编排核心表。
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_definition (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
project_id BIGINT,
|
|
workflow_code VARCHAR(100) NOT NULL,
|
|
workflow_name VARCHAR(200) NOT NULL,
|
|
description VARCHAR(1000),
|
|
bound_agent_id BIGINT,
|
|
status VARCHAR(50) NOT NULL DEFAULT 'DRAFT',
|
|
version INTEGER NOT NULL DEFAULT 1,
|
|
create_time TIMESTAMP,
|
|
update_time TIMESTAMP,
|
|
remark VARCHAR(500) DEFAULT '',
|
|
create_by VARCHAR(64),
|
|
update_by VARCHAR(64),
|
|
CONSTRAINT uk_workflow_definition_code UNIQUE (workflow_code),
|
|
CONSTRAINT fk_workflow_definition_project_id FOREIGN KEY (project_id) REFERENCES studio_project (id),
|
|
CONSTRAINT fk_workflow_definition_agent_id FOREIGN KEY (bound_agent_id) REFERENCES agent_definition (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_version (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
workflow_id BIGINT NOT NULL,
|
|
version_no INTEGER NOT NULL,
|
|
snapshot_name VARCHAR(100) NOT NULL,
|
|
graph_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
publish_status VARCHAR(50) NOT NULL DEFAULT 'DRAFT',
|
|
published_time TIMESTAMP,
|
|
version INTEGER NOT NULL DEFAULT 1,
|
|
create_time TIMESTAMP,
|
|
update_time TIMESTAMP,
|
|
remark VARCHAR(500) DEFAULT '',
|
|
create_by VARCHAR(64),
|
|
update_by VARCHAR(64),
|
|
CONSTRAINT uk_workflow_version_no UNIQUE (workflow_id, version_no),
|
|
CONSTRAINT fk_workflow_version_workflow_id FOREIGN KEY (workflow_id) REFERENCES workflow_definition (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_run (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
request_id VARCHAR(64) NOT NULL,
|
|
workflow_id BIGINT,
|
|
workflow_version_id BIGINT,
|
|
agent_id BIGINT,
|
|
run_source VARCHAR(50) NOT NULL,
|
|
status VARCHAR(50) NOT NULL,
|
|
input_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
output_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
duration_ms INTEGER,
|
|
estimated_cost NUMERIC(14, 8),
|
|
version INTEGER NOT NULL DEFAULT 1,
|
|
create_time TIMESTAMP,
|
|
update_time TIMESTAMP,
|
|
remark VARCHAR(500) DEFAULT '',
|
|
create_by VARCHAR(64),
|
|
update_by VARCHAR(64),
|
|
CONSTRAINT uk_workflow_run_request_id UNIQUE (request_id),
|
|
CONSTRAINT fk_workflow_run_workflow_id FOREIGN KEY (workflow_id) REFERENCES workflow_definition (id),
|
|
CONSTRAINT fk_workflow_run_version_id FOREIGN KEY (workflow_version_id) REFERENCES workflow_version (id),
|
|
CONSTRAINT fk_workflow_run_agent_id FOREIGN KEY (agent_id) REFERENCES agent_definition (id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS workflow_run_step (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
run_id BIGINT NOT NULL,
|
|
node_id VARCHAR(100) NOT NULL,
|
|
node_type VARCHAR(50) NOT NULL,
|
|
node_name VARCHAR(200),
|
|
status VARCHAR(50) NOT NULL,
|
|
input_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
output_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
duration_ms INTEGER,
|
|
error_message VARCHAR(1000),
|
|
version INTEGER NOT NULL DEFAULT 1,
|
|
create_time TIMESTAMP,
|
|
update_time TIMESTAMP,
|
|
remark VARCHAR(500) DEFAULT '',
|
|
create_by VARCHAR(64),
|
|
update_by VARCHAR(64),
|
|
CONSTRAINT fk_workflow_run_step_run_id FOREIGN KEY (run_id) REFERENCES workflow_run (id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_definition_project_id ON workflow_definition (project_id);
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_definition_status ON workflow_definition (status);
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_version_workflow_id ON workflow_version (workflow_id);
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_run_workflow_id ON workflow_run (workflow_id);
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_run_status ON workflow_run (status);
|
|
CREATE INDEX IF NOT EXISTS idx_workflow_run_step_run_id ON workflow_run_step (run_id);
|
|
|
|
COMMENT ON TABLE workflow_definition IS 'Workflow定义表';
|
|
COMMENT ON TABLE workflow_version IS 'Workflow版本快照表';
|
|
COMMENT ON TABLE workflow_run IS 'Workflow运行记录表';
|
|
COMMENT ON TABLE workflow_run_step IS 'Workflow运行步骤表';
|