Salesforce 如何在APEX中创建一个解构器(或类似的解构器),在对象被销毁之前运行?

Salesforce 如何在APEX中创建一个解构器(或类似的解构器),在对象被销毁之前运行?,salesforce,apex-code,force.com,Salesforce,Apex Code,Force.com,我的应用程序有许多聚合字段,当任何相关记录被更改、添加或删除时,这些字段都需要更新。关系和计算有些复杂,所以我创建了一个类来处理所有相关表的所有计算。计算中涉及一些SOQL和DML开销,因此该类大量处理所有内容 我希望该类上的updateAll()方法在已添加到其队列的所有记录上的每个请求上运行不超过一次。但是,在APEX中似乎没有“解构器式”功能,在这个计算器对象被销毁之前自动调用 在APEX中实现此模式的最佳方式是什么?是的,没有办法检测或预测对象破坏,因为它本质上是后台的JSP(嘘,他们不

我的应用程序有许多聚合字段,当任何相关记录被更改、添加或删除时,这些字段都需要更新。关系和计算有些复杂,所以我创建了一个类来处理所有相关表的所有计算。计算中涉及一些SOQL和DML开销,因此该类大量处理所有内容

我希望该类上的updateAll()方法在已添加到其队列的所有记录上的每个请求上运行不超过一次。但是,在APEX中似乎没有“解构器式”功能,在这个计算器对象被销毁之前自动调用


在APEX中实现此模式的最佳方式是什么?

是的,没有办法检测或预测对象破坏,因为它本质上是后台的JSP(嘘,他们不想让你知道,这是“无软件”的事情;)ir可能遵循它的生命周期机制,但你不能依赖它


实际上,我们在触发器或te报告中处理聚合(取决于是否需要存储聚合)。触发器还以列表的形式接收批次,而不是一行一行地接收批次,这允许进行批次聚合,并允许我们满足讨厌的调控器的要求。不幸的是,如果您有多表聚合,则需要为所有聚合设置触发器,并为每个批重新运行它们。我创建了一个Calculator类,它重新计算~10表/对象关系中的每个相关聚合/计算字段。我在每个对象上使用触发器,使calculator类在与已更改对象相关的对象族集合上运行。我在calculator类中使用了一个静态变量来检查计算器是否在每个触发器中运行,这样,只有当计算器当前未运行时,它们才会调用计算器。它工作得很好。效率有点低,但保持在调速器限制以下,并且整体运行良好。而且,我可以随着它成长…

在聚合计算中有一个循环,这使得依赖对象触发器非常痛苦。当表A发生变化时,将重新计算表B聚合,而当表B聚合发生变化时,将重新计算表A。我可以通过其他方式检测到变化或打破循环,但感觉很脆弱。我更愿意使用析构函数…GRRCA您可以用一个SOQL检测断点,并使用聚合SOQL和where子句压缩集合吗?并将其打包到触发器中。我只是在抛砖引玉,我不知道你们的聚合过程是什么样子。低于州长的限制是什么?堆大小?