Apex クラスでの継続の処理
Apex クラスで継続を処理するには、Apex Continuation
オブジェクトを使用します。
-
外部サービスをコールする前に、Salesforce ユーザインターフェース内の認証されたリモートサイトのリストにそのリモートサイトを追加する必要があります。[設定] から、[クイック検索] ボックスに「
Remote Site Settings
」と入力します。[リモートサイトの設定] を選択して、[新規リモートサイト] をクリックします。次の Apex クラスの継続の例に示すように、LONG_RUNNING_SERVICE_URL
に対応するコールアウトの URL を追加します。 コールアウトでエンドポイントとして指定ログイン情報を指定する場合、リモートサイト設定を定義する必要はありません。指定ログイン情報では、1 つの定義にコールアウトエンドポイントの URL と必要な認証パラメータを指定します。コードに、長時間サービスの URL ではなく、指定ログイン情報 URL を指定します。 -
長時間のコールアウトを実行するには、
Continuation
オブジェクトを返す Apex メソッドを定義します。(@AuraEnabled
アノテーションの属性についてはまだ気にしないでください。まもなく説明します。) -
コールアウトの完了後に Apex コールバックメソッドが呼び出されるように
Continuation
オブジェクトのcontinuationMethod
プロパティで設定します。この例のコールバックメソッドはprocessResponse
です。コールバックメソッドは、同じ Apex クラスに属している必要があります。 -
HttpRequest
オブジェクトをContinuation
オブジェクトに追加して、コールアウトのエンドポイントを設定します。1 つのContinuation
オブジェクトに最大 3 個のコールアウトを含めることができます。各コールアウトには、リモートサイトまたは指定ログイン情報が [設定] で定義されている必要があります。 -
コールバックメソッドに渡すデータを
Continuation
オブジェクトのstate
プロパティで設定します。state
プロパティにはObject
型があるため、Apex でサポートされているすべてのデータ型を渡すことができます。 -
Apex コールバックでロジックをコーディングします。
Continuation
オブジェクトに設定されているすべてのコールアウトが完了すると、Apex コールバックメソッドのprocessResponse
が呼び出されます。このコールバックメソッドには 2 つのアクセス可能なパラメータがあります。labels
— 継続に含まれる各リクエストのラベルのリスト。ラベルは自動的に作成されます。state
—Continuation
オブジェクトのstate
プロパティで設定した状態。
-
継続に含まれる各要求に対する応答。次に例を示します。
-
結果をコンポーネントの JavaScript ファイルに返します。
上記のすべてのステップを 1 つにまとめた完全な Apex クラスの例を示します。