TransformerDefinition:スコープ対象、グローバル
TransformerDefinition API は、変換ルールリストとレコードパスを関連付ける TransformerDefinition オブジェクトをインスタンス化および管理するためのメソッドを提供します。
この API は、 Transformer API および TransformerRuleList API と連携して機能します。 これらの API を組み合わせることで、XML ノードまたは構造化された JSON ドキュメント内の任意のエンティティを名前と値のペアの出力に変換します。文字列、数値、その他のアレイなどのアレイ内のオブジェクトや要素を含む、サポートされている JSON エンティティ。
TransformerRuleList API を使用すると、ソースドキュメントのどのデータを出力に含めるか、およびソースデータを変換する方法を定義する変換ルールリストを作成できます。
TransformerDefinition API は、変換ルールリストを JSON/XML レコードパスに関連付けて、再利用可能な変換定義オブジェクトを定義します。変換定義オブジェクトを使用して、1 つ以上のソースドキュメントを変換できます。
さらに、このオブジェクトは、TransformerDefinition オブジェクトのレコードパスを取得できるメソッドを提供します。また、定義に有効な TransformerRuleList が関連付けられているかどうかも検証できます。
Transformer API は、指定された変換ルールリストを使用して実際のデータ変換を一度に 1 つずつ実行し、目的の出力データを作成します。
TransformerDefinition クラスは、スコープ対象サーバースクリプトとグローバルサーバースクリプトの両方で使用できます。このクラスを使用する場合は、 sn_tfrm 名前空間識別子を使用します。また、この API をインスタンスで使用できるようにするには、変換サービスプラグイン (com.glide.transform) をアクティブ化する必要があります。
TransformerDefinition:TransformerDefinition(オブジェクト transformerRuleList, 文字列 recordPath)
TransformerDefinition オブジェクトをインスタンス化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| transformerRuleList | オブジェクト | この変換定義に関連付ける TransformerRuleList。 |
| レコードパス | 文字列 | オプション。ソースドキュメントでレコードとして解析するノードのコンテナ (親) を識別するパス (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 オブジェクトをインスタンス化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 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 が指定されていない場合、最上位アレイはレコードのコンテナーであり、その各エントリーはレコードです。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 設定されている場合は、トランスフォーマー定義に関連付けられたレコードパスです。設定されていない場合は 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 オブジェクトに関連付けられているかどうかを検証します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブール | 有効な TransformerRuleList が指定された TransformerDefintion オブジェクトに関連付けられているかどうかを示すフラグ。 有効な値:
|
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());
}
}