RTETransformer – Scoped
Die RTETransformer- API bietet eine Methode zum Transformieren und Speichern eines Arrays von Nachrichten in einen Datensatz in der zugeordneten Instanz ServiceNow basierend auf einer bereitgestellten ETL-Definition (Extrahieren, Transformieren und Laden).
Verwenden Sie diese API beispielsweise, wenn Sie über JSON-Nutzlasten verfügen, die Benutzerinformationen enthalten, und diese Informationen mit der robusten Transformations-Engine (RTE) in die Tabelle „sys_user“ umwandeln möchten.
Verwenden Sie beim Zugriff auf diese API den Namespace sn_impex.
Weitere Informationen finden Sie unter Vorgänge der robusten Transformations-Engine definieren.
RTETransformer – RTETransformer(String transformDefinitionId, Boolean verboseLogging, String source, NumberbatchSize)
Instantiiert ein RTETransformer-Objekt.
| Name | Typ | Beschreibung |
|---|---|---|
| transformDefinitionId | Zeichenfolge | Sys_id der ETL-Definition (Extrahieren, Transformieren und Laden), die für die Transformation verwendet werden soll. Befindet sich in der Tabelle „ETL-Definitionen“ [sys_rte_eb_etl_definition]. Weitere Informationen zum Erstellen einer ETL finden Sie unter ETL-Definitionen (Extract Transform Load) erstellen. |
| verboseLogging | Boolean | Kennzeichnung, die angibt, ob die ausführliche Protokollierung und die Erstellung von Import Set-Zeilen für das Debugging aktiviert werden soll. Gültige Werte:
|
| Quelle | Zeichenfolge | Namensfeld des Importsatz-Datensatzes. |
| batchSize | Nummer | Anzahl der gleichzeitig zu verarbeitenden Nachrichten (Batch). Beispiel: Wenn eine Nutzlast 10 Nachrichten enthält 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 Batch-Größ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 message)
Transformiert und speichert ein Array von Nachrichten in einen 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Nachricht | 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 Benutzer mit den Daten „aktiv“, „E-Mail“, „Vorname“ und „Nachname“ in die Tabelle „sys_user“ umwandeln möchten, sieht die Nachricht ähnlich aus:
Hinweis: Die Feldnamen müssen mit dem Feld/Pfad der Quellentitätsfelder übereinstimmen. |
| Name | Beschreibung |
|---|---|
| Daten | Daten für die transformierten Datensätze, geordnet nach Tabellenname. Die zurückgegebenen Datensatzdaten entsprechen den zugeordneten Feldern, die in der ETL-Definition angegeben sind. Datentyp: Objekt |
| data.tableName | Details der Tabelle, die die Datensätze enthält. Datentyp: Array von Objekten
Beispiel: |
| data.tabellenname.sys_id | Sys_id des Datensatzes in der Tabelle. Datentyp: Zeichenfolge |
| data.tableName.<other_ETL_info> | Zusätzliche Felder, die in der übergebenen ETL angegeben wurden. Datentyp: Beliebig |
| Nachricht | Wenn beim Transformieren des angegebenen Datensatzes ein Fehler auftritt, eine Meldung, die den Fehler beschreibt. NULL, wenn die Transformation erfolgreich ist. Datentyp: Zeichenfolge |
| sourceRecordSysId | Sys_id des Import Set-Tabellendatensatzes. Der Name der Import Set-Tabelle 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 Benutzertabelle [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