Salesforce 批处理类Apex中的执行混乱

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

我正在调用一个批处理类实例,完成批处理后,我将调用另外两个批处理类实例。第一批处理类的finish()方法是

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类,您可以将一个批处理作业链接到刚刚完成的批处理作业的末尾。当一个批处理作业完成时,不能进行分支并启动多个批处理作业