2013-03-24 5 views
2

Я вызываю экземпляр класса пакета и после завершения пакета, я вызываю два других экземпляра пакетного класса. Способ отделки() для первого серийного классаВыполнение Confusion в классе пакета Apex

public void finish(Database.BatchableContext BC) 
{ 
    List<Event__c> events = [SELECT Id FROM Event__c]; 
    delete events; 

    System.debug('Executing finish'); 
    for (CalendarSettings__c c: [SELECT Id, Name, CalendarId__c, 
             CalendarQuery__c, FieldToDisplay__c 
           FROM CalendarSettings__c]) 
    { 
     System.debug('Calendar Id is' + c.CalendarId__c); 
     BatchPublicCampaignsToGoogle bjob = new BatchPublicCampaignsToGoogle(
       c.CalendarQuery__c, c.CalendarId__c, c.FieldToDisplay__c); 
     Database.executeBatch(bjob,9); 
    } 

} 

Проблема я столкнулся, я жду, что Пакетный класс BatchPublicCampaignsToGoogle будет называться два раза, но это называется только один раз. Цикл работает в два раза (я проанализировал журнал отладки). Почему это называется только один раз?

ответ

3

СЦЕПЛЕНИЕ Пакетные Работа была введена как особенность зимой 13. Из примечания к выпуску:

Запуск Пакетное задание из другого пакетного задания

Теперь вы можете начать партию работу из другой партии работу по телефону Database.executeBatch от finish метод класса партии. Это позволяет связать ваши задания и создать цепочку заданий. Обратите внимание, что ограничения регулятора пакетных заданий по-прежнему применяются. Это изменение относится к пакетной Apex, сохраненной с использованием API Salesforce.com версии 26.0 и более поздних версий. Ранее, когда Apex сохранял с использованием Salesforce.com API версии 25.0 и более ранних версий, вы не могли позвонить Database.executeBatch из любого метода Apex пакета. Используемая версия - это версия рабочего класса, запускающая другое пакетное задание . Если метод finish в запущенном классе пакета вызывает метод в вспомогательном классе для запуска пакетного задания, версия API вспомогательного класса Salesforce.com не имеет значения. Source

Таким образом, для классов Apex, используя API версии 26.0, а затем вы можете цепи один пакетное задание на конце одного, который только что закончил. Вы не можете разветвляться и запускать несколько пакетных заданий при завершении.

Смежные вопросы