| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- -- =====================================================
- -- 跨系统流程编排 DDL
- -- Issue #35: 跨系统流程编排 + Webhook 回调通知
- -- =====================================================
-
- -- 编排定义表 (已存在则跳过)
- CREATE TABLE IF NOT EXISTS bpm_orchestration (
- id BIGSERIAL PRIMARY KEY,
- orchestration_name VARCHAR(200) NOT NULL,
- orchestration_code VARCHAR(100) UNIQUE,
- description TEXT,
- process_definition_ids JSONB,
- orchestration_rules JSONB,
- trigger_type VARCHAR(50) DEFAULT 'manual',
- cron_expression VARCHAR(100),
- event_name VARCHAR(200),
- status INTEGER DEFAULT 0,
- created_by VARCHAR(100),
- execution_count INTEGER DEFAULT 0,
- tenant_id VARCHAR(100),
- deleted INTEGER DEFAULT 0,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
-
- -- 编排执行记录表
- CREATE TABLE IF NOT EXISTS bpm_orchestration_execution (
- id BIGSERIAL PRIMARY KEY,
- orchestration_id BIGINT NOT NULL REFERENCES bpm_orchestration(id),
- execution_no VARCHAR(100) UNIQUE NOT NULL,
- current_step_index INTEGER DEFAULT 0,
- current_step_name VARCHAR(200),
- status VARCHAR(50) DEFAULT 'pending',
- started_at TIMESTAMP,
- completed_at TIMESTAMP,
- triggered_by VARCHAR(100),
- trigger_type VARCHAR(50) DEFAULT 'manual',
- input_params JSONB,
- output_result JSONB,
- failure_reason TEXT,
- retry_count INTEGER DEFAULT 0,
- tenant_id VARCHAR(100),
- deleted INTEGER DEFAULT 0,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
-
- CREATE INDEX IF NOT EXISTS idx_orch_exec_orch_id ON bpm_orchestration_execution(orchestration_id);
- CREATE INDEX IF NOT EXISTS idx_orch_exec_no ON bpm_orchestration_execution(execution_no);
- CREATE INDEX IF NOT EXISTS idx_orch_exec_status ON bpm_orchestration_execution(status);
- CREATE INDEX IF NOT EXISTS idx_orch_exec_started ON bpm_orchestration_execution(started_at);
-
- -- 编排日志表
- CREATE TABLE IF NOT EXISTS bpm_orchestration_log (
- id BIGSERIAL PRIMARY KEY,
- execution_id BIGINT NOT NULL REFERENCES bpm_orchestration_execution(id),
- execution_no VARCHAR(100) NOT NULL,
- step_index INTEGER,
- step_name VARCHAR(200),
- action VARCHAR(50) NOT NULL,
- target_system VARCHAR(100),
- request_body JSONB,
- response_body JSONB,
- http_status INTEGER,
- duration_ms BIGINT,
- success BOOLEAN DEFAULT TRUE,
- error_message TEXT,
- log_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- operator VARCHAR(100),
- deleted INTEGER DEFAULT 0,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
-
- CREATE INDEX IF NOT EXISTS idx_orch_log_exec_id ON bpm_orchestration_log(execution_id);
- CREATE INDEX IF NOT EXISTS idx_orch_log_exec_no ON bpm_orchestration_log(execution_no);
- CREATE INDEX IF NOT EXISTS idx_orch_log_time ON bpm_orchestration_log(log_time);
- CREATE INDEX IF NOT EXISTS idx_orch_log_action ON bpm_orchestration_log(action);
-
- -- 插入示例编排定义
- INSERT INTO bpm_orchestration (orchestration_name, orchestration_code, description, trigger_type, orchestration_rules, status, created_by)
- VALUES
- ('日常巡检数据同步编排', 'DAILY_PATROL_SYNC', '每日自动同步IoT设备数据、巡检任务、营收数据并发送通知', 'scheduled',
- '[
- {"stepName":"查询IoT设备状态","targetSystem":"iot","apiPath":"/api/iot/devices/status","method":"GET","timeoutMs":5000,"skippable":false,"maxRetries":3},
- {"stepName":"同步巡检任务","targetSystem":"patrol","apiPath":"/api/patrol/tasks/sync","method":"POST","timeoutMs":10000,"skippable":false,"maxRetries":3},
- {"stepName":"汇总营收数据","targetSystem":"revenue","apiPath":"/api/revenue/daily/summary","method":"GET","timeoutMs":8000,"skippable":true,"maxRetries":2},
- {"stepName":"发送汇总通知","targetSystem":"notify","apiPath":"/api/notify/send","method":"POST","timeoutMs":5000,"skippable":true,"maxRetries":1}
- ]',
- 1, 'system'),
- ('应急事件处理编排', 'EMERGENCY_RESPONSE', '突发事件触发时:获取设备数据→派发巡检任务→通知相关人员', 'event',
- '[
- {"stepName":"获取异常设备数据","targetSystem":"iot","apiPath":"/api/iot/devices/alerts","method":"GET","timeoutMs":3000,"skippable":false,"maxRetries":3},
- {"stepName":"派发应急巡检任务","targetSystem":"patrol","apiPath":"/api/patrol/tasks/emergency","method":"POST","timeoutMs":5000,"skippable":false,"maxRetries":3},
- {"stepName":"发送紧急通知","targetSystem":"notify","apiPath":"/api/notify/emergency","method":"POST","timeoutMs":3000,"skippable":false,"maxRetries":2}
- ]',
- 1, 'system')
- ON CONFLICT DO NOTHING;
-
- -- 注释
- COMMENT ON TABLE bpm_orchestration IS '跨系统流程编排定义表';
- COMMENT ON TABLE bpm_orchestration_execution IS '编排执行记录表';
- COMMENT ON TABLE bpm_orchestration_log IS '编排执行日志表';
- COMMENT ON COLUMN bpm_orchestration.orchestration_rules IS '编排步骤JSON数组';
- COMMENT ON COLUMN bpm_orchestration_execution.status IS '执行状态: pending/running/completed/failed/cancelled';
- COMMENT ON COLUMN bpm_orchestration_log.action IS '动作类型: start/complete/fail/retry/callback/skip/cancel';
|