前言
系列:Spring AI 企业级开发实战
项目名称:EduAgentX Workflow Engine
技术栈:Java 21 + Spring Boot 3.5 + Spring AI + Redis + PostgreSQL + PGVector + MCP + Flowable
难度:⭐⭐⭐⭐⭐
阅读时间:90分钟+
关键词:Workflow Engine、DAG、Agent编排、任务调度、并行执行、Spring AI源码设计
前面的章节我们已经讲了:
- Agent Framework设计
- Memory、Tool、Prompt、Model Engine设计
- Multi-Agent协作模式
- AI OS架构
企业落地时,一个问题非常突出:
text
单个Agent可以完成任务,但复杂任务无法拆分和调度
例如:
text
生成学习报告
涉及:
text
成绩查询 → 分析 → 推荐课程 → 生成计划 → 输出报告
如果没有 Workflow Engine ,你只能靠 硬编码 或 超大Prompt 来实现,弊端:
- 难维护
- 扩展性差
- 性能低下
- Token成本高
因此,企业级 Agent 系统必须有 Workflow Engine。
一、Workflow Engine 核心概念
企业级 Workflow Engine 核心思想:
text
Workflow = DAG + Task + Node + Scheduler
- DAG(Directed Acyclic Graph):有向无环图,确保任务顺序和依赖关系
- Task:用户发起的工作流实例
- Node:单个步骤或子任务,由特定Agent执行
- Scheduler:调度器,管理节点执行、重试、并行、分支
- Context:整个流程的上下文信息,包括用户信息、Memory、Prompt、数据结果
二、Workflow 数据模型设计
数据库设计(PostgreSQL示例):
sql
CREATE TABLE workflow_definition (
id BIGINT PRIMARY KEY,
name VARCHAR(100),
description TEXT,
dag JSONB,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE workflow_instance (
id BIGINT PRIMARY KEY,
definition_id BIGINT REFERENCES workflow_definition(id),
status VARCHAR(20) DEFAULT 'PENDING',
context JSONB,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE workflow_node_instance (
id BIGINT PRIMARY KEY,
instance_id BIGINT REFERENCES workflow_instance(id),
node_id VARCHAR(100),
status VARCHAR(20) DEFAULT 'PENDING',
result JSONB,
started_at TIMESTAMP,
finished_at TIMESTAMP
);
三、Node设计
Node是Workflow的核心执行单元,每个Node对应:
- 一个Agent
- 一个Tool调用
- 一段数据处理逻辑
Java接口设计:
java
public interface Node {
String getId();
NodeResult execute(NodeContext context);
List<String> getNextNodes();
}
NodeResult示例:
java
public class NodeResult {
private boolean success;
private Object data;
private String message;
}
四、Workflow DAG设计
DAG结构存储在数据库中,JSON示例:
json
{
"nodes": [
{"id": "score", "type": "LearningAgent", "next": ["analysis"]},
{"id": "analysis", "type": "LearningAgent", "next": ["recommend"]},
{"id": "recommend", "type": "CourseAgent", "next": ["report"]},
{"id": "report", "type": "ReportAgent", "next": []}
]
}
type:节点对应Agentnext:依赖节点
五、Workflow执行引擎设计
执行引擎核心职责:
- 解析DAG
- 创建Workflow实例
- 遍历节点,根据依赖关系调度执行
- 管理并行、条件分支
- 保存节点结果到数据库
- 错误重试与异常处理
Java核心类设计:
java
public class WorkflowEngine {
private AgentRegistry agentRegistry;
private MemoryEngine memoryEngine;
private ToolEngine toolEngine;
public WorkflowInstance executeWorkflow(WorkflowDefinition def, Map<String, Object> input) {
// 1. 创建Workflow实例
// 2. 初始化上下文
// 3. 执行节点(同步或异步)
// 4. 保存节点结果
}
private void executeNode(Node node, NodeContext context) {
// 执行Agent或Tool
NodeResult result = agentRegistry.getAgent(node.getType())
.execute(context);
// 保存结果
// 调度下一个节点
}
}
六、支持并行执行
DAG中可存在多个节点没有依赖关系,可并行执行:
text
score → analysis → report
recommend → report
score和recommend可以同时执行report必须等待两者完成
实现方式:
java
ExecutorService executor = Executors.newFixedThreadPool(10);
异步执行节点,并在完成后回调调度下一个节点。
七、条件分支设计
Node可以根据执行结果选择不同路径:
json
{
"nodes": [
{"id": "score", "type": "LearningAgent", "next": [
{"condition": "score>80", "node": "advanced_course"},
{"condition": "score<=80", "node": "basic_course"}
]}
]
}
- 条件解析器:解析NodeResult生成条件分支
- 分支执行:选择符合条件的下一个Node执行
八、Checkpoint与重试机制
企业级任务常常失败:
- 模型超时
- Tool调用失败
- 数据库异常
解决方案:
-
Checkpoint
- 每个节点完成后,将NodeResult保存到数据库
- 恢复时可从失败节点继续执行
-
重试机制
- 每个节点可配置重试次数
- 支持指数退避策略
java
public class RetryPolicy {
private int maxRetries;
private long delay; // ms
}
九、人机协作(HITL,Human In The Loop)
有些流程需要人工干预:
- 报告审核
- 面试评分确认
- 高风险操作确认
设计方式:
- 节点类型标记为
HITL - 引擎暂停执行,等待人工确认
- 审核完成后继续执行
java
public class HumanApprovalNode implements Node {
private boolean approved;
}
十、Workflow监控与可视化
企业级需求:
- 节点状态监控
- 实时任务追踪
- Token成本统计
实现方式:
-
数据库持久化节点执行状态
-
Web端Dashboard展示:
- 节点状态(Pending/Running/Success/Failed)
- 执行时间
- 消耗Token
- 异常日志
十一、与LangGraph对标
| 功能 | LangGraph | EduAgentX Workflow |
|---|---|---|
| DAG执行 | √ | √ |
| 条件分支 | √ | √ |
| 并行执行 | √ | √ |
| Checkpoint | √ | √ |
| HITL | √ | √ |
| Agent多租户 | × | √ |
| Tool调用统一管理 | × | √ |
| Memory整合 | × | √ |
| Spring生态 | × | √ |
十二、案例演示
生成学习报告流程:
text
User提交请求 → WorkflowEngine创建实例 → ScoreNode → AnalysisNode → RecommendNode → ReportNode → 返回结果
节点状态:
| Node | Status | Result |
|---|---|---|
| ScoreNode | SUCCESS | {score: 90} |
| AnalysisNode | SUCCESS | {weak_subjects:"Math","English"} |
| RecommendNode | SUCCESS | {courses:"Advanced Math","English Grammar"} |
| ReportNode | SUCCESS | {report_url:"..."} |
十三、核心优化策略
-
节点缓存
- 避免重复计算,降低Token消耗
-
异步并行执行
- 提升吞吐量
-
上下文整合
- Memory + Prompt + Knowledge融合
-
事件驱动调度
- Event Bus解耦节点执行
-
重试与失败补偿机制
- 提升系统稳定性
十四、企业落地价值
- 统一工作流引擎,实现跨Agent任务编排
- 支持复杂业务流程,多分支、多并行、人工介入
- 完全可扩展,支持插件化工具与Agent
- 可与AI OS、Multi-Agent平台、MCP无缝集成
- 降低企业AI系统维护成本,提高开发效率
十五、面试高频问答
Workflow Engine
和Agent Engine区别?
- Agent Engine:执行单个Agent任务
- Workflow Engine:组织多个Agent任务,编排复杂流程
为什么要支持DAG而不是简单顺序?
- 顺序执行无法支持分支、并行、条件
- DAG保证依赖关系,同时可扩展
Workflow Engine的关键挑战?
- 节点调度、并行与依赖关系
- 异常处理与重试机制
- HITL支持
- 上下文管理与Memory整合
- 可视化与监控
总结
到这里,你已经完成了:
- 企业级 Agent Framework
- 企业级 Workflow Engine
- 支持 DAG、条件分支、并行执行、HITL
- Node/Task/Workflow 完整生命周期管理
- 数据库持久化、事件驱动、重试与Checkpoint机制