概念定义
跑数小时数天的工作流不能假设进程长存。持久化执行让存亡无关紧要:已完成步骤的日志才是真相,任何 worker 都能接着走。
工作机制
工作流函数在引擎拦截器下执行;每个 activity 调用及其结果在继续前被记录。恢复时,重放把已记录结果喂给同一段代码直到第一个未记录步骤——那一步才真正执行。定时器、信号、子工作流同样记账。worker 无状态,日志即状态。
使用场景
“从零重启代价高昂或不正确”的流程:金融编排、基础设施开通、长审批。请求响应型与可幂等重放的任务用它是杀鸡用牛刀。
常见误区
它不是重试逻辑:重试带着副作用重跑整个操作,它记录进度精确续跑。重放要求确定性——随机数、当前时间、线程睡眠写进工作流代码就会打断恢复,这是新用户的第一类 bug。副作用与等待必须放进 activity,工作流代码要快且确定;跨代码部署的在途工作流需要版本化定义或版本容忍代码;activity 重试仍要求效果侧幂等——引擎保证单次逻辑执行,不保证单次物理副作用。