SuperAPI AI 工具集

workflows

部署与运维

查看项目

更新于 10-16 07:09

技能介绍

Workflows 是一套异步后台任务机制,由后台工作进程处理。它提供两种运行器,供不同复杂度场景选择。

一、用途 用于构建队列任务(queue jobs)、后台处理(background processing)或异步任务(async tasks)。当业务需要将耗时操作从主流程中剥离、在后台异步执行时使用。

二、两种运行器

  1. SQS:适合简单的 fire-and-forget(发出即忘)任务。特点:快速、无依赖、最大延迟 15 分钟。
  2. Hatchet:适合需要重试、多步骤或长延迟的复杂工作流。特点:类型化输出(typed outputs)、可配置超时(configurable timeouts)、可观测性(observability)。

三、使用方式(快速开始)

  1. 添加任务名:在 server/src/queue/JobName.ts 的枚举中新增任务名,例如 MyNewWorkflow = "my-new-workflow"。
  2. 定义负载并注册:在 server/src/queue/workflows.ts 中定义负载类型(如 MyNewWorkflowPayload,包含 orgId、env、customerId 及自定义字段),将其加入 workflowRegistry,配置 jobName 与 runner("sqs" 或 "hatchet"),并在 workflows 对象中添加触发函数(如 triggerMyNewWorkflow),内部调用 triggerWorkflow({ name, payload, options })。
  3. 创建处理器:SQS 参见 references/SQS.md,Hatchet 参见 references/HATCHET.md。
  4. 在代码中触发:从 @/queue/workflows.js 导入 workflows,调用对应触发函数并传入负载;如需延迟,可传选项 { delayMs: 5000 }。

四、文件结构 server/src/ 下包含:queue/JobName.ts(任务名枚举)、queue/workflows.ts(注册表与触发器)、queue/initWorkers.ts(SQS 消息路由);以及 internal/.../workflows/ 下的处理器目录,例如 myNewWorkflow/ 中包含 myNewWorkflow.ts(处理器)与可选的 triggerMyNewWorkflow.ts(触发辅助)。

五、必需负载字段 所有工作流必须包含:orgId: string、env: AppEnv,以及可选但常用的 customerId?: string。

六、参考文档 references/SQS.md(SQS 工作流实现)、references/HATCHET.md(Hatchet 工作流实现)。

七、限制 除上述 SQS 最大延迟 15 分钟外,其它限制与价格、计费等信息暂未提供。