HistoryWalker : étendu, global

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 19 minutes de lecture
  • L’API HistoryWalker utilise les tables d’audit/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 permet de renvoyer un GlideRecord à un nombre de mises à jour précédent (GlideRecord démarré) 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 :

    • Demandez à l’API HistoryWalker d’utiliser une implémentation de marche d’historique spécifique pour récupérer les données d’audit.
    • Parcourez la version historique d’un enregistrement Glide.
    • Appliquez les données d’historique/d’audit appropriées pour remettre un GlideRecord existant dans l’état où il se trouvait dans un nombre de mises à jour spécifique.
    • Désactivez le contrôle d’accès au niveau des lignes.
    • Désactiver le contrôle d’accès au niveau du champ.
    • Désactiver la récupération et le traitement des données « changements ».
    • Activez les champs journal.
    • Activer les variables.

    L’API HistoryWalker fournit quatre façons de récupérer les données d’audit :

    1. HISTOIRE - Marcheur d’histoire

      S’il n’est pas disponible ou pas à jour, crée un enregistrement de l’ensemble d’historiques [sys_history_set] pour l’enregistrement Glide que vous avez transmis 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 Mettre à jour est faiblement 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 écrasées, ce qui rend ce compte peu fiable.
    2. AUDIT : marcheur d’audit

      Interroge la table sys_audit pour 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 au cours de la vie de l’enregistrement.

      Les enregistrements sont triés par ordre croissant selon le champ Nombre de mises à jour [record_checkpoint] plutôt que par ordre chronologique. Le champ record_checkpoint est faiblement 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 pour décider d’utiliser ou non la méthode de récupération AUDIT :
      • Taille de la table sys_audit. La table sys_audit peut devenir très volumineuse, car les changements de tous les champs dans 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 prendre en compte ces informations manquantes.
      En tant que tel, l’exécution de l’API HistoryWalker avec AUDIT n’est pas aussi performante que HISTORY ou CHECKPOINT.
    3. 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 du paramètre 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 remontée de point de contrôle utilise la table sys_audit pour obtenir les 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 parcourir les données d’historique, mais seulement jusqu’à un certain point. Lorsque le nombre total de mises à jour de champ atteint un certain niveau, environ 10 000, la génération de la table sys_history_set peut dépasser le délai d’expiration de la transaction utilisateur. Si le délai d’expiration est dépassé, les résultats globaux sont moins bons en termes de performances que si vous l’exécutez sur la table sys_audit contenant toutes les mises à jour de table. Le checkpoint walker utilise le com.glide.history_walker.max_history_count pour déterminer le jeu 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 de l’enregistrement [internal_checkpoint]. Comme le champ internal_checkpoint est un horodatage, les enregistrements sont classés dans l’ordre chronologique. De plus, le champ internal_checkpoint n’est pas associé au 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 entraînés par des entrées task.sys_mod_count et liés à sys_audit.record_checkpoint et sys_history_line.update. Le remontée de point de contrôle utilise respectivement les champs sys_audit.internal_checkpoint et sys_history_line.internal_checkpoint.

      Le point de contrôle interne d’enregistrement résout ces deux problèmes, faisant du point de contrôle le moyen le plus fiable de récupérer les données d’historique d’audit.

    4. OFFLINE : remontée pas à pas de l’historique hors ligne

      Fournit la fonctionnalité d’historique hors ligne utilisée par des applications telles que l’application hors connexion mobile Field Service. Lorsqu’une extension de table de tâches comporte des champs avec l’attribut de dictionnaire offline_timestamp_field défini, le remontée pas à pas de l’historique hors ligne s’exécute indépendamment de toute propriété ou instruction explicite d’utiliser un autre pas à pas. Le remontée pas à pas d’historique hors ligne utilise les tables sys_history_line et sys_history_set, qui contiennent des données d’historique classées exprès par date et heure, pour prendre en charge les mises à jour hors connexion. Seul l’historique hors ligne 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 ligne.

    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 « POINT DE CONTRÔLE ».

    Lorsque vous instanciez l’API HistoryWalker comme suit, la propriété détermine l’implémentation com.snc.walker.default de remontée pas à pas d’enregistrement que l’API utilise.
    var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>);
    Vous pouvez également transmettre le type de remontée pas à pas à utiliser lors de l’instanciation de l’API. Il est conseillé de toujours inclure l’implémentation pas à pas souhaitée lors de l’instanciation de cette API.
    var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>, <walker>);
    tels que :
    var hw = new sn_hw.HistoryWalker('incident', '1c741bd70b2322007518478d83673af3', 'CHECKPOINT');

    Pour utiliser cette classe dans les applications incluses dans le périmètre et globales, 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 de l’enregistrement Glide spécifié.

    Tableau 1. Paramètres
    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 remonteur d’historique à utiliser pour récupérer les données historiques de l’enregistrement spécifié.
    Valeurs valides :
    • AUDIT
    • POINT DE CONTRÔLE
    • HISTOIRE
    • HORS LIGNE

    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 à GlideRecord à l’aide de la remontée pas à pas 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(Chaîne tableName, String sysId, booléen useAudit)

    Recherche l’enregistrement de base de données en fonction des paramètres, à l’aide des jeux d’historique ou des données d’audit pour récupérer les données historiques, en fonction du troisième paramètre.

    Tableau 2. Paramètres
    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.
    utiliser l’audit Booléen Marqueur indiquant s’il faut utiliser les données d’audit pour récupérer la date historique.
    Valeurs valides :
    • vrai : utiliser les données d’audit pour récupérer la date historique.
    • faux : utiliser l’historique défini pour récupérer la date historique.

    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 de glissement parcouru actuel.

    Tableau 3. Paramètres
    Nom Type Description
    Néant
    Tableau 4. Renvoie
    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()

    Obtient l’enregistrement rempli avec les données d’historique/d’audit après avoir trouvé un numéro de mise à jour.

    Tableau 5. Paramètres
    Nom Type Description
    Néant
    Tableau 6. Renvoie
    Type Description
    GlideRecord Le GlideRecord a marché.

    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 rempli avec l’historique/les données d’audit après avoir trouvé un numéro de mise à jour.

    Remarque :
    La méthode getWalkedRecord() peut modifier le walkedRecord obtenu après avoir accédé à un autre numéro de mise à jour. La méthode getWalkedRecordCopy() obtient un clone de l’enregistrement parcouru pour empêcher cela.
    Tableau 7. Paramètres
    Nom Type Description
    Néant
    Tableau 8. Renvoie
    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.

    Tableau 9. Paramètres
    Nom Type Description
    Néant
    Tableau 10. Renvoie
    Type Description
    Booléen Marqueur indiquant si la sécurité au niveau du champ est activée.
    Valeurs valides :
    • vrai : la sécurité au niveau du champ est activée.
    • false : la sécurité au niveau du champ n’est pas activée.

    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.

    Tableau 11. Paramètres
    Nom Type Description
    Néant
    Tableau 12. Renvoie
    Type Description
    Booléen Marqueur indiquant si la sécurité au niveau des enregistrements est activée.
    Valeurs valides :
    • vrai : la sécurité au niveau de l’enregistrement est activée.
    • faux : la sécurité au niveau des enregistrements n’est pas activée.

    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.

    Tableau 13. Paramètres
    Nom Type Description
    Néant
    Tableau 14. Renvoie
    Type Description
    Booléen Marqueur indiquant si la prise en charge du changement est activée.
    Valeurs valides :
    • vrai : la prise en charge des changements est activée.
    • faux : la prise en charge des changements n’est pas activée.

    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 de journal sont renseignés à partir des valeurs historiques.

    Tableau 15. Paramètres
    Nom Type Description
    Néant
    Tableau 16. Renvoie
    Type Description
    Booléen Marqueur indiquant si les champs de journal sont renseignés.
    Valeurs valides :
    • vrai : les champs journal sont renseignés.
    • faux : les champs journal ne sont pas renseignés.

    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.

    Tableau 17. Paramètres
    Nom Type Description
    Néant
    Tableau 18. Renvoie
    Type Description
    Booléen Marqueur indiquant si des valeurs sont définies pour les variables enregistrées dans l’historique.
    Valeurs valides :
    • vrai : les valeurs sont définies.
    • faux : les valeurs ne sont pas définies.

    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 renseigner les champs de l’enregistrement parcouru auxquels l’utilisateur de l’API n’a pas accès.

    Tableau 19. Paramètres
    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 :
    • true : activer la sécurité au niveau du champ.
    • faux : désactiver la sécurité au niveau du champ.

    Par défaut : true

    Tableau 20. Renvoie
    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.

    Tableau 21. Paramètres
    Nom Type Description
    recordLevelSecurity Booléen Marqueur indiquant comment définir la sécurité d’accès en lecture au niveau des enregistrements.
    Valeurs valides :
    • vrai : activer la sécurité au niveau des enregistrements.
    • faux : désactiver la sécurité au niveau des enregistrements.

    Par défaut : true

    Tableau 22. Renvoie
    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 avecChanges)

    Définit la prise en charge des données « changements » pour chaque élément d’une méthode qui parcourt l’enregistrement d’une mise à jour à une autre.

    Tableau 23. Paramètres
    Nom Type Description
    withChanges Booléen Marqueur indiquant si les données de changements sont prises en charge pour chaque élément.
    Valeurs valides :
    • vrai : les données de changement sont prises en charge pour chaque élément.
    • faux : les données de changement ne sont pas prises en charge pour chaque élément.

    Par défaut : true

    Tableau 24. Renvoie
    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 prise en charge des données de changements. Cet exemple s’exécute dans les environnements inclus dans le périmètre 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);
    
    while (hw.walkForward()) {
      var oldPriority = hw.getWalkedRecord().priority;
      gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
    }

    HistoryWalker : setWithJournalFields (booléen withJournalFields)

    Spécifie si les champs de type de journal sont renseignés à partir des valeurs historiques.

    Tableau 25. Paramètres
    Nom Type Description
    avecJournalFields Booléen Marqueur indiquant s’il faut inclure des champs de type journal.
    Valeurs valides :
    • true : inclure les champs de type journal.
    • faux : n’incluez pas les champs de type journal.

    Valeur par défaut : false

    Tableau 26. Renvoie
    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.

    Tableau 27. Paramètres
    Nom Type Description
    avecVariables Booléen Marqueur indiquant si les variables sont renseignées à partir des valeurs historiques.
    Valeurs valides :
    • vrai : les variables sont renseignées.
    • faux : les variables ne sont pas renseignées.

    Valeur par défaut : false

    Tableau 28. Renvoie
    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 obtenir un GlideRecord parcouru à l’état alors qu’il était d’un numéro de mise à jour en arrière. Si le nombre de mises à jour précédent est manquant dans l’historique/les données d’audit, il accédera au nombre de mises à jour disponibles précédent.

    Tableau 29. Paramètres
    Nom Type Description
    Néant
    Tableau 30. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il était possible d’accéder au numéro de mise à jour spécifié.
    Valeurs valides :
    • vrai : peut marcher jusqu’au numéro de mise à jour spécifié.
    • faux : impossible d’accéder au numéro de mise à jour spécifié.

      Raisons possibles : J’ai déjà marché jusqu’au numéro de mise à jour 0.

    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 obtenir un GlideRecord parcouru à l’état lorsqu’il était d’un numéro de mise à jour en avant. Si le nombre de mises à jour suivant est manquant dans l’historique/les données d’audit, il passe au prochain nombre de mises à jour disponible.

    Tableau 31. Paramètres
    Nom Type Description
    Néant
    Tableau 32. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il était possible d’accéder au numéro de mise à jour spécifié.
    Valeurs valides :
    • vrai : peut marcher jusqu’au numéro de mise à jour spécifié.
    • faux : impossible d’accéder au numéro de mise à jour spécifié.

      Raisons possibles : Déjà parcouru jusqu’au nombre de mises à jour GlideRecord.

    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 atteint un numéro de mise à jour pour récupérer le GlideRecord « parcouru ».

    Remarque :
    Cette méthode n’est pas prise en charge par l’implémentation de point de contrôle pas à pas. Appelez la méthode lors de l’utilisation HistoryWalker : walkTo(point de contrôle de chaîne) du checkpoint walker.
    Tableau 33. Paramètres
    Nom Type Description
    updateCount Entier Mettez à jour le numéro vers lequel accéder.
    Tableau 34. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il était possible d’accéder au numéro de mise à jour spécifié.
    Valeurs valides :
    • vrai : peut marcher jusqu’au numéro de mise à jour spécifié.
    • faux : impossible d’accéder au numéro de mise à jour spécifié.

      Raisons possibles : la mise à jour demandée est supérieure au nombre de mises à jour de GlideRecord ou il n’existe aucune donnée d’historique/d’audit pour le numéro de mise à jour demandé.

    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 parcouru jusqu’au point de contrôle interne d’un enregistrement pour récupérer le GlideRecord « parcouru ».

    Remarque :
    Cette méthode n’est prise en charge que par l’implémentation de point de contrôle.
    Tableau 35. Paramètres
    Nom Type Description
    Point de contrôle Chaîne Point de contrôle interne de l’enregistrement à parcourir. Vous pouvez trouver cette valeur dans le champ internal_checkpoint de la table Audit système [sys_audit] ou Historique [sys_history_line].
    Tableau 36. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il était possible de se rendre à pied au point de contrôle interne de l’enregistrement spécifié.
    Valeurs possibles :
    • vrai : peut marcher jusqu’au point de contrôle interne de l’enregistrement spécifié.
    • faux : impossible de se rendre au point de contrôle interne de l’enregistrement spécifié.

      Raisons possibles : Le point de contrôle interne n’existe pas.

    L’exemple de code suivant montre comment appeler cette méthode pour parcourir les modifications apportées à 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