継続を使用した長時間コールアウトの実行
非同期コールアウトは、Visualforce ページまたは Lightning コンポーネントから実行され、コールバックメソッドで応答が返されるコールアウトです。非同期コールアウトは、継続とも呼ばれます。
Visualforce の例:
次の図は、Visualforce ページから開始する非同期コールアウトの実行パスを示します。ユーザーが Visualforce ページで Web サービスから情報を要求するアクションを呼び出します (ステップ 1)。アプリケーションサーバーは、コールアウト要求を継続サーバーに渡してから Visualforce ページに応答します (ステップ 2 ~ 3)。継続サーバーは、要求を Web サービスに送信し、応答を受信します (ステップ 4 ~ 7)。その後で応答をアプリケーションサーバーに戻します (ステップ 8)。最後に、応答が Visualforce ページに返されます (ステップ 9)。
非同期コールアウトを使用するメリットがある典型的な Salesforce アプリケーションとして、ボタンが設定された Visualforce ページがあります。ユーザーはこのボタンをクリックして、外部 Web サービスからデータを取得します。たとえば、Visualforce ページで特定の製品の保証情報を Web サービスから取得する場合があります。組織内の何千人ものエージェントがこのページを使用できます。そのため、そのうちの 100 人のエージェントが同じボタンをクリックして、製品の保証情報を同時に処理することがあります。こうした 100 件の同時アクションにより、長時間要求の同時実行数に対する 10 という制限が超過します。ただし、非同期コールアウトを使用すると、要求がこの制限の対象にならず、実行されます。
次のアプリケーション例では、ボタンアクションは Apex コントローラーメソッドで実装されます。このアクションメソッドは、Continuation を作成して返します。要求がサービスに送信された後、Visualforce 要求は一時停止されます。ユーザーは応答が返されるまで待ってから、ページを使用して処理を進め、新しいアクションを呼び出す必要があります。外部サービスが応答を返すと、Visualforce 要求が再開され、ページはこの応答を受け取ります。
これは同じアプリケーションの Visualforce ページです。このページには、このページに関連付けられたコントローラーの startRequest メソッドを呼び出すボタンが含まれています。継続の結果が返されてコールバックメソッドが呼び出された後、ボタンは outputText コンポーネントを再度表示してレスポンスボディを表示します。
次は、Visualforce ページに関連付けられている Apex コントローラーです。このコントローラーには、アクションおよびコールバックメソッドが含まれます。
