RTETransformer - Com escopo

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 4 min. de leitura
  • 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.

    Tabela 1. Parâmetros
    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.

    Para obter informações sobre como criar um ETL, consulte Criar definições de Carga de Transformação de Extração (ETL).

    Tabela: definições de ETL [sys_rte_eb_etl_definition]

    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:
    • verdadeiro: habilita o registro em log e a criação de linha do conjunto de importação.
    • falso: não habilita o registro em log e a criação de linha do conjunto de importação.
    Fonte 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.

    Tabela 2. Parâmetros
    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:
    [
      {  
        "active":"true",
        "email":"example@servicenow.com",
        "first_name":"Jane",
        "last_name":"Doe" 
      }
    ]
    Nota:
    Os nomes de campo devem corresponder ao campo/caminho dos campos da entidade de origem.
    Tabela 3. Retornos
    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": []
    }
    data.tableName Detalhes da tabela que contém os registros.

    Tipo de dados: matriz de objetos

    "tableName": [{
      "sys_id": String,
       // Other data for a single transformed record
      }]
    }
    Por exemplo:
    "sys_user": [{ 
      "sys_id":"b29e629877130110f5455d14cd5a99ad",
      "active": "true",
      "email": "example@servicenow.com",
      "first_name": "Jane",
      "last_name": "Doe"
    }]
    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