用途:在 Convex 上构建持久化的多步骤流水线,每个步骤按顺序执行,失败时独立重试,且能经受崩溃。适用于转写→摘要→邮件、ETL、订单处理等编排场景。官方明确不建议用 jobs 表加链式 ctx.scheduler.runAfter 自行实现,因为会丢失持久性、每步重试与退避能力,实测得分也低于直接实现。
主要能力:通过 step.run* 调用让每步成为持久检查点,崩溃或重试时已完成步骤从存储结果回放而不会重新执行;支持每步独立的默认重试行为与退避,也可为单个步骤覆盖重试参数,或对不可重复的步骤设置 retry:false。
使用方式:在 convex/convex.config.ts 中用 app.use(workflow) 接入组件;用 WorkflowManager 定义 workflow,配置 defaultRetryBehavior 与 retryActionsByDefault;在 handler 中以 step.runAction / step.runMutation / step.runQuery 配合 codegen 生成的 internal.* 引用调用各步;通过 workflow.start 启动,可用 workflow.status 查询状态、workflow.cleanup 清理。
限制与注意:handler 第一个参数是 step 而非 ctx,工作流内不可使用 ctx.run*,否则会破坏持久化与记忆化;真实工作应放在普通 internalAction / internalMutation 中;每步仍受 10 分钟 action 上限约束;不要用自定义 jobs 表加 scheduler 链伪造重试与顺序。具体外部 API、邮件等实现细节本文暂未提供。