Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

スケジュールされたジョブの操作中にエラーが発生した場合のメールアラートを設定する

公開日: Jun 26, 2023
説明
※この記事は英語版を翻訳しており、一部機械翻訳を含むため内容は後日更新される可能性があります。最新の内容は英語版を参照してください。表示言語は画面右下の言語名から切り替えられます。

Schedulable と Batchable コードの両方から複数の Apex ジョブが実行されます。問題がないかどうか Apex ジョブリストを確認する方法もありますが、エラーや、より詳細なエラー情報を通知する方が効果的です。
解決策

ジョブがエラーをスローするたびにエラー情報を保存するカスタムオブジェクトを作成し、エラーが発生した場合にメールアラートを送信するワークフロールールをこのオブジェクトに設定できます。


次に例を示します。
より具体的な複数の項目に分割することもできますが、エラーログのカスタムオブジェクトにはカスタム項目 Trace__c のみがあります。

このため、スケジュールする Apex クラスで catch ステートメントに新しいエラーログオブジェクトを作成し、ジョブが失敗した場合に特定のエラー情報を記録します。
 

try{
    //Some DML statement
} catch (Exception e) {         
    Error_Log__c log = new Error_Log__c();
    log.trace__c = 'Type: ' + e.getTypeName() + '\n' + 'Cause: ' + e.getCause() + '\n' + 'Message: ' 
    + e.getMessage() + '\n' + 'Line #: ' + e.getLineNumber() + '\n' + e.getStackTraceString() + '\n'
    + 'Some Custom Variable Information From Class: ' + myClassVariable;
    insert log;         
}

次に、新しいエラーログが作成されるたびにメールを送信するワークフローをエラーログオブジェクトに設定できます。そこで使用するクラスに応じて異なる情報を追加できるため、柔軟性があります。

ただし、この目的でカスタムオブジェクトを使用し、エラーデータを保存する場合、このオブジェクトを監視して定期的に古いエラーログを削除する必要があります。30 日以上前のデータは毎月実行される一括処理クラスを使用して削除できます。

この方法の利点は、問題がある場合にのみアラートが通知されることです。スケジュールされたクラスが多数ある場合は、ジョブ完了時にメールを送信することもできます。ただし、多数のクラスうち、一部が毎夜実行される場合、問題がないことを単に通知するためにメールを送信する必要はありません。メールは問題が生じた場合にのみ送信します。

ナレッジ記事番号

000387981

 
読み込み中
Salesforce Help | Article