RTETransformer: Bereichsbezogen

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 3 Minuten Lesedauer
  • Die RTETransformer- API bietet eine Methode zum Transformieren und Speichern eines Arrays von Nachrichten in einem Datensatz in der zugehörigen Instanz ServiceNow basierend auf einer angegebenen ETL-Definition (Extrahieren, Transformieren und Laden) in einem Datensatz.

    Sie können diese API beispielsweise verwenden, wenn Sie über JSON-Nutzlast(en) verfügen, die Anwenderinformationen enthalten, und Sie möchten diese Informationen mit der Robust Transform Engine (RTE) in die Tabelle „sys_user“ umwandeln.

    Verwenden Sie den Namespace sn_impex, wenn Sie auf diese API zugreifen.

    Weitere Informationen finden Sie unter Vorgänge der robusten Transformations-Engine definieren.

    RTETransformer – rteTransform(String transformDefinitionId, Boolean verboseLogging, Zeichenfolgenquelle, Nummer BatchSize)

    Instanziiert ein RTETransformer-Objekt.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    transformDefinitionId Zeichenfolge Sys_id der ETL-Definition (Extract, Transform, and Load), die für die Transformation verwendet werden soll. Befindet sich in der Tabelle ETL-Definitionen [sys_rte_eb_etl_definition].

    Informationen zum Erstellen einer ETL-Definition finden Sie unter ETL-Definitionen (Extract Transform Load) erstellen.

    verboseLogging Boolean

    Kennzeichnung, die angibt, ob die ausführliche Protokollierung und die Erstellung von Importsatzzeilen für das Debugging aktiviert werden sollen.

    Gültige Werte:
    • „wahr“: Aktiviert die Protokollierung und die Erstellung von Importsatzzeilen.
    • „falsch“: Protokollierung und Erstellung von Importsatzzeilen nicht aktivieren.
    Quelle Zeichenfolge Namensfeld des Importsatz-Datensatzes.
    batchSize Nummer Anzahl der gleichzeitig zu verarbeitenden Nachrichten (Batch). Wenn in einer Nutzlast beispielsweise 10 Nachrichten vorhanden sind und dieser Wert auf 2 festgelegt ist, führt die Methode fünf separate Batch-Aufträge aus, um alle Nachrichten in der Nutzlast zu verarbeiten.

    Das folgende Codebeispiel zeigt, wie ein RTETransformer-Objekt für die Quelle testSourceRecord mit einer Batchgröße von 10 instanziiert wird.

    (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(Array-Nachricht)

    Transformiert und speichert ein Array von Nachrichten in einem Datensatz in der zugeordneten Instanz ServiceNow basierend auf einer angegebenen ETL-Definition (Extrahieren, Transformieren und Laden).

    Wenn Sie beispielsweise Benutzerinformationen in einen sys_user-Datensatz umwandeln möchten, können Sie ein Nachrichten-Array mit einer einzelnen Nachricht erstellen und an diese Transformationsmethode übergeben.

    Tabelle : 2. Parameter
    Name Typ Beschreibung
    message Array von Objekten Stringifizierte JSON-Objekte, die die Datensätze darstellen, die basierend auf der ETL-Definition transformiert werden sollen.
    Wenn Sie beispielsweise einen einzelnen Anwender mit den Daten „Aktiv“, „E-Mail“, „Vorname“ und „Nachname“ in die Tabelle „sys_user“ umwandeln möchten, sieht die Nachricht ähnlich aus:
    [
      {  
        "active":"true",
        "email":"example@servicenow.com",
        "first_name":"Jane",
        "last_name":"Doe" 
      }
    ]
    Hinweis:
    Die Feldnamen müssen mit dem Feld/Pfad der Quellentitätsfelder übereinstimmen.
    Tabelle : 3. Ergebnisse
    Name Beschreibung
    Daten Daten für die transformierten Datensätze, nach Tabellenname geordnet. Die zurückgegebenen Datensatzdaten entsprechen den zugeordneten Feldern, die in der ETL-Definition angegeben sind.

    Datentyp: Objekt

    "data": {
      "tableName": []
    }
    Daten.Tabellenname Details der Tabelle, die die Datensätze enthält.

    Datentyp: Array von Objekten

    "tableName": [{
      "sys_id": String,
       // Other data for a single transformed record
      }]
    }
    Beispiel:
    "sys_user": [{ 
      "sys_id":"b29e629877130110f5455d14cd5a99ad",
      "active": "true",
      "email": "example@servicenow.com",
      "first_name": "Jane",
      "last_name": "Doe"
    }]
    data.tableName.sys_id Sys_id des Datensatzes in der Tabelle.

    Datentyp: Zeichenfolge

    Daten.Tabellenname<other_ETL_info> Zusätzliche Felder, die in der übergebenen ETL-Datei angegeben wurden.

    Datentyp: Beliebig

    message Wenn bei der Transformation des angegebenen Datensatzes ein Fehler auftritt, eine Meldung, die den Fehler beschreibt. NULL, wenn die Transformation erfolgreich ist.

    Datentyp: Zeichenfolge

    sourceRecordSysId Sys_id des Importsatz-Tabellendatensatzes. Der Name der Importsatztabelle lautet JSON Event Senke [imp_json_event_sink].

    Datentyp: Zeichenfolge

    status Status der Transformation, z. B. „Verarbeitet“ oder „Fehler“.

    Datentyp: Zeichenfolge

    Das folgende Codebeispiel zeigt, wie ein Datensatz in der Tabelle „Benutzer“ [sys_user] umgewandelt und gespeichert wird.

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

    Ergebnisse:

    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