Tauri 2 + Vue 3 + Vite 6 桌面应用,Rust workspace 含 13 个 crate (df-ai / df-storage / df-workflow / df-core / df-execute 等)。 核心能力:AI 聊天 agentic 循环(工具调用+人工审批)、工作流引擎、 任务/想法/项目/阶段管理、可追溯性,及配套前端组件。
82 lines
2.0 KiB
Markdown
82 lines
2.0 KiB
Markdown
# 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<NodeOutput>;
|
|
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)
|