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

Newer Version Available

This content describes an older version of this product. View Latest

非同期コールアウトを使用するプロセス

非同期コールアウトを使用するには、コントローラのアクションメソッドに Continuation オブジェクトを作成して、コールバックメソッドを実装します。

アクションメソッドでの非同期コールアウトの呼び出し

非同期コールアウトを呼び出すには、Visualforce アクションメソッドで Continuation インスタンスを使用して、外部サービスをコールします。継続を作成する場合は、タイムアウト値およびコールバックメソッドの名前を指定できます。たとえば、次のコードは、タイムアウト値を 60 秒、コールバックメソッド名を processResponse とする継続を作成します。

1Continuation cont = new Continuation(60);
2cont.continuationMethod = 'processResponse';

次に、Continuation オブジェクトを外部コールアウトに関連付けます。関連付けるには、HTTP 要求を作成し、次のとおりこの要求を継続に追加します。

1String requestLabel = cont.addHttpRequest(request);

このプロセスは、HttpRequest クラスを使用したコールアウトの実行に基づきます。WSDL ベースのクラスの使用例は、「インポートした WSDL からの非同期コールアウトの実行」を参照してください。

メモ

コールアウト (アクションメソッド) を呼び出すメソッドは、システムがコールアウトを送信した後に現在の要求を一時停止し、コールアウト応答を待機するよう Visualforce に指示する Continuation オブジェクトを返す必要があります。Continuation オブジェクトは、実行されるコールアウトの詳細を保持します。

次はコールアウトを呼び出すメソッドの署名です。戻り値が Object 型の場合は、Continuation を表します。

1public Object calloutActionMethodName()

コールバックメソッドの定��

外部サービスがコールアウトの処理を完了すると、応答が返されます。コールアウトが返された後に非同期実行するためのコールバックメソッドを指定できます。このコールバックメソッドは、コールアウト呼び出しメソッドが定義されたコントローラクラスで定義される必要があります。Visualforce ページに表示する応答の取得など、返された応答を処理するコールバックメソッドを定義できます。

コールバックメソッドは引数を取らず、次の署名が示されます。

1public Object callbackMethodName()

戻り値が Object 型の場合は、ContinuationPageReferencenull のいずれかを表します。元の Visualforce ページを表示して、Visualforce 要求を完了するには、コールバックメソッドで null を返します。

アクションメソッドで JavaScript Remoting を使用する場合は (@RemoteAction で付加)、コールバックメソッドが静的である必要があり、サポートされている次の署名が示されます。

1public static Object callbackMethodName(List< String> labels, Object state)

または、

1public static Object callbackMethodName(Object state)

システムがコールバックメソッドを呼び出し、実行されたコールアウト要求に関連付けられている表示ラベルを保持する場合は、labels パラメータがシステムによって指定されます。コントローラの Continuation.state プロパティを設定すると、state パラメータが指定されます。

次の表は、コールバックメソッドの戻り値の一覧です。戻り値はそれぞれ異なる動作に対応します。

表 1. コールバックメソッドの戻り値
コールバックメソッドの戻り値 要求のライフサ���クルと結果
null システムが Visualforce ページ要求を完了して、元の Visualforce ページ (またはその一部) を表示します。
PageReference システムが Visualforce ページ要求を完了して、新しい Visualforce ページにリダイレクトします。

(PageReference のクエリパラメータを使用して、Continuation の結果を新しいページに渡します)

Continuation システムが Visualforce 要求を再度一時停止して、新しいコールアウトの応答を待機します。コールバックメソッドの新しい Continuation を返して、非同期コールアウトをチェーニングします。

継続の continuationMethod プロパティが設定されていない場合、コールアウト応答が返されたときに、コールアウトを実行したものと同じアクションメソッドが再度コールされます。

メモ