作成したバッチの最後に発生したバッチ エラーを含む電子メールを送信しようとすると、問題が発生します。問題は、静的なリストであっても、何らかの理由で outputList リストが常にクリアされることです。各バッチのエラーを含む電子メールを送信すると、出力リストがクリアされていない状態で作成されたバッチごとにエラーが送信されますが、すべてのバッチの最後に電子メールを送信しようとすると、outputList がクリアされます。CreationBatch クラスのどこにも outputList をクリアしません。データベースからのエラーを他の情報と共に追加し続けるだけです。それを行う方法はありますか (すべてのバッチの最後に、各バッチからのすべてのエラーを含む 1 つの電子メールを送信します)?
// 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