【问题标题】:Dummy updates of Salesforce database records and execution governorsSalesforce 数据库记录和执行控制器的虚拟更新
【发布时间】:2012-02-07 20:32:45
【问题描述】:

我需要在不真正更新任何值的情况下触发 Salesforce 数据库中的一大堆记录的更新。这是为了制作一些公式来重新计算一些字段。

这是我尝试过的 - 一个可安排的课程(比如我希望它每晚都运行):

global class acmePortfolioDummyUpdate implements Schedulable
{
    global void execute(SchedulableContext SC) 
    {
        for (Acme_Portfolio__c p : [Select Id From Acme_Portfolio__c]) {
            update(p);
        }
    }
}

update(p) 是一个 DML 语句,Salesforce 将它们的数量限制为 150。在我的例子中,它大约是几千条记录。

此外,我需要在许多不同的投资组合中执行此操作。 SF 将预定课程的数量限制为 10 个。

有什么解决方法吗? 谢谢

【问题讨论】:

    标签: ajax salesforce dml


    【解决方案1】:

    试试Batch Apex。您可以使用可安排的课程安排您的批次。如果我错了,请纠正我,但每次阅读时都不会重新计算公式?

    编辑:评论没有足够的空间。 我不保证这会编译(现在无法访问 org),但可以这样尝试:

    global class batchClass implements Database.batchable<sObject>{ 
        global Database.QueryLocator start(Database.BatchableContext BC){
            return Database.getQueryLocator('Select Id From Acme_Portfolio__c');    
        }   
    
        global void execute(Database.BatchableContext BC, List<sObject> scope){
            update scope;
        }
        global void finish(Database.BatchableContext BC){
        }   
    }
    

    并从系统日志中运行:

    Database.executeBatch(new batchClass());
    

    【讨论】:

    • 是的,公式会根据视图重新计算。我猜他的意思是工作流字段更新。
    • 谢谢。如何使用 Batch Apex 执行此操作?我以前读过一些关于它的文档,但对我来说仍然很神秘。
    • 我不确定重新计算公式和工作流字段更新。假设我需要触发一堆自定义对象的更新。
    • 感谢 Lukasz,但它给了我一个错误:错误:编译错误:必须为参数化类型提供类型参数:第 3 行第 12 列的 Iterable
    • 我也刚刚在第一行输入了类型,你需要它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2016-01-15
    相关资源
    最近更新 更多