この文章は 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 型の場合は、ContinuationPageReferencenull のいずれかを表します。

1public Object calloutActionMethodName()

次の表は、アクションメソッドの戻り値の一覧です。戻り値はそれぞれ異なる動作に対応します。

表 1. アクションメソッドの戻り値
目的の結果 アクションメソッドの戻り値 要求のライフサイクル
コールアウトを実行して、同じ Visualforce ページを表示したままにする。 Continuation オブジェクト システムが現在の Visualforce 要求を一時停止して、コールアウトの応答を待機します。
アクションメソッドを実行後、新しい Visualforce ページにリダイレクトする

(クエリパラメータを使用して、Continuation 結果オブジェクトを新しいページに渡す)。

PageReference オブジェクト システムが現在の Visualforce 要求を一時停止して、コールアウトの応答を待機します。
コールアウトを実行しない。 null システムが継続を実行せず、Visualforce 要求が一時停止されません。

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

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

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

1public Object callbackMethodName()

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

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

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

および:

1public static Object callbackMethodName(Object state)

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

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

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

(クエリパラメータを使用して、Continuation 結果オブジェクトを新しいページに渡す)。

PageReference オブジェクト システムが Visualforce ページ要求を完了します。
別の継続を開始して、非同期コールアウトをチェーニングする。 Continuation オブジェクト システムが Visualforce 要求を再度一時停止して、新しいコールアウトの応答を待機します。

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

メモ