RTETransformer - 범위 지정
RTETransformer API는 제공된 ETL(추출, 변환 및 로드) 정의에 따라 메시지 배열을 연결된 ServiceNow 인스턴스의 레코드로 변환하고 저장하는 메서드를 제공합니다.
예를 들어 사용자 정보가 포함된 JSON 페이로드가 있고 RTE(강력한 변환 엔진)를 사용하여 해당 정보를 sys_user 테이블로 변환하려는 경우 이 API를 사용합니다.
이 API에 액세스할 때 sn_impex 네임스페이스를 사용합니다.
자세한 내용은 강력한 변환 엔진 작업 정의를 참조하세요.
RTETransformer - RTETransformer(문자열 transformDefinitionId, 부울 verboseLogging, 문자열 소스, 숫자 batchSize)
RTETransformer 개체를 인스턴스화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| transformDefinitionId | 문자열 | 변환에 사용할 ETL(추출, 변환 및 로드) 정의의 Sys_id입니다. ETL 정의 [sys_rte_eb_etl_definition] 테이블에 있습니다. ETL 작성에 대한 자세한 내용은 ETL(Extract Transform Load) 정의 작성을 참조하십시오. |
| 자세한 정보 표시 로깅 | 부울 | 디버깅을 위해 자세한 로깅 및 임포트 세트 행 작성을 사용할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
| source | 문자열 | 임포트 세트 기록의 이름 필드입니다. |
| 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 - transform(배열 메시지)
제공된 ETL(추출, 변환 및 로드) 정의에 따라 메시지 배열을 연결된 ServiceNow 인스턴스의 기록으로 변환하고 저장합니다.
예를 들어, 사용자 정보를 sys_user 레코드로 변환하려는 경우 단일 메시지로 메시지 배열을 만들어 이 변환 메서드에 전달할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 메시지 | 개체 배열 | ETL 정의에 따라 변환할 기록을 나타내는 문자열화된 JSON 객체입니다. 예를 들어 활성 데이터, 이메일, 이름 및 성이 있는 단일 사용자를 sys_user 테이블로 변환하려는 경우 메시지는 다음과 유사합니다.
주: 필드 이름은 소스 엔터티 필드의 필드/경로와 일치해야 합니다. |
| 이름 | 설명 |
|---|---|
| 데이터 | 테이블 이름별로 정리된 변환된 기록의 데이터입니다. 반환된 기록 데이터는 ETL 정의에 지정된 매핑된 필드와 일치합니다. 데이터 유형: 객체 |
| data.tableName | 기록이 포함된 테이블의 상세 정보입니다. 데이터 유형: 객체 배열
예: |
| data.tableName.sys_id | 테이블 내 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| data.tableName.<other_ETL_info> | 전달된 ETL에 지정된 추가 필드입니다. 데이터 유형: 모두 |
| 메시지 | 지정된 기록을 변환하는 동안 오류가 발생하면 오류를 설명하는 메시지입니다. 변환에 성공하면 Null입니다. 데이터 유형: 문자열 |
| sourceRecordSysId | 임포트 세트 테이블 기록의 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