上下文: 我们想删除Case及其相关/子对象中的多个记录。子对象几乎没有相关对象。层次结构分为4到5个级别
----------- Child3
相关对象具有主子关系,而级联删除设置为false。
目前,我们批量删除案件的方式如下
然后使用批量删除批量删除每组记录。这样做的好处是,每批只能删除5次,而且没有达到总督的限制。
但是,此过程的缺点是,如果上述任何步骤中的删除操作均出现错误,则会回滚整个事务。尽管我们可以获取导致错误的删除,但是我们不能角色化仅与特定情况有关的对象。
问题:
答案 0 :(得分:0)
使用自底向上方法和批处理。
例如,以Child3开始。收集每个相关对象和案例对象中需要清除的所有记录。然后批量删除。
有2种方法:
声明方法: 使用每个对象中的Process Event和Process Builder / flow字段数少于350。此方法的优点是您无需编写代码。
使用Apex类: 编写顶点代码以获取需要清除/删除并批量执行的所有相关对象。
a)将批次大小设置为1,以便在删除时发生任何错误,仅相关记录将被回滚。
b)如果批次大小设置为大于1,则将回滚整个批次。在这种情况下,您需要标识父(Case对象)ID并将其标记为错误,然后重新读取作为批处理一部分回滚并再次运行的所有其他记录。在这种方法中,识别失败的记录(如果记录在child3中失败)及其根父(案例)id可能很困难。