TransformerDefinition - スコープ指定、グローバル

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む8読むのに数分
  • TransformerDefinition API は、変換ルールリストとレコードパスを関連付ける TransformerDefinition オブジェクトをインスタンス化および管理するためのメソッドを提供します。

    TransformerDefinition API は、Transformer および TransformerRuleList API と連動します。 これらの API を組み合わせて、構造化された JSON ドキュメント内の XML ノードまたは任意のエンティティを、名前と値のペアの出力に変換します。文字列、数値、その他のアレイなど、アレイ内のオブジェクトと要素を含む、サポートされている JSON エンティティ。

    • TransformerRuleList API を使用すると、ソースドキュメントのどのデータを出力に含めるか、およびソースデータをどのように変換するかを定義する変換ルールリストを作成できます。

    • TransformerDefinition API は、変換ルールリストを JSON/XML レコードパスに関連付けて、再利用可能な変換定義オブジェクトを定義します。変換定義オブジェクトを使用して、1 つ以上のソースドキュメントを変換できます。

    さらに、このオブジェクトは TransformerDefinition オブジェクトのレコードパスを取得可能にするメソッドを提供します。このオブジェクトに関連付けられた有効な TransformerRuleList が定義の中にあるかどうかを検証することもできます。

    Transformer API は、指定された変換ルールリストを使用して、一度に 1 つのデータエンティティで実際のデータ変換を実行し、目的の出力データを作成します。

    TransformerDefinition クラスは、スコープ指定、およびグローバルのサーバースクリプトで使用できます。このクラスを使用する際は、sn_tfrm 名前空間識別子を使用します。また、この API をインスタンスで使用するには、Transformation Service プラグイン (com.glide.transform) をアクティブ化する必要があります。

    TransformerDefinition - TransformerDefinition(オブジェクト transformerRuleList, 文字列 recordPath)

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

    表 : 1. パラメーター
    名前 タイプ 説明
    transformerRuleList オブジェクト このトランスフォーマー定義に関連付ける TransformerRuleList。
    recordPath 文字列

    オプション。ソースドキュメント内のレコードとして解析されるノードのコンテナー (親) を識別するパス (JSON の場合は JSONPath、XML の場合は XPath)。

    JSON ドキュメントの場合、これらのノードは任意のオブジェクト、アレイ、または JSON プリミティブ (文字列、数値、ブーリアン) にすることができます。XML ドキュメントの場合、これらのノードはコンテナーの子要素です。

    recordPath が指定されていない場合、ドキュメント全体が単一のレコードとして推測されます。JSON ドキュメントの場合、最上位ノードがアレイで recordPath が指定されていない場合、最上位アレイはレコードのコンテナーであり、その各エントリーはレコードです。

    var stockAPI = new sn_ws.RESTMessageV2('Stock Details', 'Default GET'); 
    var response = stockAPI.execute(); 
    var responseBody = response.getBody(); 
    
    var transformerRuleList = new sn_tfrm.TransformerRuleList()
      .fromJSON()
      .addSymbol('ticker', 'quote.symbol') 
      .addSymbol('change_percentage', 'quote.change_change') 
      .thenMultiply('100') 
      .thenRoundDown('0') 
      .addSymbol('close_price', 'quote.close') 
      .thenAdaptCurrency('USD', false) 
      .addSymbol('summary') 
      .thenConcat('Shares of ') 
      .thenConcatSymbol('ticker') 
      .thenConcat(' closed at ') 
      .thenConcatSymbol('close'); 
    
     
    var path = '$.*'; // Transform all objects in the JSON document
    var transformerDefinition = new sn_tfrm.TransformerDefinition(transformerRuleList, recordPath); 
    var transformer = new sn_tfrm.Transformer(transformerDefinition, responseBody); 
    
    var results = []; 
    while (transformer.transform()) { 
      results.push(transformer.getRow());
    }

    TransformerDefinition - TransformerDefinition(文字列 transformerDefinitionSysId)

    既存のトランスフォーマー定義を使用して TransformerDefinition オブジェクトをインスタンス化します。

    表 : 2. パラメーター
    名前 タイプ 説明
    transformerDefinitionSysID 文字列 トランスフォーマー定義のSys_id。レコード トランスフォーマー [sys_record_transformer] テーブルにあります。

    この例では、指定されたsys_idに基づいて TransformerDefinition オブジェクトをインスタンス化します。

    var transformerDefinition = new sn_tfrm.TransformerDefinition("7208b59743542110d4dc2c78c9b8f2e2");

    TransformerDefinition - recordPath()

    TransformerDefinition オブジェクトがインスタンス化されたときにこれが設定されている場合は、TransformerDefinition オブジェクトに関連付けられたソースデータファイルのレコードパスを返します。

    レコードのパス (JSON の場合は JSONPath、XML の場合は XPath) は、ソースドキュメント内のレコードとして解析されるノードのコンテナー (親) を識別します。

    JSON ドキュメントの場合、これらのノードは任意のオブジェクト、アレイ、または JSON プリミティブ (文字列、数値、ブール) にすることができます。XML ドキュメントの場合、これらのノードはコンテナーの子要素です。

    recordPath が指定されていない場合、ドキュメント全体が単一のレコードとして推測されます。JSON ドキュメントの場合、最上位ノードがアレイで recordPath が指定されていない場合、最上位アレイはレコードのコンテナーであり、その各エントリーはレコードです。

    表 : 3. パラメーター
    名前 タイプ 説明
    なし
    表 : 4. 返される内容
    タイプ 説明
    文字列 設定されている場合は、トランスフォーマー定義に関連付けられたレコードパス。設定されていない場合は null を返します。
    var path = '$.records'; 
    var transformerDefinition = new sn_tfrm.TransformerDefinition(transformerRuleList, recordPath); 
    var transformer = new sn_tfrm.Transformer(transformerDefinition, responseBody);  
    .
    .
    .
    
    var recordPath = transformerDefinition.recordfPath();
    
    var results = []; 
    while (transformer.transform()) { 
      results.push(transformer.getRow());
    }

    TransformerDefinition - validate()

    有効な TransformerRuleList が TransformerDefintion オブジェクトに関連付けられているかどうかを検証します。

    表 : 5. パラメーター
    名前 タイプ 説明
    なし
    表 : 6. 返される内容
    タイプ 説明
    ブーリアン 有効な TransformerRuleList が指定の TransformerDefintion オブジェクトに関連付けられているかどうかを示すフラグ。

    有効な値:

    • true:有効な TransformerRuleList が関連付けられている
    • false:TransformerRulList が無効であるか関連付けられていない
    var transformerDefinition = new sn_tfrm.TransformerDefinition(transformerRuleList, recordPath);
    var transformer = new sn_tfrm.Transformer(transformerDefinition, responseBody); 
    .
    .
    .
    
    if (transformerDefinition.validate()) {
    
      var results = []; 
      while (transformer.transform()) { 
        results.push(transformer.getRow());
      }
    }