SoR 内のリモート情報をルックアップ

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:5分
  • このユースケースでは、REST API 呼び出しを使用して、リモートの銀行システム (記録システム) で顧客の住宅ローン口座の財務トランザクションの詳細を検索する方法を示します。

    コールセンターのエージェントが顧客の問い合わせに応答し、 ServiceNow フォームを使用して新しい FSO ケースを作成します。そのフォームで、コンシューマー、金融口座、カテゴリ、簡単な説明の情報、および関連するメモを手動で入力します。

    ServiceNowフォーム内のスクリプトは、コンシューマーおよび金融口座情報を使用して、リモート銀行システム (銀行アプリケーション) 上のリモート REST エンドポイントを呼び出し、金融トランザクションの詳細を取得します。その後、これらの詳細が [ ServiceNow ] フォームに表示されるため、エージェントは、残りの必要なケース情報を手動で入力する前に情報を確認できます。完了すると、FSO ケースが ServiceNow インスタンスにキャッシュされます。

    注:
    このユースケースでは、銀行アプリケーションが、要求されたコンシューマーの詳細と関連する金融口座を返す REST エンドポイント GET /api/getTransactions を公開していることを前提としています。

    リモート銀行記録システムで財務トランザクションの詳細を検索する方法を示すワークフロー。

    以下は、リモート銀行アプリケーションから受信した財務トランザクションの詳細が FSO ケースフォームに表示されたときにどのように表示されるかの例です。

    リモートバンクアプリケーションから受信したトランザクションの詳細を示す FSO ケースフォーム。

    次の図は、このユースケースシナリオのアプリケーションフローを示しており、必要な処理に関する簡単な説明を示しています。この実装では、リモートバンクアプリケーションから取得したデータはリモートテーブルに格納されます。リモートテーブル はメモリにのみキャッシュされ、 ServiceNow データベーステーブルに保存されることはありません。このシナリオは、対応する ServiceNow データベーステーブルにリモートデータを書き込むことで実装することもできます。シナリオは、GlideRecord API を使用してServiceNowデータベーステーブルにデータを格納する方法を示しています。

    エージェントが必要な情報を入力し、REST API 呼び出しを使用してリモート銀行システムの金融トランザクションの詳細を検索するケースを示すワークフロー。
    1. エージェントは、FSO フォームに必要な情報を入力します。この情報を使用して、RESTMessageV2 API を使用して REST 呼び出し /api/getTransactions を作成し、それをリモート銀行アプリケーションに送信して、顧客の財務トランザクションの詳細を取得します。
    2. リモートバンクアプリケーションは要求を処理し、指定された顧客の財務トランザクションの詳細を返します。
    3. 財務トランザクションの詳細は、v_table API を使用してリモートテーブルのServiceNowインスタンスにキャッシュされます。
    4. トランザクションの詳細が FSO フォームに表示されます。

    コード例

    次のコード例は、 RESTMessageV2 API を使用して、外部銀行アプリケーションへの REST 呼び出しを作成して実行する方法を示しています。次に、v_table API を使用して、返された結果をリモートテーブルに保存します。v_table API を使用する前に、リモートテーブル (com.glide.script.vtable) プラグインを有効にする必要があります。
    (function executeQuery (v_table, v_query) {
    // Parameters needed in the request body of the REST endpoint
      var requestBody = {
        'financial_account':v_query.getParameter('financial_account')
      };
    
      // Instantiate the RESTMessageV2 object
      var request = new sn_ws.RESTMessageV2();
      // Set the HTTP method as "GET"
      request.setHttpMethod('get');
      // URL of the endpoint on the bank application
      request.setEndpoint('https://<yourbankapphost>/api/getTransactionDetails');
      // Request body as a string
      request.setRequestBody(JSON.stringify(requestBody));
      // Call the REST endpoint
      var response = request.execute();
      // Get the response body
      var responseBody = response.getBody();
      // Parse the response body into an object
      var responseObj = JSON.parse(responseBody);
    
      // Store the response body into a virtual table
      v_table.addRow({
        sys_id: gs.generateGUID(),
        amount: responseObj.amount,
        description: responseObj.description,
        posting_date: responseObj.posting_date,
        transaction_date: responseObj.transaction_date
      });
    
    }) (v_table, v_query);

    コード例

    次のコード例は、リモートテーブルをクエリして FSO フォームに表示する方法を示しています。
    function getRequiredInfo() {
    
      // Instantiate a GlideRecord object with the remote table containing the financial transaction details.
      var now_GR = new GlideRecord('transaction_details_remote_table');
    
      // Create a query to obtain the desired financial account
      now_GR.addQuery('financial_account', g_form.getValue('financial_account'));
    
      // Execute the query
      var result = now_GR.query(); 
    
      // Display the data in the FSO form
      var data = [];
      data ['amount'] = result.amount;
      data ['description'] = result.description;
      data ['posting_date'] = result.posting_date;
      data ['transaction_date'] = result.transaction_date;
    
      return data;
    }
    
    getRequiredInfo();