You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Salesforce记录触发流DML错误处理:批量更新部分失败时的处理方案

Salesforce记录触发流实现局部失败处理(类似Try-Catch)

核心思路

Salesforce默认批量DML是原子性的,要么全成功要么全回滚。要实现“部分成功、部分失败单独处理”,就得把批量操作拆成单条可独立失败的处理,同时收集错误信息。

具体实现步骤

1. 配置流的触发方式

把Account的记录触发流设置为触发后更新(After Update),触发条件设为“特定字段被修改”,确保Account字段更新完成后再处理关联对象。

2. 获取关联的自定义对象记录

添加「获取记录」元素,查询当前Account关联的所有目标自定义对象记录,开启“允许集合存储多个值”,把查询结果存入集合变量(比如命名为relatedCustomRecords)。

3. 循环处理单条记录并捕获错误

添加「循环」元素,遍历relatedCustomRecords集合:

  • 先把当前循环的记录复制到单条记录变量(比如currentRecord)
  • 修改currentRecord的状态字段为目标值
  • 添加「更新记录」元素,选择“指定要更新的记录”并选中currentRecord,必须开启高级设置里的“允许部分成功”——这个开关会让单条记录更新失败时,不中断整个流,继续处理下一条
  • 紧接着添加「获取元素结果」元素,提取本次更新的成功状态和错误信息:
    • 如果更新成功,可将记录加入successRecords集合用于后续日志(可选)
    • 如果更新失败,把记录ID和错误信息拼接成字符串(比如ID: 001XXXX, 错误原因: 验证规则「XX规则」触发),存入failureDetails文本集合

4. 发送失败通知邮件

添加「决策」元素,判断failureDetails集合是否不为空:

  • 若存在失败记录,添加「发送电子邮件」元素,收件人选管理员,邮件主题设为“自定义对象批量更新失败通知”,正文把failureDetails里的内容逐行列出,清晰展示每条失败记录的信息。

关键注意点

  • “允许部分成功”是核心:没有这个设置,批量更新只要有一条失败就会全回滚,无法实现局部成功
  • 流的执行限制:循环里的单条更新会占用DML次数,若关联记录数量超过流的DML限制(默认150次),可以考虑用Apex类配合流处理,但中小批量场景下流完全够用
  • 错误信息的准确性:「获取元素结果」能拿到原生的错误描述,直接拼接即可,不用额外处理

内容的提问来源于stack exchange,提问作者Gaurav Dholakiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:55:54