Salesforce 批处理类Apex中的执行混乱
我正在调用一个批处理类实例,完成批处理后,我将调用另外两个批处理类实例。第一批处理类的finish()方法是Salesforce 批处理类Apex中的执行混乱,salesforce,apex-code,batch-processing,soql,Salesforce,Apex Code,Batch Processing,Soql,我正在调用一个批处理类实例,完成批处理后,我将调用另外两个批处理类实例。第一批处理类的finish()方法是 public void finish(Database.BatchableContext BC) { List<Event__c> events = [SELECT Id FROM Event__c]; delete events; System.debug('Executing finish'); for (CalendarSettings
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);
}
}
public void finish(Database.BatchableContext BC)
{
列出事件=[从事件中选择Id];
删除事件;
系统调试(“执行完成”);
对于(CalendarSettings\uuuC:[选择Id、名称、CalendarId\uC、,
日历查询,字段显示
从日历设置(c])
{
System.debug('日历Id为'+c.CalendarId\uu\c);
BatchPublicActivationsToGoogle bjob=新的BatchPublicActivationsToGoogle(
c、 CalendarQuery\uuuu c,c.CalendarId\uuuu c,c.FieldToDisplay\uuuu c);
数据库执行包(bjob,9);
}
}
我面临的问题是,我希望批处理类
batchPublicActivationsToGoogle
将被调用两次,但只调用一次。循环运行了两次(我分析了调试日志)。为什么只调用一次?链接批处理作业是在2013年冬季作为一项功能引入的。从发行说明中:
从另一个批处理作业启动批处理作业
现在可以开始批处理了
从另一个批处理作业调用数据库.executeBatch
finish
批处理类的方法。这允许您链接批次
创造就业机会,创造一系列就业机会。请注意,调速器限制
批处理作业仍然适用。此更改适用于使用保存的批处理
Salesforce.com API版本26.0及更高版本。以前,已保存Apex
使用Salesforce.com API 25.0版及更早版本,您无法调用
Database.executeBatch
从任何批处理Apex方法中执行。版本
used是启动另一个批处理类的运行批处理类的版本
批处理作业。如果正在运行的批处理类中的finish
方法调用
方法启动批处理作业Salesforce.com
助手类的API版本并不重要
因此,对于使用API版本26.0及更高版本的Apex类,您可以将一个批处理作业链接到刚刚完成的批处理作业的末尾。当一个批处理作业完成时,不能进行分支并启动多个批处理作业