用途:在 iii 引擎上构建持久化多步骤工作流管道,适用于订单履约、数据管道、任务编排等场景,可与 Temporal、Airflow、Inngest 类比。
主要能力:每个管道步骤是注册函数,通过命名队列链式调用,支持配置驱动的重试;步骤进度写入共享状态并通过流广播;cron 触发器处理定时维护(如清理过期订单);队列的重试、退避、并发、FIFO 行为在 iii-config.yaml 中按队列定义。
架构示例:HTTP 创建订单 → 入队 order-validate → 校验 → 入队 order-payment → 扣款 → 入队 order-ship → 发货 → 发布 order.fulfilled;cron 每小时触发 cleanup-stale。队列配置示例:order-validate max_retries: 2;order-payment max_retries: 5, type: fifo, concurrency: 2;order-ship max_retries: 3。
使用方式:使用 registerWorker 初始化并连接 iii;用 registerFunction 定义每个步骤;用 trigger({ ..., action: TriggerAction.Enqueue({ queue }) }) 实现持久化步骤链;用 trigger({ function_id: 'state::...', payload }) 跟踪进度;用 TriggerAction.Void() 发送即发即忘的流事件与发布;用 registerTrigger({ type: 'cron' }) 做定时维护,registerTrigger({ type: 'http' }) 作为入口。参考实现见 ../references/workflow-orchestration.js,完整配置见 ../references/iii-config.yaml。
适用场景:需要持久化步骤顺序、队列重试/退避与工作流进度跟踪的任务。若任务是把 HTTP 端点建模为 HTTP 调用的 registerFunction,应改用 iii-http-invoked-functions。
限制:失败任务耗尽重试后进入 DLQ,命名队列的 DLQ 支持由 Builtin 与 RabbitMQ 适配器提供(Redis 仅支持发布/订阅);cron 表达式使用 7 字段格式,如 0 0 * * * * * 表示每小时;应用示例前需先验证环境与安全约束。