0

我在尝试发送包含我在创建的批次结束时出现的批次错误的电子邮件时遇到问题。问题是我的 outputList 列表总是由于某种原因被清除,即使它是一个静态列表。当我发送包含每个批次错误的电子邮件时,电子邮件会为使用 outputlist 创建的每个批次发送错误,但仍未清除,但是当我尝试在所有批次结束时发送电子邮件时, outputList 会被清除。我没有在我的 CreationBatch 类中的任何地方清除 outputList,我只是不断地将数据库中的错误与其他信息一起添加。有没有办法可以做到这一点(在所有批次结束时发送一封电子邮件,其中包含每批次的所有错误)?

// Class BusinessRules
//method to create cases has the following 
        CreationBatch cBatch = new CreationBatch();
        cBatch.caseList = cList;  //list of cases

        ID batchprocessid = Database.executeBatch(cBatch,5); 

CreationBatch 类具有以下内容

 static List<String> outputList = new List<String>();

// The execute method
global void execute(Database.BatchableContext BC, List<Case> scope){

//creates cases and insert them to database then runs this 
 finally{
         GetErrorsFromBatch();
         //commented this because I want to send one email at the end of all batches
        // when this one was here I used to get multiple emails with the error msgs
        //sendBatchEmail();

      }

}

// adds error to output list
 global void GetErrorsFromBatch(){     
....
//for each db error
 outputList.add(error); 
....
}

 global void finish(Database.BatchableContext BC){

// sends the email
// when I put this here I get one email at the end but the outputList is empty
    sendBatchEmail();
}

我还尝试将 outputList(public static) 移动到 BusinessRules 类并添加每个批次的值,但奇怪的是,当我想发送电子邮件时它被清除了。

编辑

我试过用这个global class CaseCreation implements Database.Batchable<sObject>, Database.Stateful 但现在我得到这个错误FATAL_ERROR|Internal Salesforce.com Error

4

1 回答 1

1

为了解决这个问题,我创建了一个自定义对象,并使用它来存储值,然后在完成方法中检索信息。这也将帮助我存储错误并使用它来跟踪将来的问题,我安排了一个每 2 周运行一次的清理函数来处理多余的数据。

我针对 FATAL_ERROR 问题向 Salesforce 提出了一个案例,但我还没有得到回复。

于 2012-05-24T20:43:46.820 回答