Фиктивные обновления записей базы данных Salesforce и регуляторов выполнения - PullRequest
0 голосов
/ 11 января 2012

Мне нужно запускать обновления целой пачки записей в базе данных 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.

Есть ли обходной путь для этого?Спасибо

1 Ответ

3 голосов
/ 11 января 2012

Попробуйте Пакетный апекс .Вы можете запланировать свою партию, используя планируемый класс.Поправьте меня, если я ошибаюсь, но не пересчитываются ли формулы каждый раз, когда Вы их читаете?

Редактировать: Комментарий не имеет места.Я не гарантирую, что это скомпилируется (сейчас у меня нет доступа к 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...