進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

Apex 一括処理クラスからのプラットフォームイベントの使用のハンズオン

学習の目的

この単元を完了すると、次のことができるようになります。

  • エラーまたは例外が発生したときに Apex 一括処理クラスからプラットフォームイベントを起動する。
  • 認定 Platform デベロッパー資格を更新する。

Apex 一括処理からのプラットフォームイベントの起動

Apex 一括処理クラスは、エラーまたは例外が発生したときにプラットフォームイベントを起動できます。イベントレコードには処理中のレコード ID、例外種別、例外メッセージ、スタック追跡が含まれるため、[設定] の [Apex ジョブ] ページよりも詳細なエラーの追跡情報が提供されます。失敗のカスタム処理と再試行ロジックを組み込むこともできます。イベントをリスンしているクライアントは、その失敗頻度、失敗時に範囲内にあったレコード、その他の例外の詳細を判断できます。イベントは、Salesforce Platform 内部エラーや、ガバナ制限を超えたために発生する LimitExceptions などのキャッチできない Apex 例外でも起動されます。

Database.RaisesPlatformEvents インターフェースを実装し、プラットフォームイベントを起動するには、Apex 一括処理クラス宣言で API バージョン 44.0 以降を使用する必要があります。プラットフォームイベントレコードに、エラー発生時の一括処理ジョブのフェーズ (start、execute、finish) が追加されました。Database.Batchable インターフェースの start および finish メソッドで、エラー時にプラットフォームイベントが起動されるようになりました。これは、ベータリリースからの機能変更です。

プラットフォームイベントを起動するには、Apex 一括処理クラス宣言で Database.RaisesPlatformEvents インターフェースを実装する必要があります。

public with sharing class YourSampleBatchJob implements
Database.Batchable<SObject>, Database.RaisesPlatformEvents {
// class implementation
}

プラットフォームイベントへの登録には複数の方法があります。トリガは、Apex での自動登録メカニズムを提供します。イベントオブジェクトに対する after insert トリガを記述して、受信イベントに登録できます。

trigger BatchApexErrorEventTrigger on BatchApexErrorEvent ( after insert )
{
  // trigger implementation
}

この変更は、Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition の Lightning Experience および Salesforce Classic に適用されます。

下記のハンズオン Challenge を実行してこの新しい機能を試してください。

リソース

ハンズオン Challenge への準備

下記のハンズオン Challenge では、この新しい機能を使用できます。この Challenge では、既存の Apex 一括処理クラスを更新して、一括処理ジョブで何らかの種別の未対応の例外が発生したら BatchApexErrorEvent プラットフォームイベントを起動する新機能を導入する必要があります。この Challenge に関しては、この情報を保持して後でシステム管理者がレビューできるようにする必要があります。つまり、ここではカスタムオブジェクトにイベントデータを書き出してシステム管理者がそれに対するレポートを作成できるようにする必要があります。

ただし、開始する前に、少しだけ設定が必要です。未管理パッケージを新しい Trailhead Playground にインストールする必要があります。この未管理パッケージを使用してハンズオン Challenge を実行します。

未管理パッケージには、記述済みの Apex 一括処理実装である BatchLeadConvert クラスが含まれています。

メモ

メモ

Database.RaisesPlatformEvents インターフェースを実装できるようにするには、Apex 一括処理クラスで API バージョン 44.0 以降を使用していることを確認します。未管理パッケージで提供されるクラスはすでにこの要件に準拠していますが、他の一括処理ジョブを更新するときには必ず API バージョンを確認してください。

  1. このハンズオン Challenge をスクロールダウンし、[起動] をクリックして Trailhead Playground を開きます。
  2. 設定 をクリックして、[設定] を選択します。
  3. [クイック検索] ボックスに「ユーザ」と入力し、[ユーザ] を選択します。
  4. 自分の名前の隣にあるチェックボックスをオンにします。ユーザ名をメモします。
  5. [パスワードのリセット][OK] の順にクリックします。このステップにより、ユーザ名に関連付けられているアドレスにメールが送信されます。メールがない場合は、迷惑メールフォルダを確認してください。
  6. メール内のリンクをクリックします。
  7. 新しいパスワードを入力し、確認します。
  8. [パスワードを変更] をクリックします。

次に、パッケージをインストールします。

  1. Chrome で、シークレットブラウザウィンドウを開きます。
  2. https://login.salesforce.com/packaging/installPackage.apexp?p0=04t4P000002EMv0 リンクを選択してコピーします。
  3. シークレットウィンドウのアドレスバーにこのリンクを貼り付けて、パッケージをインストールします。
  4. Salesforce のログイン画面が表示されたら、Trailhead Playground のユーザ名とパスワードを入力し、[ログイン] をクリックします。
  5. [すべてのユーザのインストール] を選択して [インストール] をクリックします。
  6. インストールが完了したら、[完了] をクリックします。

ユーザ名がわからない場合やパスワードをリセットできない場合は、こちらの記事を参照してください。パッケージのインストールで問題が発生した場合は、「Trailhead Playground の管理」を参照してください。