Skip to content
Cloudflare Docs
非官方翻译 - 此文档为非官方中文翻译版本,仅供参考。如有疑问请以 英文官方文档 为准。

运行工作流

Agents 可以触发异步工作流,允许您的 Agent 在后台运行复杂的多步骤任务。这可以包括后处理用户上传的文件、更新向量数据库中的嵌入,和/或管理长时间运行的用户生命周期电子邮件或短信通知工作流。

因为 Agent 就像 Worker 脚本一样,它可以创建在与 Agent 相同项目(脚本)中定义的工作流在不同项目中定义的工作流。

触发工作流

Agent 可以从任何方法内触发一个或多个工作流,无论是来自传入的 HTTP 请求、WebSocket 连接、延迟或调度,和/或来自 Agent 采取的任何其他操作。

从 Agent 触发工作流与从 Worker 脚本触发工作流没有区别:

export class MyAgent extends Agent {
async onRequest(request) {
let userId = request.headers.get("user-id");
// 触发运行工作流的调度
// 传递负载给它
let { taskId } = await this.schedule(300, "runWorkflow", {
id: userId,
flight: "DL264",
date: "2025-02-23",
});
}
async runWorkflow(data) {
let instance = await env.MY_WORKFLOW.create({
id: data.id,
params: data,
});
// 调度另一个每5分钟检查工作流状态的任务...
await this.schedule("*/5 * * * *", "checkWorkflowStatus", {
id: instance.id,
});
}
}
export class MyWorkflow extends WorkflowEntrypoint {
async run(event, step) {
// 您的工作流代码在这里
}
}

您还需要确保您的 Agent 与您的工作流有绑定,以便它可以调用它:

{
// ...
// 在您的 Agent 和您的工作流之间创建绑定
"workflows": [
{
// 必需的:
"name": "EMAIL_WORKFLOW",
"class_name": "MyWorkflow",
// 可选:如果您的工作流在与您的 Agent 不同的项目中定义,请设置 script_name 字段
"script_name": "email-workflows",
},
],
// ...
}

从另一个项目触发工作流

您还可以通过在 Agent 的 workflows 绑定中设置 script_name 属性,调用在与 Agent 不同的 Workers 脚本中定义的工作流:

{
// 必需的:
"name": "EMAIL_WORKFLOW",
"class_name": "MyWorkflow",
// 可选:如果您的工作流在与您的 Agent 不同的项目中定义,请设置 script_name 字段
"script_name": "email-workflows",
}

有关更多示例,请参阅工作流文档的跨脚本调用部分。