RTETransformer - Inclus dans le champ d’application
L’API RTETransformer fournit une méthode permettant de transformer et de stocker un tableau de messages en un enregistrement dans l’instance associée ServiceNow en fonction d’une définition ETL (extraction, transformation et chargement) fournie.
Par exemple, utilisez cette API lorsque vous disposez de charges utiles JSON contenant des informations utilisateur et que vous souhaitez transformer ces informations en table sys_user à l’aide du moteur de transformation robuste (RTE).
Utilisez l’espace de noms sn_impex lors de l’accès à cette API.
Pour plus d’informations, consultez Définir les opérations du moteur de transformation robuste.
RTETransformer - RTETransformer(String transformDefinitionId, Boolean verboseLogging, String source, Number batchSize)
Instancie un objet RTETransformer.
| Nom | Type | Description |
|---|---|---|
| transformDefinitionId (en anglais seulement) | Chaîne | Sys_id de la définition d’extraction, de transformation et de chargement (ETL) à utiliser pour la transformation. Situé dans la table Définitions ETL [sys_rte_eb_etl_definition]. Pour plus d’informations sur la création d’un ETL, consultez Créer des définitions de charge de transformation d’extraction (ETL). |
| Connexion détaillée | Booléen | Marqueur indiquant s’il faut activer la journalisation détaillée et la création de lignes de jeu d’importation pour le débogage. Valeurs valides :
|
| source | Chaîne | Champ Nom de l’enregistrement du jeu d’importation. |
| batchSize | Numéro | Nombre de messages à traiter en une fois (lot). Par exemple, si une charge utile comporte 10 messages et que cette valeur est définie sur 2, la méthode exécute cinq tâches par lots distinctes pour traiter tous les messages de la charge utile. |
L’exemple de code suivant montre comment instancier un objet RTETransformer pour la source testSourceRecord qui a une taille de lot 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(message du tableau)
Transforme et stocke un tableau de messages en enregistrement dans l’instance associée ServiceNow en fonction d’une définition d’extraction, de transformation et de chargement (ETL) fournie.
Par exemple, si vous souhaitez transformer les informations utilisateur en enregistrement sys_user, vous pouvez créer un tableau de messages avec un seul message et le transmettre à cette méthode de transformation.
| Nom | Type | Description |
|---|---|---|
| message | Tableau d'objets | Objets JSON Stringified représentant les enregistrements à transformer en fonction de la définition ETL. Par exemple, si vous souhaitez transformer un utilisateur unique avec les données actives, l’adresse e-mail, le prénom et le nom de famille en table sys_user, le message ressemblera à ceci :
Remarque : Les noms de champs doivent correspondre au champ/chemin d’accès des champs d’entité source. |
| Nom | Description |
|---|---|
| données | Données des enregistrements transformés, organisées par nom de table. Les données d’enregistrement renvoyées correspondent aux champs mappés spécifiés dans la définition ETL. Type de données : objet |
| data.tableName | Détails de la table contenant les enregistrements. Type de données : tableau d’objets
Par exemple : |
| data.tableName.sys_id | Sys_id de l’enregistrement dans la table. Type de données : chaîne |
| data.tableName.<other_ETL_info> | Champs supplémentaires qui ont été spécifiés dans l’ETL réussi. Type de données : n’importe lequel |
| message | Si une erreur se produit lors de la transformation de l’enregistrement spécifié, un message décrivant l’erreur. Null si la transformation réussit. Type de données : chaîne |
| sourceRecordSysId | Sys_id de l’enregistrement de la table de jeux d’importation. Le nom de la table de jeux d’importation est Récepteur d’événements JSON [imp_json_event_sink]. Type de données : chaîne |
| statut | État de la transformation, par exemple Traité ou Erreur. Type de données : chaîne |
L’exemple de code suivant montre comment transformer et stocker un enregistrement dans la table Utilisateur [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;
}
}
}
Résultats:
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