Почему я не могу сохранить этот класс SalesForce Batchable? - PullRequest
4 голосов
/ 10 марта 2012

В настоящее время я использую Apex Workbook , чтобы обновить мои знания о SalesForce.

Урок № 15, урок 1. Предлагает следующий код:

global class CleanUpRecords implements Database.Batchable<Object>
{
    global final String query;

    global CleanUpRecords (String q) {query = q;}

    global Database.Querylocator start (Database.BatchableContext BC)
    {
           return Database.getQueryLocator(query);
    }    


    global void execute (Database.BatchableContext BC, List<sObject> scope)
    {
        delete scope;
        Database.emptyRecycleBin(scope);
    }    

    global void finish(Database.BatchableContext BC)
    {
        AsyncApexJob a = [
                SELECT Id, Status, NumberOfErrors, JobItemsProcessed, TotalJobItems, CreatedBy.Email
                FROM AsyncApexJob 
                WHERE Id = :BC.getJobId()
            ];

        // Send an email to the Apex job's submitter
        // notifying of job completion.
        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
        String[] toAddresses = new String[] {a.CreatedBy.Email};
        mail.setToAddresses(toAddresses);
        mail.setSubject('Record Clean Up Completed ' + a.Status);
        mail.setPlainTextBody (
                'The batch Apex job processed ' + a.TotalJobItems +
                ' batches with '+ a.NumberOfErrors + ' failures.'
               );
        Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
    }

}

Однако независимо от того, какой интерфейс разработки (например, Force IDE, консоль, настройка) я использую, при попытке сохранить это я получаю:

Multiple markers at this line
    - File only saved locally, not to server
    - Save error: CleanUpRecords: Class must implement the global interface method: Iterable<Object> start(Database.BatchableContext) from Database.Batchable<Object>, CleanUpRecords: Class must implement the global interface method: void execute(Database.BatchableContext, LIST<Object>) from 
     Database.Batchable<Object>

(или некоторый эквивалент, в зависимости от того, как я пытаюсь его сохранить.)

Однако, мне кажется, необходимые методы уже есть.

Чего не хватает?

1 Ответ

9 голосов
/ 10 марта 2012

Приготовьтесь разочароваться ... есть только один персонаж.

Ваше объявление класса должно быть:

global class CleanUpRecords implements Database.Batchable<sObject> {

вместо:

global class CleanUpRecords implements Database.Batchable<Object> {
...