为结果不确定的情况做好设计
工作流可能在外部服务接受操作后、下一步记录成功前失败。请将这种情况视为结果未知:检查目标系统,或使用能让目标识别重复请求的请求键。
将准备工作与不可逆操作分开。先验证输入并计算预期更改,只有满足前置条件后才执行发送、付款、发布或删除。
记录进度并验证实际效果
保存业务标识和步骤状态,便于重试时查询。失败后检查运行历史和外部资源,确定最后一个已确认的步骤。
无法设计为幂等的操作应加入人工审核或对账,而不是自动重试。用受控示例测试恢复路径,并确认第二次运行不会重复创建记录或消息。