RTETransformer - 범위 지정됨

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기7분
  • RTETransformer API는 제공된 ETL(추출, 변환 및 로드) 정의에 따라 메시지 배열을 연결된 ServiceNow 인스턴스의 기록으로 변환하고 저장하는 메서드를 제공합니다.

    예를 들어 사용자 정보가 포함된 JSON 페이로드가 있고 RTE(강력한 변환 엔진)를 사용하여 해당 정보를 sys_user 테이블로 변환하려는 경우 이 API를 사용할 수 있습니다.

    이 API에 액세스할 때 sn_impex 네임스페이스를 사용합니다.

    자세한 내용은 강력한 변환 엔진 작업 정의 단원을 참조하십시오.

    RTETransformer - rteTransform(String transformDefinitionId, Boolean verboseLogging, String source, Number batchSize)

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

    표 1. 매개변수
    이름 유형 설명
    transformDefinitionId 문자열 변환에 사용할 ETL(추출, 변환 및 로드) 정의의 Sys_id입니다.

    ETL 생성에 대한 자세한 내용은 ETL(추출 변환 로드) 정의 생성 섹션을 참조하세요.

    테이블: ETL 정의 [sys_rte_eb_etl_definition]

    verboseLogging 부울 자세한 로깅과 디버깅을 위한 임포트 세트 행 생성을 사용할지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 로깅 및 임포트 세트 행 생성을 활성화합니다.
    • false: 로깅 및 임포트 세트 행 생성을 활성화하지 않습니다.
    소스 문자열 임포트 세트 기록의 이름 필드입니다.
    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 - 변환(배열 메시지)

    제공된 ETL(추출, 변환 및 로드) 정의에 따라 메시지 배열을 연결된 인스턴스의 기록 ServiceNow 으로 변환하고 저장합니다.

    예를 들어, 사용자 정보를 sys_user 레코드로 변환하려는 경우 단일 메시지로 메시지 배열을 생성하여 이 변환 메서드에 전달할 수 있습니다.

    표 2. 매개변수
    이름 유형 설명
    메시지 객체 배열 ETL 정의에 따라 변환할 기록을 나타내는 Stringified JSON 객체입니다.
    예를 들어 활성 상태, 이메일, 이름 및 성 데이터가 있는 단일 사용자를 sys_user 테이블로 변환하려는 경우 메시지는 다음과 유사합니다.
    [
      {  
        "active":"true",
        "email":"example@servicenow.com",
        "first_name":"Jane",
        "last_name":"Doe" 
      }
    ]
    주:
    필드 이름은 소스 엔터티 필드의 필드/경로와 일치해야 합니다.
    표 3. 반환
    이름 설명
    데이터 테이블 이름별로 구성된 변환된 기록의 데이터입니다. 반환된 기록 데이터는 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에 지정된 추가 필드입니다.

    데이터 유형: 모두

    메시지 지정된 기록을 변환하는 동안 오류가 발생하면 오류를 설명하는 메시지가 표시됩니다. 변환에 성공하면 Null입니다.

    데이터 유형: 문자열

    소스 기록 시스템 ID 임포트 세트 테이블 기록의 Sys_id입니다. 임포트 세트 테이블 이름은 JSON 이벤트 싱크 [imp_json_event_sink]입니다.

    데이터 유형: 문자열

    상태 변환의 상태(예: 처리됨 또는 오류)입니다.

    데이터 유형: 문자열

    다음 코드 예제에서는 User [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