HistoryWalker - Champ d’application, global
L’API HistoryWalker utilise les tables d’audit/d’historique pour générer une version historique d’un enregistrement existant.
Il prend en charge la possibilité de renvoyer un gliderecord à un nombre de mises à jour précédent (gliderecord parcouru) avec les GlideElements appropriés renseignés. Une fois le gliderecord parcouru récupéré, l’API fournit la possibilité d’avancer et de reculer les numéros de mise à jour en naviguant dans ses mises à jour historiques.
d’espace de noms sn_hw. Le module d’extension History Walker (com.glide.history_walker), qui est activé par défaut, est nécessaire pour accéder à l’API HistoryWalker .- Utilisation de l’ensemble d’historiques : une entrée d’ensemble d’historiques est créée (si elle n’est pas disponible ou n’est pas à jour) à partir des données de la table Audit système [sys_audit] pour l’enregistrement que vous allez parcourir. La table Ensemble d’historiques contient des enregistrements (lignes d’historique) avec les changements réels apportés aux valeurs de champ qui se sont produits. Les méthodes de l’API HistoryWalker récupèrent les données de l’historique à partir des lignes d’historique générées, au lieu d’interroger la table sys_audit.
- Utilisation de la table Audit système : dans ce cas, l’API HistoryWalker extrait les données directement en interrogeant la table sys_audit.
Par défaut, il remplit les données pour prendre en charge les méthodes changes(), changesFrom() et changesTo() dans l’enregistrement parcouru, et fournit une sécurité au niveau de l’enregistrement et du champ. En outre, les champs journal et les variables peuvent également être renseignés dans le GlideRecord parcouru lors de la parcourement par les mises à jour.
Cette API vous permet d’effectuer les actions suivantes :
- Appliquez les données d’historique/d’audit appropriées pour obtenir un gliderecord existant à l’état qu’il était dans un nombre de mises à jour spécifique.
- Demandez à l’API HistoryWalker d’utiliser sys_audit table au lieu de tables sys_history_set/sys_history_line pour récupérer ses données.
- Désactivez le contrôle d’accès au niveau des lignes.
- Désactivez le contrôle d’accès au niveau du champ.
- Désactivez la récupération et le traitement des données de « changement ».
- Activez les champs journaux.
- Activez les variables.
HistoryWalker : HistoryWalker(String tableName, String sysId)
Récupère l’enregistrement de base de données en fonction des paramètres, en utilisant les jeux d’historiques pour récupérer les données historiques.
| Nom | Type | Description |
|---|---|---|
| tableName | Chaîne | Nom de la table contenant l’enregistrement à récupérer. |
| sydId (ID système) | Chaîne | sys_id de l’enregistrement à récupérer. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
if (hw.walkTo(3)) {
var oldPriority = hw.getWalkedRecord().priority;
gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
} else
gs.info('Incident does not have update number 3');
Sortie :
Incident priority in update number 3 was 4
HistoryWalker - HistoryWalker(String tableName, String sysId, Boolean useAudit)
Récupère l’enregistrement de la base de données en fonction des paramètres, en utilisant les jeux d’historique ou les données d’audit pour récupérer les données historiques, selon le troisième paramètre.
| Nom | Type | Description |
|---|---|---|
| tableName | Chaîne | Nom de la table contenant l’enregistrement à récupérer. |
| sydId (ID système) | Chaîne | sys_id de l’enregistrement à récupérer. |
| useAudit | Booléen |
|
Exemple
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue(), true);
if (hw.walkTo(3)) {
var oldPriority = hw.getWalkedRecord().priority;
gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
} else
gs.info('Incident does not have update number 3');
Sortie :
Incident priority in update number 3 was 4
HistoryWalker : getUpdateNumber()
Obtient le numéro de mise à jour de l’enregistrement Glide parcouru actuel.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| int | Numéro de la mise à jour actuelle ou, -1 si l’enregistrement est introuvable |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.walkTo(3);
gs.info('Update number: ' + hw.getUpdateNumber());
Sortie :
Update number: 3
HistoryWalker - getWalkedRecord()
Obtient l’enregistrement rempli avec les données d’historique/d’audit après avoir accédé à un numéro de mise à jour.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| GlideRecord | Le GlideRecord a marché. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.walkTo(0);
var walkedRecord = hw.getWalkedRecord();
gs.info('Priority in update number 0: ' + walkedRecord.priority);
hw.walkTo(1);
walkedRecord = hw.getWalkedRecord();
gs.info('Short description in update number 1: ' + walkedRecord.short_description);
Sortie :
Priority in update number 0: 4
Short description in update number 1: My monitor has stopped working
HistoryWalker : getWalkedRecordCopy()
Renvoie une copie de l’enregistrement rempli avec les données d’historique/d’audit après avoir accédé à un numéro de mise à jour.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| GlideRecord | Une copie du GlideRecord parcouru. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var walkedRecord = [];
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.walkTo(0);
walkedRecord[0] = hw.getWalkedRecordCopy();
hw.walkTo(1);
walkedRecord[1] = hw.getWalkedRecordCopy();
gs.info('Priority in update number 0: ' + walkedRecord[0].priority);
gs.info('Short description in update number 1: ' + walkedRecord[1].short_description);
Sortie :
Priority in update number 0: 4
Short description in update number 1: My monitor has stopped working
HistoryWalker - isFieldLevelSecurity()
Spécifie si l’accès en lecture au niveau de l’enregistrement est appliqué à l’enregistrement lors de la récupération à partir de la base de données.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Renvoie la valeur true si la sécurité au niveau du champ est activée, sinon renvoie la valeur false. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
gs.info('Field level security is active: ' + hw.isFieldLevelSecurity());
Sortie :
Field level security is active: true
HistoryWalker - isRecordLevelSecurity()
Spécifie si l’accès en lecture au niveau de l’enregistrement est appliqué à l’enregistrement lors de la récupération à partir de la base de données.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Renvoie la valeur true si la sécurité au niveau de l’enregistrement est activée, sinon renvoie la valeur false. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
gs.info('Record level security is active: ' + hw.isRecordLevelSecurity());
Sortie :
Record level security is active: true
HistoryWalker - isWithChanges()
Spécifie si l’une des méthodes qui guide l’enregistrement d’une mise à jour à l’autre prend en charge les données de « changements » pour chaque élément.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Renvoie la valeur true si la prise en charge des changements est activée, sinon renvoie la valeur false. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
gs.info('Changes is active: ' + hw.isWithChanges());
Sortie :
Changes is active: true
HistoryWalker - isWithJournalFields()
Spécifie si les champs de type journal sont renseignés à partir des valeurs historiques.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Renvoie la valeur true si les champs journaux sont renseignés, sinon renvoie la valeur false. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
gs.info('Populating journal fields is active: ' + hw. isWithJournalFields());
Sortie :
Populating journal fields is active: false
HistoryWalker : isWithVariables()
Spécifie si des valeurs sont définies pour les variables enregistrées dans l’historique.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Renvoie la valeur true si des valeurs pour les variables sont incluses, sinon renvoie la valeur false. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
gs.info('Populating variables is active: ' + hw. isWithVariables());
Sortie :
Populating variables is active: false
HistoryWalker : setFieldLevelSecurity(Booléen fieldLevelSecurity)
Définit l’accès en lecture au niveau du champ sur chaque élément avant de définir la valeur historique de cet élément dans le GlideRecord. Si la sécurité au niveau des champs est activée, elle empêche l’API de renseigner les champs de l’enregistrement parcouru auxquels l’utilisateur de l’API n’a pas accès.
| Nom | Type | Description |
|---|---|---|
| fieldLevelSecurity | Booléen | Si la valeur est définie sur true, la sécurité au niveau du champ est activée. La valeur par défaut est vrai. |
| Type | Description |
|---|---|
| nul |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.setFieldLevelSecurity(false);
hw.walkTo(0);
HistoryWalker : setRecordLevelSecurity(booléen recordLevelSecurity)
Définit l’accès en lecture au niveau de l’enregistrement sur l’enregistrement lors de la récupération à partir de la base de données. La sécurité au niveau de l’enregistrement empêche l’API de récupérer l’enregistrement parcouru si l’utilisateur de l’API n’a pas accès au GlideRecord.
| Nom | Type | Description |
|---|---|---|
| recordLevelSecurity | Booléen | Si la valeur est définie sur true, la sécurité d’accès en lecture au niveau de l’enregistrement est activée. La valeur par défaut est vrai. |
| Type | Description |
|---|---|
| nul |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.setRecordLevelSecurity(false);
hw.walkTo(0);
HistoryWalker : setWithChanges(booléen withChanges)
Définit la prise en charge des données « changements » pour chaque élément d’une méthode qui guide l’enregistrement d’une mise à jour à l’autre.
| Nom | Type | Description |
|---|---|---|
| withChanges | Booléen | Marqueur indiquant si les données des changements sont prises en charge pour chaque élément. Valeurs valides :
Valeur par défaut : true |
| Type | Description |
|---|---|
| nul |
Cet exemple de code montre comment appeler cette méthode avec la prise en charge des données Changes. Cet exemple doit être exécuté dans le champ d’application global.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.walkTo(0);
do {
printChangedFields(hw);
} while (hw.walkForward());
function printChangedFields(hw) {
var walkedGr = hw.getWalkedRecord();
var fields = GlideScriptRecordUtil.get(walkedGr).getChangedFieldNames();
gs.info("Fields changed at update " + hw.getUpdateNumber() + " were:");
for (var j = 0; j < fields.size(); j++)
gs.info(" " + fields.get(j));
gs.info("");
}
Cet exemple de code montre comment appeler cette méthode sans la prise en charge des données Changes. Cet exemple s’exécute à la fois dans les environnements inclus dans le champ d’application et dans les environnements globaux.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.setWithChanges(false);
hw.walkTo(0);
do {
var oldPriority = hw.getWalkedRecord().priority;
gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
} while (hw.walkForward());
HistoryWalker - setWithJournalFields(booléen withJournalFields)
Spécifie si les champs de type journal sont renseignés à partir des valeurs historiques.
| Nom | Type | Description |
|---|---|---|
| withJournalFields (Champs de journal) | Booléen | Si la valeur est définie sur vrai, incluez les champs de type journal. La valeur par défaut est false. |
| Type | Description |
|---|---|
| nul |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.setWithJournalFields(true);
if (hw.walkTo(0)) {
var workNotes = hw.getWalkedRecord().work_notes;
gs.info('Work Notes in update number ' + hw.getUpdateNumber() + ' was ' + workNotes);
}
HistoryWalker : setWithVariables(Booléen avecVariables)
Spécifie si les variables sont renseignées à partir des valeurs historiques.
| Nom | Type | Description |
|---|---|---|
| withVariables | Booléen | Si la valeur est définie sur true, les valeurs sont renseignées pour les variables. La valeur par défaut est false. |
| Type | Description |
|---|---|
| nul |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.setWithVariables(true);
hw.walkTo(0);
if (hw.walkTo(0)) {
var varUrgency = hw.getWalkedRecord().variables.urgency;
gs.info('Variable Urgency in update number ' + hw.getUpdateNumber() + ' was ' + varUrgency);
}
HistoryWalker - marcherBackward()
Applique les données d’historique/d’audit appropriées pour remettre un GlideRecord parcourable à l’état lorsqu’il était un numéro de mise à jour en arrière. Si le nombre de mises à jour précédent est manquant dans les données d’historique/d’audit, le nombre de mises à jour disponibles précédent est rétabli.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Renvoie la valeur true s’il était possible de marcher jusqu’au numéro de mise à jour spécifié. Sinon, renvoie false, par exemple si vous avez déjà marché jusqu’au numéro de mise à jour 0. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.walkTo(incGr.sys_mod_count);
do {
var oldPriority = hw.getWalkedRecord().priority;
gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
} while (hw.walkBackward())
Sortie :
Incident priority in update number 5 was 2
Incident priority in update number 4 was 4
Incident priority in update number 3 was 4
Incident priority in update number 2 was 4
Incident priority in update number 1 was 4
Incident priority in update number 0 was 4
HistoryWalker - walkForward()
Applique les données d’historique/d’audit appropriées pour remettre un GlideRecord marché à l’état lorsqu’il avançait d’un numéro de mise à jour. Si le nombre de mises à jour suivant est manquant dans les données d’historique/d’audit, il passera au prochain nombre de mises à jour disponibles.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Renvoie la valeur true s’il était possible de marcher jusqu’au numéro de mise à jour spécifié. Sinon, renvoie la valeur false, par exemple si vous avez déjà atteint le nombre de mises à jour GlideRecord. |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.walkTo(0);
do {
var oldPriority = hw.getWalkedRecord().priority;
gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
} while (hw.walkForward())
Sortie :
Incident priority in update number 0 was 4
Incident priority in update number 1 was 4
Incident priority in update number 2 was 4
Incident priority in update number 3 was 4
Incident priority in update number 4 was 4
Incident priority in update number 5 was 2
HistoryWalker : walkTo(int updateCount)
Applique les données d’historique/d’audit appropriées pour obtenir un GlideRecord à l’état qu’il était dans un nombre de mises à jour spécifique. Utilisez getWalkedRecord() ou getWalkedRecordCopy() après avoir marché jusqu’à un numéro de mise à jour pour récupérer le GlideRecord « parcouru ».
| Nom | Type | Description |
|---|---|---|
| updateCount | Entier | Le numéro de mise à jour vers lequel marcher. |
| Type | Description |
|---|---|
| Booléen | true s’il était possible d’accéder au numéro de mise à jour spécifié, false dans le cas contraire, par exemple si la mise à jour demandée est supérieure au nombre de mises à jour du GlideRecord ou s’il n’existe aucune donnée d’historique/d’audit du numéro de mise à jour demandé |
Exemple :
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
if (hw.walkTo(3)) {
var oldPriority = hw.getWalkedRecord().priority;
gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
} else
gs.info('Incident does not have update number 3');
Sortie :
Incident priority in update number 3 was 4