咨询Salesforce Composite是否支持回滚策略及失败重处理机制
Salesforce Composite 回滚策略及失败处理方案
一、是否支持回滚策略?
Salesforce Composite API 默认不支持自动回滚,单条请求的成功结果不会因后续请求失败而撤销,但可以通过两种方式实现回滚效果:
- Composite Batch 全量回滚:使用
Composite Batch时设置allOrNone参数为true,此时批次内任意一条请求失败,所有已执行的操作都会被回滚,整个批次的变更全部撤销。 - 手动补偿回滚:如果不需要全量回滚,需自行记录前序操作的原始状态,当后续操作失败时,执行反向操作(比如将已更新的记录恢复至初始状态)。
二、3条记录更新最后一条失败的处理方案
针对更新3条记录时最后一条失败的场景,要实现回滚+重新处理且避免重复,可选择以下方案:
方案1:全量回滚后重试失败记录
调用Composite Batch时开启"allOrNone": true,一旦最后一条记录更新失败,前两条的更新会自动回滚。之后单独针对失败的那条记录,通过其唯一标识(记录ID或外部ID)执行更新操作,由于是基于已有记录的更新,不会产生重复。
方案2:手动补偿+定向重试
- 执行更新前,先记录前两条记录的原始字段值;
- 当第三条记录更新失败时,用保存的原始值将前两条记录恢复至更新前状态;
- 对失败的第三条记录,先通过唯一标识确认其当前状态(避免被其他流程修改),再执行更新操作——基于唯一标识的更新不会创建重复记录。
内容的提问来源于stack exchange,提问作者Ramachandra Setti
相关产品推荐
相关产品推荐

