I’m having an issue when trying to send an email with the batch errors I had at the end of the batches I create. The problem is that my outputList List is always cleared for some reason even though its a static List. when I send an email with the errors for each batch the email sends the error for each batch created with the outputlist still not cleared, but when I try sending an email at the end of all the batches the outputList is cleared. I don’t clear the outputList anywhere in my CreationBatch Class, I just keep adding the errors from the database with other information. Is there a way I can do that(send one email at the end of all batches that has all the errors from each batch)?
// 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);
The CreationBatch Class has the following
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();
}
I also tried moving the outputList(public static) to the BusinessRules Class and add the values from each batch, but weirdly it was cleared when I wanted to send the email.
EDIT
I tried using this global class CaseCreation implements Database.Batchable<sObject>, Database.Stateful
But now I get this error FATAL_ERROR|Internal Salesforce.com Error
To solve that I created a Custom Object and I used it to store the values and then retrieve the information in the finish method. This will also help me to store the error and use it to track issues in the future, I scheduled a clean function that runs every 2 weeks to take care of excess data.
I opened a case with Salesforce for the issue with the FATAL_ERROR but I didn’t get a reply yet.