TransformerDefinition - 범위 지정, 전역

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기7분
  • TransformerDefinition API는 변환 규칙 목록과 레코드 경로를 연결하는 TransformerDefinition 객체를 인스턴스화하고 관리하는 메서드를 제공합니다.

    TransformerDefinition API는 Transformer 및 TransformerRuleList API와 함께 작동합니다. 이러한 API는 XML 노드 또는 구조화된 JSON 문서의 엔터티를 이름-값 쌍의 출력으로 변환합니다. 문자열, 숫자 및 기타 배열과 같은 배열 내의 객체 및 요소를 포함하여 지원되는 JSON 엔터티입니다.

    • TransformerRuleList API를 사용하면 출력에 포함할 원본 문서의 데이터와 원본 데이터를 변환하는 방법을 정의하는 변환 규칙 목록을 만들 수 있습니다.

    • TransformerDefinition API는 변환 규칙 목록을 JSON/XML 레코드 경로와 연결하여 재사용 가능한 변환 정의 객체를 정의합니다. 변환 정의 개체를 사용하여 하나 이상의 소스 문서를 변환할 수 있습니다.

    또한 이 개체는 TransformerDefinition 개체의 레코드 경로를 가져오는 데 사용할 수 있는 메서드를 제공합니다. 또한 정의에 유효한 TransformerRuleList가 연결되어 있는지 여부를 확인할 수 있습니다.

    Transformer API는 지정된 변환 규칙 목록을 사용하여 원하는 출력 데이터를 생성하기 위해 한 번에 하나의 데이터 엔터티씩 실제 데이터 변환을 수행합니다.

    TransformerDefinition 클래스는 범위가 지정된 서버 스크립트와 전역 서버 스크립트 모두에서 사용할 수 있습니다. 이 클래스를 사용하는 경우 sn_tfrm 네임스페이스 식별자를 사용합니다. 또한 인스턴스에서 이 API를 사용하려면 먼저 변환 서비스 플러그인(com.glide.transform)을 활성화해야 합니다.

    TransformerDefinition - TransformerDefinition(객체, transformerRuleList, 문자열, recordPath)

    TransformerDefinition 개체를 인스턴스화합니다.

    표 1. 매개변수
    이름 유형 설명
    트랜스포머 규칙 목록 객체 이 변환기 정의와 연결할 TransformerRuleList입니다.
    기록 경로 문자열

    옵션입니다. 소스 문서에서 기록으로 구문 분석할 노드의 컨테이너(상위)를 식별하는 경로(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 객체를 인스턴스화합니다.

    표 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());
      }
    }