HistoryWalker : champ d’application, global

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 19 minutes de lecture
  • 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 :

    1. 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.
    2. 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.
      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 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.

    4. 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 ».

    Lorsque vous instanciez l’API HistoryWalker comme suit, la propriété détermine l’implémentation com.snc.walker.default du marcheur d’enregistrement que l’API utilise.
    var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>);
    Vous pouvez également transmettre le type de marcheur d’enregistrement à utiliser lors de l’instanciation de l’API. Il est conseillé de toujours inclure l’implémentation de 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 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é.

    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 pour 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 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.

    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 : utilisez les données d’audit pour récupérer la date historique.
    • faux : utiliser l’ensemble d’historique 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 WalkGlide 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()

    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.

    Tableau 5. Paramètres
    Nom Type Description
    Aucun
    Tableau 6. Renvoie
    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.

    Remarque :
    La méthode getWalkedRecord() peut modifier le walkedRecord obtenu après avoir parcouru 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
    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 du champ est activée.
    • faux : 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
    Aucun
    Tableau 12. Renvoie
    Type Description
    Booléen Marqueur indiquant si la sécurité au niveau de l’enregistrement est activée.
    Valeurs valides :
    • vrai : la sécurité au niveau des enregistrements 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
    Aucun
    Tableau 14. Renvoie
    Type Description
    Booléen Marqueur indiquant si la prise en charge du changement est activée.
    Valeurs valides :
    • true : la prise en charge des changements est activée.
    • false : 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 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 journaux sont renseignés.
    Valeurs valides :
    • vrai : les champs journaux sont renseignés.
    • false : les champs journaux 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 :
    • true : les valeurs sont définies.
    • false : 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 remplir les champs de l’enregistrement parcouru auquel 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 : activez la sécurité au niveau du champ.
    • false : désactivez la sécurité au niveau des champs.

    Valeur 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é de l’accès en lecture au niveau des enregistrements.
    Valeurs valides :
    • vrai : active la sécurité au niveau de l’enregistrement.
    • false : désactiver la sécurité au niveau de l’enregistrement.

    Valeur 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 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.

    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 :
    • true : les données de changement sont prises en charge pour chaque élément.
    • false : les données de changement ne sont pas prises en charge pour chaque élément.

    Valeur 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 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.

    Tableau 25. Paramètres
    Nom Type Description
    withJournalFields Booléen Marqueur indiquant s’il faut inclure les champs de type journal.
    Valeurs valides :
    • true : inclure les champs de type journal.
    • false : 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
    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 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.

    Tableau 29. Paramètres
    Nom Type Description
    Aucun
    Tableau 30. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il était possible d’accéder au numéro de mise à jour spécifié à pied.
    Valeurs valides :
    • vrai : capable de 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à 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 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.

    Tableau 31. Paramètres
    Nom Type Description
    Aucun
    Tableau 32. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il était possible d’accéder au numéro de mise à jour spécifié à pied.
    Valeurs valides :
    • vrai : capable de 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à marché vers le 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 marché jusqu’à 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 du marcheur de point de contrôle. Appelez la HistoryWalker : walkTo(point de contrôle de chaîne) méthode lorsque vous utilisez le déambulateur de point de contrôle.
    Tableau 33. Paramètres
    Nom Type Description
    updateCount Entier Mettre à jour le numéro auquel se rendre à pied.
    Tableau 34. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il était possible d’accéder au numéro de mise à jour spécifié à pied.
    Valeurs valides :
    • vrai : capable de 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 du GlideRecord ou il n’existe aucune donnée d’historique/d’audit pour le nombre de mises à 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 marché 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 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].
    Tableau 36. Renvoie
    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 :
    • true : capable de marcher jusqu’au point de contrôle interne de l’enregistrement spécifié.
    • false : impossible d’accéder 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