TransformerDefinition - 범위 지정, 전역
TransformerDefinition API는 변환 규칙 목록 및 레코드 경로를 연관시키는 TransformerDefinition 오브젝트를 인스턴스화하고 관리하는 메소드를 제공합니다.
이 API는 Transformer 및 TransformerRuleList API와 함께 작동합니다. 이러한 API는 구조화된 JSON 문서의 XML 노드 또는 엔터티를 이름-값 쌍의 출력으로 변환합니다. 문자열, 숫자 및 기타 배열과 같이 배열 내의 개체 및 요소를 포함하여 지원되는 JSON 엔터티입니다.
TransformerRuleList API를 사용하면 출력에 포함할 원본 문서의 데이터와 원본 데이터를 변환하는 방법을 정의하는 변환 규칙 목록을 만들 수 있습니다.
TransformerDefinition API는 변환 규칙 목록을 JSON/XML 레코드 경로와 연관시켜 재사용 가능한 변환 정의 오브젝트를 정의합니다. 변환 정의 개체를 사용하여 하나 이상의 원본 문서를 변환할 수 있습니다.
또한 이 오브젝트는 TransformerDefinition 오브젝트의 레코드 경로를 얻을 수 있는 메소드를 제공합니다. 또한 정의에 유효한 TransformerRuleList가 연결되어 있는지 여부를 확인할 수 있습니다.
변환기 API는 지정된 변환 규칙 목록을 사용하여 한 번에 하나의 데이터 엔터티로 실제 데이터 변환을 수행하여 원하는 출력 데이터를 생성합니다.
범위가 지정된 서버 스크립트와 전역 서버 스크립트 모두에서 TransformerDefinition 클래스를 사용할 수 있습니다. 이 클래스를 사용하는 경우 sn_tfrm 네임스페이스 식별자를 사용합니다. 또한 인스턴스에서 이 API를 사용할 수 있으려면 먼저 변환 서비스 플러그인(com.glide.transform)을 활성화해야 합니다.
TransformerDefinition - TransformerDefinition(Object transformerRuleList, string 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(String, transformerDefinitionSysId)
기존 변환기 정의를 사용하여 TransformerDefinition 객체를 인스턴스화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| transformerDefinitionSysId | 문자열 | 변환기 정의의 Sys_id입니다. 테이블: 기록 변환기 [sys_record_transformer] |
이 예제는 제공된 sys_id 기반으로 TransformerDefinition 객체를 인스턴스화합니다.
var transformerDefinition = new sn_tfrm.TransformerDefinition("7208b59743542110d4dc2c78c9b8f2e2");
변환기 정의 - 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());
}
}