Я новичок в Apex, и я должен вызвать веб-сервис для каждой учетной записи (для нескольких тысяч учетных записей).Расписание/пакет для большого количества выносок webservice?
Обычно один запрос webservice занимает от 500 до 5000 мс.
Насколько мне известно, для этой задачи требуются планируемые и пакетные классы.
Моя идея состояла в том, чтобы группировать счета по кодам стран (только в Европе) и начинать партию для каждой группы.
Первая партия запускается планируемым класса, следующие из них начинаются в пакетном способе отделки:
global class AccValidator implements Database.Batchable<sObject>, Database.AllowsCallouts {
private List<String> countryCodes;
private countryIndex;
global AccValidator(List<String> countryCodes, Integer countryIndex) {
this.countryCodes = countryCodes;
this.countryIndex = countryIndex;
...
}
// Get Accounts for current country code
global Database.QueryLocator start(Database.BatchableContext bc) {...}
global void execute(Database.BatchableContext bc, list<Account> myAccounts) {
for (Integer i = 0; i < this.AccAccounts.size(); i++) {
// Callout for every Account
HttpRequest request ...
Http http = new Http();
HttpResponse response = http.send(request);
...
}
}
global void finish(Database.BatchableContext BC) {
if (this.countryIndex < this.countryCodes.size() - 1) {
// start next batch
Database.executeBatch(new AccValidator(this.countryCodes, this.countryIndex + 1), 200);
}
}
global static List<String> getCountryCodes() {...}
}
И мой график класс:
global class AccValidatorSchedule implements Schedulable {
global void execute(SchedulableContext sc) {
List<String> countryCodes = AccValidator.getCountryCodes();
Id AccAddressID = Database.executeBatch(new AccValidator(countryCodes, 0), 200);
}
}
Теперь I'am застрял с губернаторами исполнения Salesforces и лимиты: Для почти всех выносок я получаю исключения «Прочитанный тайм-аут» или «Превышено максимальное время, выделенное для выноски (120000 мс)».
Я также пробовал асинхронные выноски, но они не работают с партиями.
Итак, есть ли способ запланировать большое количество выносок?