HistoryWalker - Étendu, Global

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 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 pour l’enregistrement Glide spécifié.

    Cette API permet 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 :

    • Demandez à l’API HistoryWalker d’utiliser une implémentation History Walker 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 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ésactiver la récupération et le traitement des données de type « 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 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 de 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 ordre croissant de champ Mettre à jour [update] plutôt que par ordre chronologique. Le champ Mise à 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 dé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 en fonction du 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 très volumineuse, car les changements de tous les champs dans tous les enregistrements sont conservés dans cette table.
      • Absence possible d’enregistrement de mise à jour zéro 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 du 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. En cas de dépassement du délai d’expiration, les performances globales sont moins bonnes que l’exécution sur la table sys_audit contenant toutes les mises à jour de tables. 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 en fonction du champ Point de contrôle interne de l’enregistrement [internal_checkpoint]. Comme le champ internal_checkpoint est un horodatage, les enregistrements sont classés par 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 piloté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, ce qui fait du point de contrôle le moyen le plus fiable de récupérer les données de l’historique des audits.

    4. OFFLINE : marcheur d’historique hors ligne

      Fournit la fonctionnalité d’historique hors connexion utilisée par des applications telles que l’application hors connexion Field Service Mobile Lorsqu’une extension de table de tâches a des champs avec l’attribut de dictionnaire offline_timestamp_field défini, le pas à pas d’historique hors connexion s’exécute indépendamment de toute propriété ou instruction explicite d’utiliser un autre pas à pas. Le remontée d’historique hors connexion utilise les tables sys_history_line et sys_history_set, qui contiennent des données d’historique classées à dessein par date et heure, pour prendre en charge les mises à jour hors connexion. Seul le marcheur d’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 parcours 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 instancierez l’API HistoryWalker comme suit, la propriété détermine l’implémentation d’enregistrement com.snc.walker.default pas à pas utilisée par l’API.
    var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>);
    Vous pouvez également transmettre le type de pas à pas d’enregistrement à 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>);
    comme:
    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 step)

    Instancie l’objet HistoryWalker et récupère les données historiques pour 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 marcheur 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.

    
    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)

    Recherche 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 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.
    useAudit 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 : utilisez 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
    Aucun
    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
    Aucun
    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 les données d’historique/d’audit après avoir atteint un numéro de mise à jour.

    Remarque :
    La méthode getWalkedRecord() peut modifier le walkedRecord obtenu après avoir été redirigé vers un autre nombre 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
    Aucun
    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
    Aucun
    Tableau 10. Renvoie
    Type Description
    Booléen Marqueur indiquant si la sécurité au niveau du champ est activée.
    Valeurs valides :
    • true : la sécurité au niveau des champs est activée.
    • false : la sécurité au niveau des champs 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
    Aucun
    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 parcourt 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
    Aucun
    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
    Aucun
    Tableau 16. Renvoie
    Type Description
    Booléen Marqueur indiquant si les champs de journal sont renseignés.
    Valeurs valides :
    • vrai : les champs de journal sont remplis.
    • faux : les champs de 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
    Aucun
    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é d’accès en lecture au niveau des champs.
    Valeurs valides :
    • true : activer la sécurité au niveau du champ.
    • false : 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 qui indique comment définir la sécurité d’accès en lecture au niveau des enregistrements.
    Valeurs valides :
    • true : activer la sécurité au niveau des enregistrements.
    • false : désactiver la sécurité au niveau de l’enregistrement.

    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 withChanges)

    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 Changes. 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 prendre en charge les données Changes. Cet exemple s’exécute dans des environnements inclus dans le périmètre et global.

    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
    withJournalFields Booléen Marqueur indiquant s’il faut inclure des champs de type journal.
    Valeurs valides :
    • true : inclure les champs de type journal.
    • false : n’incluez pas de 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
    withVariables Booléen Marqueur indiquant si les variables sont renseignées à partir des valeurs historiques.
    Valeurs valides :
    • vrai : les variables sont renseignées.
    • false : 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 lorsqu’il était d’un numéro de mise à jour en arrière. Si le nombre de mises à jour précédentes est manquant dans les données d’historique/d’audit, il accédera au nombre de mises à jour disponibles précédentes.

    Tableau 29. Paramètres
    Nom Type Description
    Aucun
    Tableau 30. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il est possible de marcher jusqu’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’atteindre le numéro de mise à jour spécifié.

      Raisons possibles : J’ai déjà marché jusqu’à la mise à jour numéro 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 avancé d’un numéro de mise à jour. Si le nombre de mises à jour suivantes est manquant dans les données d’historique/d’audit, il accédera au nombre de mises à jour disponibles suivantes.

    Tableau 31. Paramètres
    Nom Type Description
    Aucun
    Tableau 32. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il est possible de marcher jusqu’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’atteindre le numéro de mise à jour spécifié.

      Raisons possibles : J’ai déjà marché 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 remettre un GlideRecord à l’état dans lequel il se trouvait lors d’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. Appelez la méthode lors de HistoryWalker : walkTo(point de contrôle de chaîne) l’utilisation du checkpoint walker.
    Tableau 33. Paramètres
    Nom Type Description
    updateCount Entier Mettez à jour le numéro vers lequel marcher.
    Tableau 34. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il est possible de marcher jusqu’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’atteindre le numéro de mise à jour spécifié.

      Raisons possibles : la mise à jour demandée est supérieure au nombre de mises à jour du 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 remettre un GlideRecord dans 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 checkpoint walker.
    Tableau 35. Paramètres
    Nom Type Description
    point de contrôle Chaîne Point de contrôle interne de l’enregistrement jusqu’auquel se rendre à pied. 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 est possible de marcher jusqu’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 marcher jusqu’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 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