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

Continuation クラス

SOAP または REST Web サービスに対して非同期にコールアウトを実行するには、Continuation クラスを使用します。

名前空間

System

コードの例については、「Visualforce ページでの長時間コールアウトの実行」を参照してください。

Continuation のコンストラクタ

Continuation のコンストラクタは次のとおりです。

Continuation(timeout)

指定されたタイムアウト秒数を使用して、Continuation クラスのインスタンスを作成します。タイムアウトの最大値は 120 秒です。

署名

public Continuation(Integer timeout)

パラメータ

timeout
型: Integer
この継続のタイムアウト (秒)。

Continuation のプロパティ

Continuation のプロパティは次のとおりです。

continuationMethod

コールアウト応答が返された後にコールされるコールバックメソッドの名前。

署名

public String continuationMethod {get; set;}

プロパティ値

型: String

使用方法

continuationMethod プロパティが継続に設定されていない場合は、コールアウトレスポンスが返された時点で、非同期コールを行った同じアクションメソッドが再度コールされます。

メモ

timeout

継続のタイムアウト (秒)。最大値: 120 秒。

署名

public Integer timeout {get; set;}

プロパティ値

型: Integer

state

この継続で保存され、コールアウトが完了してコールバックメソッドが呼び出された後に取得可能なデータ。

署名

public Object state {get; set;}

プロパティ値

型: Object

次の例に、コントローラで継続の状態情報を保存する方法を示します。

1// Declare inner class to hold state info
2private class StateInfo {
3    String msg { get; set; }
4    List<String> urls  { get; set; }
5    StateInfo(String msg, List<String> urls) {
6        this.msg = msg;
7        this.urls = urls;
8    }
9}
10
11// Then in the action method, set state for the continuation
12continuationInstance.state = new StateInfo('Some state data', urls);

Continuation のメソッド

Continuation のメソッドは次のとおりです。

addHttpRequest(request)

この継続に関連付けられているコールアウトへの HTTP 要求を追加します。

署名

public String addHttpRequest(System.HttpRequest request)

パラメータ

request
型: HttpRequest
この継続によって外部サービスに送信される HTTP 要求。

戻り値

型: String

この継続に関連付けられている HTTP 要求を特定する一意の表示ラベル。この表示ラベルは、継続内で個々の要求を特定するために getRequests() から返される対応付けで使用されます。

使用方法

継続には最大 3 個の要求を追加できます。

渡された各要求で設定されたタイムアウトは無視されます。継続に適用されるのは、グローバルタイムアウトの最大値 (120 秒) のみです。

メモ

getRequests()

この継続に関連付けられているすべての表示ラベルと要求をキー - 値ペアとして返します。

署名

public Map<String,System.HttpRequest> getRequests()

戻り値

型: Map<String,HttpRequest>

この継続に関連付けられているすべての要求の対応付け。対応付けのキーは要求ラベルで、対応付けの値は対応する HTTP 要求です。

getResponse(requestLabel)

指定された表示ラベルに対応する要求への応答を返します。

署名

public static HttpResponse getResponse(String requestLabel)

パラメータ

requestLabel
型: String
応答を取得する要求ラベル。

戻り値

型: HttpResponse

使用方法

状況コードは、HttpResponse オブジェクトに返され、応答で getStatusCode() をコールすることによって取得できます。状況コード 200 は、要求が正常に行われたことを示します。他の状況コードの値は、発生した問題の種別を示します。

エラー状況コードのサンプル

応答で問題が発生した場合、使用される状況コードの値は次のとおりです。
  • 2000: タイムアウトになり、サーバが応答するのに間に合わなかった。
  • 2001: 接続障害が発生した。
  • 2002: 例外が発生した。
  • 2003: 応答が到着しなかった (Apex 非同期コールアウトフレームワークが再開されていないことも示します)。
  • 2004: 応答のサイズが大きすぎる (1 MB を超えている)。