Salesforce - 在 Salesforce 中从 Object 层次结构和错误处理中删除多条记录的最佳方式

Salesforce - Best way to delete multiple records from an Object hierarchy and error handling in Salesforce

上下文: 我们想删除案例中的多条记录及其 related/child objects。 child objects 几乎没有相关的 objects。有4到5层级如下

目前我们批量删除案例的方式如下

  1. 收集批次中的所有案例
  2. 收集批处理中所有案例的所有任务
  3. 收集批次中所有 Cases 的所有 Child1 记录
  4. 收集批次中所有 Cases 的所有 Child2 记录
  5. 收集批次中所有 Cases 的所有 Child3 记录

然后使用批量删除批量删除每组记录。优点是我们每批只有 5 次删除,并且不会达到调控器限制。

然而这个过程的缺点是,当上述任何步骤中的删除出现错误时,整个事务将被回滚。虽然我们可以得到哪个删除导致了他的错误,但我们不能角色回退 objects 仅与该特定案例相关。

问题:

  1. 是否有更好的方法来处理删除记录和child 记录。
  2. 有没有办法只回滚案例和 child 有错误的记录

使用自下而上的方法和批处理。

例如从 Child3 开始。收集每个相关 object 和案例 object 中需要清除的所有记录。然后批量删除。

  • 孩子 3
  • --孩子2
  • -----孩子 1
  • --------任务
  • ------------案例

有两种方法:

  1. 声明方式: 使用Process Event和Process Builder/flow字段计数在每个object小于350。这种方法的好处是你不用写代码。

  2. 使用 Apex class: 编写apex代码获取所有需要purged/deleted的相关object并批量执行。

    a) 设置batch size为1,删除时出错,只回滚相关记录。

    b) 如果批大小设置为大于 1,则整个批将回滚。在这种情况下,您需要识别 parent (Case object) id 并将它们标记为错误,re-read 作为批处理的一部分回滚的所有其他记录和 运行 再次。在此方法中,识别失败记录(如果记录在 child3 中失败)及其根 parent(案例)id 可能具有挑战性。