RTETransformer - スコープ指定

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:7分
  • RTETransformer API は、提供された抽出、変換、ロード (ETL) の定義に基づいて、メッセージのアレイをレコードに変換して関連する ServiceNow インスタンス内に格納するメソッドを提供します。

    たとえば、ユーザー情報を含む JSON ペイロードがあり、強力な変換エンジン (RTE) を使用してその情報をsys_userテーブルに変換する場合に、この API を使用できます。

    この API にアクセスするときは、sn_impex 名前空間を使用します。

    詳細については、「 強力な変換エンジン操作の定義」を参照してください。

    RTETransformer - rteTransform(文字列 transformDefinitionId, ブール値 verboseLogging, 文字列 source, 数値 batchSize)

    RTETransformer オブジェクトをインスタンス化します。

    表 : 1. パラメーター
    名前 タイプ 説明
    transformDefinitionId 文字列 変換に使用する抽出、変換、およびロード (ETL) 定義の sys_id。ETL 定義 [sys_rte_eb_etl_definition] テーブルにあります。

    ETL の作成については、「 抽出変換ロード (ETL) 定義の作成」を参照してください。

    verboseLogging ブーリアン

    デバッグ用の詳細なログ記録とインポートセット行の作成を有効にするかどうかを示すフラグ。

    有効な値:
    • true:ログ記録とインポートセット行の作成を有効にします。
    • false:ログ記録とインポートセット行の作成を有効にしません。
    source 文字列 インポートセットレコードの名前フィールド。
    batchSize 数字 一度に処理するメッセージ (バッチ) の数。たとえば、ペイロードに 10 件のメッセージがあり、この値が 2 に設定されている場合、メソッドは 5 つのバッチジョブを個別に実行してペイロード内のすべてのメッセージを処理します。

    次のコード例は、バッチサイズが 10 のソース testSourceRecord の RTETransformer オブジェクトをインスタンス化する方法を示しています。

    (function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) {    
      // Uses an ETL definition with a target table of incident, and mappings for the number and short description field
      var transformer = new sn_impex.RTETransformer("c58f1c6377110110f5455d14cd5a998b", true, "testSourceRecord", 10);
      var messages = ["{\"number\":\"testnumber\",\"short_description\":\"testdesc\"}"];
      var results = transformer.transform(messages);
    
      for (var i = 0; i < results.length; i++) {
        var dataList = results[i].data.incident;
        gs.log("source record id: " + results[i].sourceRecordSysId);
        gs.log("status: " + results[i].status);
        for (var j = 0; j < dataList.length; j++) {
          gs.log("number:" + dataList[j].number);
          gs.log("short desc:" + dataList[j].short_description);
        }
      }
    })(request, response, ctx);

    RTETransformer - transform(アレイ message)

    提供された抽出、変換、ロード (ETL) の定義に基づいて、メッセージのアレイをレコードに変換し、関連する ServiceNow インスタンス内に格納します。

    たとえば、ユーザー情報を sys_user レコードに変換する場合は、メッセージが 1 つだけのメッセージアレイを作成し、この変換メソッドに渡すことができます。

    表 : 2. パラメーター
    名前 タイプ 説明
    message オブジェクトのアレイ ETL 定義に基づいて変換するレコードを表す、文字列化された JSON オブジェクト。
    たとえば、アクティブなデータ、メール、名、姓がある 1 人のユーザーを sys_user テーブルに変換する場合、メッセージは次のようになります。
    [
      {  
        "active":"true",
        "email":"example@servicenow.com",
        "first_name":"Jane",
        "last_name":"Doe" 
      }
    ]
    注:
    フィールド名は、ソースエンティティのフィールドのフィールド/パスと一致する必要があります。
    表 : 3. 返される内容
    名前 説明
    data テーブル名別に整理された変換済みレコードのデータ。返されたレコードデータは、ETL 定義で指定されたマッピング済みフィールドと一致します。

    データタイプ:オブジェクト

    "data": {
      "tableName": []
    }
    data.tableName レコードを含むテーブルの詳細。

    データタイプ:オブジェクトのアレイ

    "tableName": [{
      "sys_id": String,
       // Other data for a single transformed record
      }]
    }
    例:
    "sys_user": [{ 
      "sys_id":"b29e629877130110f5455d14cd5a99ad",
      "active": "true",
      "email": "example@servicenow.com",
      "first_name": "Jane",
      "last_name": "Doe"
    }]
    data.tableName.sys_id テーブル内のレコードの sys_id。

    データタイプ:文字列

    data.tableName.<other_ETL_info> 渡された ETL で指定された追加フィールド。

    データタイプ:任意

    message 指定されたレコードの変換中にエラーが発生すると、エラーを説明するメッセージが表示されます。変換が成功した場合は null です。

    データタイプ:文字列

    sourceRecordSysId インポートセットテーブルレコードの sys_id。インポートセットテーブル名は JSON イベントシンク [imp_json_event_sinc] です。

    データタイプ:文字列

    status 変換のステータス (処理済みやエラーなど)。

    データタイプ:文字列

    次のコード例は、レコードを変換してユーザー [sys_user] テーブルに格納する方法を示しています。

    (function(/*CTIOperationRequest*/ request, /*CTIOperationResponse*/ response, /*Context*/ ctx) { 
      // Uses an ETL definition with a target table of sys_user, and mappings for the active, 
      //email, first name, and last name fields
      var transformer = new sn_impex.RTETransformer("c58f1c6377110110f5455d14cd5a998b", true, "testSourceRecord", 10);
      var messages = [JSON.stringify({
        "active":"true",
        "email":"example@servicenow.com",
        "first_name":"Jane",
        "last_name":"Doe"
      }), 
      JSON.stringify({
        "active":"true",
        "email":"example2@servicenow.com",
        "first_name":"John",
        "last_name":"Deer"
      })];
      var results = transformer.transform(messages);
    
      for (var i = 0; i < results.length; i++) { 
        var dataList = results[i].data.sys_user;
        gs.log("source record id: " + results[i].sourceRecordSysId); gs.log("status: " + results[i].status);
        for (var j = 0; j < dataList.length; j++) { 
          gs.log("First Name: " + dataList[j].first_name);
          gs.log("Last Name: " + dataList[j].last_name);
          gs.log("Email: " + dataList[j].email;
          gs.log("Active: " + dataList[j].active;
        }
      }
    }

    結果:

    source record id: b29e629877130110f5455d14cd5a99ad
    status: PROCESSED
    First Name: Jane
    Last Name: Doe
    Email: example@servicenow.com
    Active: true
    First Name: John
    Last Name: Deer
    Email: example2@servicenow.com
    Active: true