この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Transaction Finalizers (パイロット)

Transaction Finalizers 機能により、System.Finalizer インターフェースを使用して、キュー可能フレームワークを使う非同期 Apex ジョブにアクションを関連付けることができます。具体的な使用事例として、キュー可能ジョブが失敗した場合の回復アクションの設計が挙げられます。

TransactionFinalizers 機能は、パイロットプログラムとしてスクラッチ組織でのみ使用できます。組織では作成時にこの機能を有効にしている必要があります。この機能は変更される可能性があり、パイロット期間中は本番組織で使用できません。パイロットプログラムは変更される場合があります。この機能は、Salesforce がドキュメント、プレスリリース、または公式声明で正式リリースを発表しない限り、正式リリースされません。特定期間内の正式リリースあるいはリリースの有無は保証できません。正式リリースされた製品および機能に基づいてのみ購入をご決定ください。この機能に関するフィードバックや提案は、Trailblazer Community「TransactionFinalizers」グループに投稿してください。

メモ

Finalizer は、現在パイロットとして提供されており、この機能は有効化されたスクラッチ組織でしか使用できないため、パッケージ化しないでください。

メモ

非同期ジョブが成功または失敗したときに実行されるアクションを Transaction Finalizers よりも前に直接指定する方法はありません。SOQL クエリを使用して AsyncApexJob の状況をポーリングし、ジョブが失敗している場合にジョブを再度キューに追加することしかできません。Transaction Finalizers を使用すると、後処理アクションシーケンスをキュー可能ジョブに関連付け、ジョブの実行結果に基づいて関連するアクションを実行できます。

System.Finalizer インターフェース

System.Finalizer インターフェースには execute メソッドがあります。
このメソッドは、指定した FinalizerContext インスタンスが関連付けられているキューに入れられたジョブごとにコールされます。execute メソッド内で、キュー可能ジョブの終了時に実行されるアクションを定義できます。System.FinalizerContext のインスタンスは、Apex ランタイムエンジンによって引数として execute メソッドに挿入されます。

System.FinalizerContext インターフェース

System.FinalizerContext インターフェースには 4 つのメソッドがあります。
  • getAsyncApexJobId メソッド
    この Finalizer が定義されているキュー可能ジョブの ID を返します。
  • getRequestId メソッド
    要求を一意に識別する文字列である要求 ID を返し、イベントモニタリングログと関連付けることができます。AsyncApexJob テーブ���と関連付けるには、代わりに getAsyncApexJobId メソッドを使用します。キュー可能ジョブと Finalizer の実行の両方が (同じ) 要求 ID を使用します。
  • getResult メソッド
    Finalizer が関連付けられている親非同期 Apex キュー可能ジョブの結果を表す System.ParentJobResult 列挙を返します。この列挙は、SUCCESSUNHANDLED_EXCEPTION の値を取ります。
  • getException メソッド
    getResultUNHANDLED_EXCEPTION の場合はキュー可能ジョブが失敗し、それ以外の場合は null になる例外を返します。
アクションをキュー可能ジョブに関連付けるには、次のように FinalizerContext インターフェースを実装します。
  1. System.FinalizerContext インターフェースを実装するクラスを定義します。
  2. キュー可能ジョブの execute メソッド内で Finalizer を関連付けます。Finalizer を関連付けるには、System.FinalizerContext インターフェースを実装するインスタンス化されたクラスの引数として System.attachFinalizer メソッド使用して、このメソッドを呼び出します。

1 つの Finalizer インスタンスのみを任意のキュー可能ジョブに関連付けることができます。execute メソッドの Finalizer の実装では、1 つの非同期 Apex ジョブ (キュー可能ジョブ、実行予定ジョブ、一括処理ジョブ) をキューに追加できます。Finalizer の実装ではコールアウトを使用できます。

メモ

例の処理を説明する