0

作成したバッチの最後に発生したバッチ エラーを含む電子メールを送信しようとすると、問題が発生します。問題は、静的なリストであっても、何らかの理由で 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

4

1 に答える 1

1

これを解決するためにカスタム オブジェクトを作成し、それを使用して値を保存し、finish メソッドで情報を取得しました。これは、エラーを保存し、将来の問題を追跡するためにも役立ちます。余分なデータを処理するために、2 週間ごとに実行されるクリーン関数をスケジュールしました。

FATAL_ERROR の問題について Salesforce にケースをオープンしましたが、まだ返信がありません。

于 2012-05-24T20:43:46.820 に答える