# df-workflow 工作流引擎 > 创建: 2026-06-10 | 状态: 初稿 --- ## 概述 df-workflow 是 DevFlow 的核心引擎,负责 DAG 定义、拓扑排序、节点执行、状态流转和事件广播。引擎不感知具体业务逻辑。 ## 当前状态 | 功能 | 状态 | |------|------| | DAG 数据结构 | ✅ 已实现 | | 拓扑排序 | ✅ 已实现 | | DagExecutor (顺序执行) | ✅ 已实现 | | 同层节点并行执行 | ⬜ 有 TODO 注释 | | Node trait 定义 | ✅ 已实现 | | 状态机 (WorkflowRunStatus) | ✅ 已实现 | | EventBus (broadcast) | ✅ 已实现 | | 条件表达式引擎 | ⚡ 仅支持 true/false | | 断点续跑 | ⬜ 待实施 | ## 核心设计 ### Node trait ```rust pub trait Node: Send + Sync { fn execute(&self, ctx: &NodeContext) -> Result; fn schema(&self) -> NodeSchema; fn is_blocking(&self) -> bool { true } } ``` ### DAG 执行流程 ``` 1. 接收 WorkflowDef (DAG 定义) 2. 拓扑排序 → 得到执行层 (layers) 3. 逐层执行: - 同层节点并行 (TODO) - 阻塞节点等待人工操作 - 非阻塞节点异步完成 4. 状态变更通过 EventBus 广播 5. 每个节点完成后持久化快照 ``` ### 事件类型 - `WorkflowStarted` / `WorkflowCompleted` / `WorkflowFailed` - `NodeStarted` / `NodeCompleted` / `NodeFailed` - `WorkflowPaused` / `WorkflowResumed` ## 依赖关系 ``` df-core (类型、事件、错误) ← df-workflow ← df-nodes (节点实现) ← df-stages (阶段节点) ``` ## 文件结构 ``` crates/df-workflow/src/ ├── lib.rs — 模块入口 ├── dag.rs — DAG 数据结构与拓扑排序 ├── executor.rs — DagExecutor ├── node.rs — Node trait + NodeContext/Output ├── state.rs — 状态机 ├── event.rs — EventBus └── condition.rs — 条件表达式引擎 ``` ## 相关文档 - [df-nodes 节点集合](./df-nodes-节点集合.md) - [Phase1 架构决策](../02-架构设计/Phase1架构决策.md)