[ PROMPT_NODE_24492 ]
Workflows 说明文档
[ SKILL_DOCUMENTATION ]
# Cloudflare Workflows
具有自动重试、状态持久化和长期运行执行能力的多步骤持久化应用。
## 功能概述
- 使用自动重试逻辑链接步骤
- 在步骤之间持久化状态(分钟 → 周)
- 处理故障而不丢失进度
- 等待外部事件/审批
- 休眠而不消耗资源
**可用性**: 免费及付费 Workers 计划
## 核心概念
**Workflow**: 继承 `WorkflowEntrypoint` 并包含 `run` 方法的类
**Instance**: 具有唯一 ID 和独立状态的单次执行
**Steps**: 通过 `step.do()` 实现的可独立重试单元 - API 调用、数据库查询、AI 调用
**State**: 从步骤返回值持久化;步骤名称即缓存键
## 快速开始
typescript
import { WorkflowEntrypoint, WorkflowStep, WorkflowEvent } from 'cloudflare:workers';
type Env = { MY_WORKFLOW: Workflow; DB: D1Database };
type Params = { userId: string };
export class MyWorkflow extends WorkflowEntrypoint {
async run(event: WorkflowEvent, step: WorkflowStep) {
const user = await step.do('fetch user', async () => {
return await this.env.DB.prepare('SELECT * FROM users WHERE id = ?')
.bind(event.params.userId).first();
});
await step.sleep('wait 7 days', '7 days');
await step.do('send reminder', async () => {
await sendEmail(user.email, 'Reminder!');
});
}
}
## 关键特性
- **持久性**: 失败的步骤不会重新运行已成功的步骤
- **重试**: 可配置的退避策略(常量/线性/指数)
- **事件**: `waitForEvent()` 用于 Webhook/审批(超时:1小时 → 365天)
- **休眠**: `sleep()` / `sleepUntil()` 用于调度(最长 365天)
- **并行**: `Promise.all()` 用于并发步骤
- **幂等性**: 检查-然后-执行模式
## 阅读顺序
**入门:** configuration.md → api.md → patterns.md
**故障排除:** gotchas.md
## 本参考文档内容
- [configuration.md](./configuration.md) - wrangler.jsonc 设置、步骤配置、绑定
- [api.md](./api.md) - 步骤 API、实例管理、休眠/参数
- [patterns.md](./patterns.md) - 常见工作流、测试、编排
- [gotchas.md](./gotchas.md) - 超时、限制、调试策略
## 另请参阅
- [durable-objects](../durable-objects/) - 另一种有状态方法
- [queues](../queues/) - 消息驱动的工作流
- [workers](../workers/) - 工作流实例的入口点