# ADR-002:DataFlow 与 n8n Workflow 的职责和版本映射 - 状态:Accepted - 日期:2026-07-16 ## 背景 代码中 DataFlow、Workflow 和旧数据工厂命名曾混用。产品确认 n8n 必须保留,旧数据工厂模块可以移除;一个 DataFlow 可以有多个 Workflow 版本,并需区分环境和生效版本。 ## 决策 1. `DataFlow` 是平台治理概念:描述数据业务流向、输入输出业务域、责任人和治理状态。 2. `n8n Workflow` 是执行引擎原生概念:保存可执行节点、凭据引用和执行记录。保留 Workflow 命名,不进行全局重命名。 3. PostgreSQL 新增版本映射表,将稳定 `dataflow_uid` 映射到 `n8n_workflow_id`、`version_no` 和 `environment`。 4. 一个 DataFlow 可有多个 n8n Workflow 版本;同一环境只允许一个当前生效版本。 5. 激活操作由平台后端串行执行:锁定映射、停用旧版本、调用 n8n 激活目标、写入状态和 outbox。失败时保留可重试状态,不直接篡改 Neo4j 图。 6. n8n 凭据只在 n8n 中管理;平台不保存节点凭据明文。 ## 状态模型 `draft -> validating -> active -> superseded`,调用失败进入 `activation_failed`。只有 `active` 参与环境执行入口解析。 数据库使用部分唯一索引: ```sql CREATE UNIQUE INDEX uq_dataflow_active_environment ON dataflow_workflow_versions (dataflow_uid, environment) WHERE status = 'active'; ``` ## 接口边界 - `/api/dataflow/*`:治理定义和版本映射。 - `/api/datafactory/workflows/*`:n8n 原生 Workflow 读取、激活、停用和执行代理。 - 新增 `/api/dataflow/{uid}/workflow-versions` 和 `/activate` 接口,由后端组合两侧能力。 ## 结果 页面对用户显示“数据流程(DataFlow)”;只有查看执行实现、版本和运行记录时显示“n8n Workflow”。这避免因命名统一而丢失两个不同领域概念。