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. Cette version historique contient toutes les mises à jour de tous les champs de l’enregistrement Glide spécifié.
Cette API offre la possibilité de renvoyer un GlideRecord à un nombre de mises à jour précédent (GlideRecord parcouru) avec les éléments Glide appropriés renseignés. Une fois le GlideRecord parcouru récupéré, l’API offre la possibilité d’avancer et de reculer entre les numéros de mise à jour, en naviguant dans ses mises à jour historiques.
Cette API vous permet d’effectuer les actions suivantes :
- Demander à l’API HistoryWalker d’utiliser une implémentation d’historique Walker spécifique pour récupérer les données d’audit.
- Parcourir la version historique d’un enregistrement Glide.
- Appliquez les données d’historique/d’audit appropriées pour obtenir un GlideRecord existant à l’état dans lequel il se trouvait dans un nombre de mises à jour spécifique.
- 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 « changements ».
- Activez les champs journaux.
- Activer les variables.
L’API HistoryWalker offre quatre façons de récupérer des données d’audit :
- HISTOIRE - Marcheur historique
S’il n’est pas disponible ou s’il n’est pas à jour, un enregistrement History Set [sys_history_set] est créé pour l’enregistrement Glide que vous avez réussi lors de l’instanciation de l’API HistoryWalker , à l’aide des données de la table Audit système [sys_audit]. La table sys_history_set contient le nom de la table Historique [sys_history_line] associée. La table sys_history_line contient un enregistrement pour chaque valeur de champ qui a été mise à jour dans la table parcourue. À l’aide de cette méthode de récupération, les méthodes HistoryWalker récupèrent les données d’historique à partir de la table sys_history_line générée, au lieu d’interroger directement la table sys_audit.
Les enregistrements de la table sys_history_line sont triés et regroupés par valeurs de champ Mettre à jour [update] par ordre croissant plutôt que par ordre chronologique. Le champ de mise à jour est vaguement associé au champ Mises à jour [sys_mod_count] de la table de tâches.Remarque :Les mises à jour du sys_mod_count par les clients ne sont pas synchronisées et peuvent donc être remplacées, ce qui rend ce nombre peu fiable. - AUDIT : déambulateur d’audit
Interroge la table sys_audit de l’enregistrement Glide que vous avez transmis lors de l’instanciation de l’API HistoryWalker . Chaque enregistrement de la table sys_audit contient les changements apportés aux valeurs de champ pendant la durée de vie de l’enregistrement.
Les enregistrements sont triés par ordre croissant par le champ Nombre de mises à jour [record_checkpoint] plutôt que par ordre chronologique. Le champ record_checkpoint est vaguement associé au champ Mises à jour [sys_mod_count] de la table de tâches. La corrélation un-à-un n’est pas garantie.
Éléments à prendre en compte lors de la décision d’utiliser ou non la méthode de récupération AUDIT :- Taille de la table sys_audit. La table sys_audit peut devenir assez volumineuse, car les changements apportés à tous les champs de tous les enregistrements sont conservés dans cette table.
- Absence possible d’enregistrement zéro de mise à jour en fonction du paramètre de la propriété glide.sys.audit_insertssystème. Cette propriété définit si un enregistrement d’audit est créé avec les valeurs de champ initiales lorsqu’un enregistrement est inséré pour la première fois dans une table. Dans un système de base, cette propriété est définie sur « faux », ce qui oblige l’API HistoryWalker à effectuer un traitement supplémentaire pour tenir compte de ces informations manquantes.
- CHECKPOINT - Marcheur de point de contrôle
Utilise une approche hybride pour obtenir des données historiques à partir de la table sys_history_set ou sys_audit en fonction des paramètres de la propriété com.glide.history_walker.max_history_countsystème. Si l’enregistrement à parcourir a une sys_mod_count qui dépasse la valeur définie dans cette propriété, valeur par défaut = 1 000, le marcheur du point de contrôle utilise la table sys_audit pour obtenir des données d’historique. Sinon, il utilise la table sys_history_set.
La raison de cette vérification est que la table sys_history_set offre une approche plus performante pour les données d’historique de parcours, mais uniquement jusqu’à un certain point. Lorsque le nombre total de mises à jour de champs atteint un certain niveau, environ 10 000, la génération de la table de sys_history_set peut dépasser le délai d’expiration de transaction utilisateur. Si le délai est dépassé, les performances des résultats globaux sont moins bonnes que si l’exécution sur la table sys_audit contient toutes les mises à jour de table. Le marcheur de point de contrôle utilise le com.glide.history_walker.max_history_count pour déterminer l’ensemble d’enregistrements optimal à utiliser pour obtenir les meilleures performances.
Les enregistrements sont regroupés et triés par ordre croissant selon le champ Point de contrôle interne d’enregistrement [internal_checkpoint]. Étant donné que le champ internal_checkpoint est un horodatage, les enregistrements sont classés par ordre chronologique. De plus, le champ internal_checkpoint n’a aucune association avec le champ task.sys_mod_count.
La différence la plus importante entre le marcheur de point de contrôle et les autres marcheurs est que les autres marcheurs sont couplés et pilotés par des entrées task.sys_mod_count et liés à sys_audit.record_checkpoint et sys_history_line.update. Le marcheur de point de contrôle utilise les champs sys_audit.internal_checkpoint et sys_history_line.internal_checkpoint respectivement.
Le point de contrôle interne d’enregistrement résout ces deux problèmes, ce qui fait du déambulateur de point de contrôle le moyen le plus fiable de récupérer les données de l’historique des audits.
- OFFLINE : déambulateur d’historique hors ligne
Fournit la fonctionnalité d’historique hors connexion utilisée par des applications telles que l’application Field Service mobile hors connexion. Lorsqu’une extension de table de tâches comporte des champs avec l’attribut de dictionnaire offline_timestamp_field défini, le démarcheur de l’historique hors connexion s’exécute indépendamment de toute propriété ou instruction explicite d’utilisation d’un autre démarchage. Le marcheur d’historique hors connexion utilise les tables sys_history_line et sys_history_set, qui contiennent des données d’historique délibérément classées par date et heure, pour prendre en charge les mises à jour hors connexion. Seul le marcheur de l’historique hors connexion peut donner des résultats précis pour de telles tables.
Remarque :Pour les mises à jour hors connexion, l’API HistoryWalker est lancée automatiquement et les deux seules méthodes que vous pouvez utiliser sont : walkTo(0) et walkForward(). Vous ne pouvez pas appeler d’autres méthodes HistoryWalker pour les mises à jour hors connexion.
La propriété com.snc.walker.default système définit le type de remontée d’enregistrement par défaut à effectuer lors de l’instanciation de l’API HistoryWalker . Pour la mise à niveau des clients, cette propriété est définie sur « HISTORIQUE ». Pour les nouveaux clients, cette propriété est définie sur « CHECKPOINT ».
var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>);var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>, <walker>); comme:var hw = new sn_hw.HistoryWalker('incident', '1c741bd70b2322007518478d83673af3', 'CHECKPOINT');Pour utiliser cette classe dans des applications globales et incluses dans le périmètre, utilisez l’identificateur d’espace de noms sn_hw. Le module d’extension History Walker (com.glide.history_walker) qui est activé par défaut est requis pour accéder à l’API HistoryWalker .
HistoryWalker - HistoryWalker(String tableName, String sysId, String walker)
Instancie l’objet HistoryWalker et récupère les données historiques pour l’enregistrement Glide spécifié.
| Nom | Type | Description |
|---|---|---|
| tableName | Chaîne | Nom de la table qui contient l’enregistrement à récupérer. |
| sysId | Chaîne | Sys_id de l’enregistrement dont vous souhaitez récupérer les données historiques. |
| Marcheur | Chaîne | Facultatif. Nom du marcheur d’historique à utiliser pour récupérer les données historiques pour l’enregistrement spécifié. Valeurs valides :
Par défaut : marcheur spécifié dans la propriété système com.snc.walker.default. |
L’exemple de code suivant montre comment appeler cette méthode pour parcourir les modifications apportées au GlideRecord à l’aide du marcheur de point de contrôle.
var gr_Hw = new GlideRecord('sc_req_item');
gr_Hw.get('b0d3335d49534210f877468e89703a7c');
var hw = new sn_hw.HistoryWalker(gr_Hw.getTableName(), gr_Hw.getUniqueValue(), 'CHECKPOINT');
hw.walkTo('19096afcc800000001');
printChangedFields(hw);
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++) {
var fieldName = fields.get(j) + '';
if (fieldName !== 'variables')
gs.info(walkedGr.getValue('sys_updated_on') + ' ' + fieldName + '=' + walkedGr.getValue(fieldName));
}
var variables = walkedGr.variables;
for (var variableName in variables) {
if (variables[variableName].changes())
gs.info(walkedGr.getValue('sys_updated_on') + ' ' + variableName + '=' + variables[variableName].getValue());
}
gs.info('');
}
Sortie :
Fields changed at update 3 were:
2024-07-09 08:50:21 price=1499
2024-07-09 08:50:21 state=2
2024-07-09 08:50:21 priority=2
2024-07-09 08:50:21 recurring_price=100
HistoryWalker : HistoryWalker(String tableName, String sysId, boolean useAudit)
Extrait l’enregistrement de base de données en fonction des paramètres, à l’aide des ensembles d’historique ou des données d’audit pour récupérer les données d’historique, en fonction du troisième paramètre.
| Nom | Type | Description |
|---|---|---|
| tableName | Chaîne | Nom de la table contenant l’enregistrement à récupérer. |
| sysId | Chaîne | Sys_id de l’enregistrement à récupérer. |
| useAudit | Booléen | Marqueur indiquant s’il faut utiliser les données d’audit pour récupérer la date historique. Valeurs valides :
|
L’exemple de code suivant montre comment appeler cette méthode.
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 WalkGlide actuel.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| int | Numéro de mise à jour actuel ou -1 si l’enregistrement est introuvable. |
L’exemple de code suivant montre comment appeler cette méthode.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
for(int i = 0; i < 2; i++) {
hw.walkForward();
}
gs.info('Update number: ' + hw.getUpdateNumber());
Sortie :
Update number: 3
HistoryWalker : getWalkedRecord()
Récupère 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 parcouru. |
L’exemple de code suivant montre comment appeler cette méthode.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.walkForward();
var walkedRecord = hw.getWalkedRecord();
gs.info('Priority in update number 0: ' + walkedRecord.priority);
hw.walkForward();
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 remplie 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 | Copie du GlideRecord parcouru. |
L’exemple de code suivant montre comment appeler cette méthode.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var walkedRecord = [];
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.walkForward();
walkedRecord[0] = hw.getWalkedRecordCopy();
hw.walkForward();
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 | Marqueur indiquant si la sécurité au niveau du champ est activée. Valeurs valides :
|
L’exemple de code suivant montre comment appeler cette méthode.
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 | Marqueur indiquant si la sécurité au niveau de l’enregistrement est activée. Valeurs valides :
|
L’exemple de code suivant montre comment appeler cette méthode.
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 parcourent l’enregistrement d’une mise à jour à une autre prend en charge les données « changements » pour chaque élément.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant si la prise en charge du changement est activée. Valeurs valides :
|
L’exemple de code suivant montre comment appeler cette méthode.
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 | Marqueur indiquant si les champs journaux sont renseignés. Valeurs valides :
|
L’exemple de code suivant montre comment appeler cette méthode.
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 | Marqueur indiquant si des valeurs sont définies pour les variables enregistrées dans l’historique. Valeurs valides :
|
L’exemple de code suivant montre comment appeler cette méthode.
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 du champ est activée, elle empêche l’API de remplir les champs de l’enregistrement parcouru auquel l’utilisateur de l’API n’a pas accès.
| Nom | Type | Description |
|---|---|---|
| fieldLevelSecurity | Booléen | Marqueur qui indique comment définir la sécurité de l’accès en lecture au niveau du champ. Valeurs valides :
Valeur par défaut : true |
| Type | Description |
|---|---|
| nul |
L’exemple de code suivant montre comment appeler cette méthode.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.setFieldLevelSecurity(false);
hw.walkForward();
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 | Marqueur indiquant comment définir la sécurité de l’accès en lecture au niveau des enregistrements. Valeurs valides :
Valeur par défaut : true |
| Type | Description |
|---|---|
| nul |
L’exemple de code suivant montre comment appeler cette méthode.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.setRecordLevelSecurity(false);
hw.walkForward();
HistoryWalker : setWithChanges(Booléen avecChangements)
Définit la prise en charge des données « changements » pour chaque élément pour une méthode qui parcourt l’enregistrement d’une mise à jour à une autre.
| Nom | Type | Description |
|---|---|---|
| withChanges | Booléen | Marqueur indiquant si les données de 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 de changements. Cet exemple doit être exécuté dans le périmètre global.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
while (hw.walkForward()) {
printChangedFields(hw);
}
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 de changements. Cet exemple s’exécute à la fois dans les environnements étendus et globaux.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.setWithChanges(false);
while (hw.walkForward()) {
var oldPriority = hw.getWalkedRecord().priority;
gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
}
HistoryWalker - setWithJournalFields(booléen avecJournalFields)
Spécifie si les champs de type journal sont renseignés à partir des valeurs historiques.
| Nom | Type | Description |
|---|---|---|
| withJournalFields | Booléen | Marqueur indiquant s’il faut inclure les champs de type journal. Valeurs valides :
Valeur par défaut : false |
| Type | Description |
|---|---|
| nul |
L’exemple de code suivant montre comment appeler cette méthode.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
hw.setWithJournalFields(true);
if (hw.walkForward()) {
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 | Marqueur indiquant si les variables sont renseignées à partir des valeurs historiques. Valeurs valides :
Valeur par défaut : false |
| Type | Description |
|---|---|
| nul |
L’exemple de code suivant montre comment appeler cette méthode.
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 - walkBackward()
Applique les données d’historique/d’audit appropriées pour qu’un GlideRecord parcouru atteigne l’état lorsqu’il était antérieur d’un numéro de mise à jour. Si le nombre de mises à jour précédent est manquant dans les données d’historique/d’audit, il sera redirigé vers le nombre de mises à jour disponibles précédent.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant s’il était possible d’accéder au numéro de mise à jour spécifié à pied. Valeurs valides :
|
L’exemple de code suivant montre comment appeler cette méthode.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
while (hw.walkBackward()) {
var oldPriority = hw.getWalkedRecord().priority;
gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
}
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 qu’un GlideRecord parcouru atteigne l’état lorsqu’il était avancé 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 | Marqueur indiquant s’il était possible d’accéder au numéro de mise à jour spécifié à pied. Valeurs valides :
|
L’exemple de code suivant montre comment appeler cette méthode.
var incGr = new GlideRecord('incident');
incGr.get('number', 'INC0000015');
var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
while (hw.walkForward()) {
var oldPriority = hw.getWalkedRecord().priority;
gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
}
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 dans lequel il se trouvait 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 | Mettre à jour le numéro auquel se rendre à pied. |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant s’il était possible d’accéder au numéro de mise à jour spécifié à pied. Valeurs valides :
|
L’exemple de code suivant montre comment appeler cette méthode.
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 : walkTo(point de contrôle de chaîne)
Applique les données d’historique/d’audit appropriées pour obtenir un GlideRecord à l’état dans lequel il se trouvait pour un point de contrôle interne d’enregistrement spécifique. Utilisez la méthode getWalkedRecord() ou getWalkedRecordCopy() après avoir marché jusqu’au point de contrôle interne d’un enregistrement pour récupérer le GlideRecord « parcouru ».
| Nom | Type | Description |
|---|---|---|
| point de contrôle | Chaîne | Point de contrôle interne de l’enregistrement vers lequel marcher. Vous pouvez trouver cette valeur dans le champ internal_checkpoint de la table Audit système [sys_audit] ou Historique [sys_history_line]. |
| Type | Description |
|---|---|
| Booléen | Marqueur indiquant s’il était possible de marcher jusqu’au point de contrôle interne de l’enregistrement spécifié. Valeurs possibles :
|
L’exemple de code suivant montre comment appeler cette méthode pour parcourir les modifications apportées au GlideRecord.
var gr_Hw = new GlideRecord('sc_req_item');
gr_Hw.get('b0d3335d49534210f877468e89703a7c');
var hw = new sn_hw.HistoryWalker(gr_Hw.getTableName(), gr_Hw.getUniqueValue(), 'CHECKPOINT');
hw.walkTo('19096afcc800000001');
printChangedFields(hw);
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++) {
var fieldName = fields.get(j) + '';
if (fieldName !== 'variables')
gs.info(walkedGr.getValue('sys_updated_on') + ' ' + fieldName + '=' + walkedGr.getValue(fieldName));
}
var variables = walkedGr.variables;
for (var variableName in variables) {
if (variables[variableName].changes())
gs.info(walkedGr.getValue('sys_updated_on') + ' ' + variableName + '=' + variables[variableName].getValue());
}
gs.info('');
}
Sortie :
Fields changed at update 3 were:
2024-07-09 08:50:21 price=1499
2024-07-09 08:50:21 state=2
2024-07-09 08:50:21 priority=2
2024-07-09 08:50:21 recurring_price=100