RTETransformer - Com escopo
A API RTETransformer fornece um método para transformar e armazenar uma matriz de mensagens em um registro na instância ServiceNow associada com base em uma definição de extração, transformação e carregamento (ETL) fornecida.
Por exemplo, você pode usar esta API quando tiver cargas JSON que contêm informações do usuário e quiser transformar essas informações na tabela sys_user usando o Mecanismo de transformação robusta (RTE).
Use o namespace sn_impex ao acessar esta API.
Para obter informações adicionais, consulte Definir operações robustas do Mecanismo de transformação.
RTETransformer - rteTransform(cadeia de caracteres transformDefinitionId, Booliano verboseLogging, cadeia de caracteres de origem, número batchSize)
Instancia um objeto RTETransformer.
| Nome | Tipo | Descrição |
|---|---|---|
| transformDefinitionId | Cadeia de caracteres | Sys_id da definição de extração, transformação e carregamento (ETL) a ser usada para a transformação. Localizado na tabela Definições de ETL [sys_rte_eb_etl_definition]. Para obter informações sobre como criar um ETL, consulte Criar definições de Carga de Transformação de Extração (ETL). |
| registro em log detalhado | Booliano | Sinalizador que indica se o registro em log detalhado e a criação de linhas de conjunto de importação devem ser habilitados para depuração. Valores válidos:
|
| origem | Cadeia de caracteres | Campo de nome do registro do conjunto de importação. |
| batchSize | Número | Número de mensagens a serem processadas de uma só vez (lote). Por exemplo, se houver 10 mensagens em uma carga útil e este valor estiver definido como 2, o método executará cinco trabalhos em lote separados para processar todas as mensagens na carga útil. |
O exemplo de código a seguir mostra como instanciar um objeto RTETransformer para o testSourceRecord de origem que tem um tamanho de lote de 10.
(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 (mensagem de matriz)
Transforma e armazena uma matriz de mensagens em um registro na instância ServiceNow associada com base em uma definição de extração, transformação e carregamento (ETL) fornecida.
Por exemplo, se você quiser transformar informações do usuário em um registro sys_user, poderá criar uma matriz de mensagem com uma única mensagem e passá-la para este método de transformação.
| Nome | Tipo | Descrição |
|---|---|---|
| mensagem | Matriz de objetivos | Objetos JSON em cadeia de caracteres que representam os registros a serem transformados com base na definição de ETL. Por exemplo, se você quiser transformar um único usuário com os dados ativos, e-mail, nome e sobrenome na tabela sys_user, a mensagem será semelhante a esta:
Nota: Os nomes de campo devem corresponder ao campo/caminho dos campos da entidade de origem. |
| Nome | Descrição |
|---|---|
| dados | Dados dos registros transformados, organizados por nome de tabela. Os dados de registro retornados correspondem aos campos mapeados especificados na definição de ETL. Tipo de dados: objeto |
| data.tableName | Detalhes da tabela que contém os registros. Tipo de dados: matriz de objetos
Por exemplo: |
| data.tableName.sys_id | Sys_id do registro na tabela. Tipo de dados: cadeia de caracteres |
| data.tableName.<other_ETL_info> | Campos adicionais que foram especificados no ETL aprovado. Tipo de dados: qualquer |
| mensagem | Se ocorrer um erro ao transformar o registro especificado, uma mensagem que descreve o erro. Nulo se a transformação for bem-sucedida. Tipo de dados: cadeia de caracteres |
| sourceRecordSysId | Sys_id do registro da tabela de conjunto de importação. O nome da tabela do conjunto de importação é Sink de eventos JSON [imp_json_event_sink]. Tipo de dados: cadeia de caracteres |
| status | Status da transformação, como processado ou erro. Tipo de dados: cadeia de caracteres |
O exemplo de código a seguir mostra como transformar e armazenar um registro na tabela Usuário [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;
}
}
}
Resultados:
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