HistoryWalker - Champ d’application, global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 12 minutes de lecture
  • L’API HistoryWalker utilise les tables d’audit/d’historique pour générer une version historique d’un enregistrement existant.

    Il prend en charge la possibilité de renvoyer un gliderecord à un nombre de mises à jour précédent (gliderecord parcouru) avec les GlideElements appropriés renseignés. Une fois le gliderecord parcouru récupéré, l’API fournit la possibilité d’avancer et de reculer les numéros de mise à jour en naviguant dans ses mises à jour historiques.

    Pour utiliser cette classe dans les 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 nécessaire pour accéder à l’API HistoryWalker .
    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() (l’argument d’entrée de cette méthode ne peut être que zéro) et walkForward(). Il est impossible d’invoquer d’autres méthodes disponibles pour les mises à jour hors connexion.
    L’API HistoryWalker fournit deux façons de récupérer les données d’audit :
    • Utilisation de l’ensemble d’historiques : une entrée d’ensemble d’historiques est créée (si elle n’est pas disponible ou n’est pas à jour) à partir des données de la table Audit système [sys_audit] pour l’enregistrement que vous allez parcourir. La table Ensemble d’historiques contient des enregistrements (lignes d’historique) avec les changements réels apportés aux valeurs de champ qui se sont produits. Les méthodes de l’API HistoryWalker récupèrent les données de l’historique à partir des lignes d’historique générées, au lieu d’interroger la table sys_audit.
    • Utilisation de la table Audit système : dans ce cas, l’API HistoryWalker extrait les données directement en interrogeant la table sys_audit.

    Par défaut, il remplit les données pour prendre en charge les méthodes changes(), changesFrom() et changesTo() dans l’enregistrement parcouru, et fournit une sécurité au niveau de l’enregistrement et du champ. En outre, les champs journal et les variables peuvent également être renseignés dans le GlideRecord parcouru lors de la parcourement par les mises à jour.

    Cette API vous permet d’effectuer les actions suivantes :

    • Appliquez les données d’historique/d’audit appropriées pour obtenir un gliderecord existant à l’état qu’il était dans un nombre de mises à jour spécifique.
    • Demandez à l’API HistoryWalker d’utiliser sys_audit table au lieu de tables sys_history_set/sys_history_line pour récupérer ses données.
    • Désactivez le contrôle d’accès au niveau des lignes.
    • Désactivez le contrôle d’accès au niveau du champ.
    • Désactivez la récupération et le traitement des données de « changement ».
    • Activez les champs journaux.
    • Activez les variables.

    HistoryWalker : HistoryWalker(String tableName, String sysId)

    Récupère l’enregistrement de base de données en fonction des paramètres, en utilisant les jeux d’historiques pour récupérer les données historiques.

    Tableau 1. Paramètres
    Nom Type Description
    tableName Chaîne Nom de la table contenant l’enregistrement à récupérer.
    sydId (ID système) Chaîne sys_id de l’enregistrement à récupérer.

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    if (hw.walkTo(3)) {
        var oldPriority = hw.getWalkedRecord().priority;
        gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
    } else
        gs.info('Incident does not have update number 3');

    Sortie :

    Incident priority in update number 3 was 4

    HistoryWalker - HistoryWalker(String tableName, String sysId, Boolean useAudit)

    Récupère l’enregistrement de la base de données en fonction des paramètres, en utilisant les jeux d’historique ou les données d’audit pour récupérer les données historiques, selon le troisième paramètre.

    Tableau 2. Paramètres
    Nom Type Description
    tableName Chaîne Nom de la table contenant l’enregistrement à récupérer.
    sydId (ID système) Chaîne sys_id de l’enregistrement à récupérer.
    useAudit Booléen
    • Si la valeur est définie sur vrai, utilise les données d’audit pour récupérer la date historique.
    • Si la valeur est définie sur faux, utilise l’historique défini pour récupérer la date historique.

    Exemple

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue(), true);
    if (hw.walkTo(3)) {
        var oldPriority = hw.getWalkedRecord().priority;
        gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
    } else
        gs.info('Incident does not have update number 3');
    

    Sortie :

    Incident priority in update number 3 was 4

    HistoryWalker : getUpdateNumber()

    Obtient le numéro de mise à jour de l’enregistrement Glide parcouru actuel.

    Tableau 3. Paramètres
    Nom Type Description
    Aucun
    Tableau 4. Renvoie
    Type Description
    int Numéro de la mise à jour actuelle ou, -1 si l’enregistrement est introuvable

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.walkTo(3);
    gs.info('Update number: ' + hw.getUpdateNumber());

    Sortie :

    Update number: 3

    HistoryWalker - getWalkedRecord()

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

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

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.walkTo(0);
    var walkedRecord = hw.getWalkedRecord();
    gs.info('Priority in update number 0: ' + walkedRecord.priority);
    hw.walkTo(1);
    walkedRecord = hw.getWalkedRecord();
    gs.info('Short description in update number 1: ' + walkedRecord.short_description);

    Sortie :

     Priority in update number 0: 4
    Short description in update number 1: My monitor has stopped working

    HistoryWalker : getWalkedRecordCopy()

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

    Remarque :
    L’API getWalkedRecord() peut modifier le walkedRecord obtenu après avoir navigué vers un autre numéro de mise à jour. L’API getWalkedRecordCopy() obtient un clone sur l’enregistrement parcouru pour empêcher cela.
    Tableau 7. Paramètres
    Nom Type Description
    Aucun
    Tableau 8. Renvoie
    Type Description
    GlideRecord Une copie du GlideRecord parcouru.

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var walkedRecord = [];
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.walkTo(0);
    walkedRecord[0] = hw.getWalkedRecordCopy();
    hw.walkTo(1);
    walkedRecord[1] = hw.getWalkedRecordCopy();
    
    gs.info('Priority in update number 0: ' + walkedRecord[0].priority);
    gs.info('Short description in update number 1: ' + walkedRecord[1].short_description);
    

    Sortie :

    Priority in update number 0: 4
    Short description in update number 1: My monitor has stopped working

    HistoryWalker - isFieldLevelSecurity()

    Spécifie si l’accès en lecture au niveau de l’enregistrement est appliqué à l’enregistrement lors de la récupération à partir de la base de données.

    Tableau 9. Paramètres
    Nom Type Description
    Aucun
    Tableau 10. Renvoie
    Type Description
    Booléen Renvoie la valeur true si la sécurité au niveau du champ est activée, sinon renvoie la valeur false.

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    gs.info('Field level security is active: ' + hw.isFieldLevelSecurity());

    Sortie :

    Field level security is active: true

    HistoryWalker - isRecordLevelSecurity()

    Spécifie si l’accès en lecture au niveau de l’enregistrement est appliqué à l’enregistrement lors de la récupération à partir de la base de données.

    Tableau 11. Paramètres
    Nom Type Description
    Aucun
    Tableau 12. Renvoie
    Type Description
    Booléen Renvoie la valeur true si la sécurité au niveau de l’enregistrement est activée, sinon renvoie la valeur false.

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    gs.info('Record level security is active: ' + hw.isRecordLevelSecurity());
    

    Sortie :

    Record level security is active: true

    HistoryWalker - isWithChanges()

    Spécifie si l’une des méthodes qui guide l’enregistrement d’une mise à jour à l’autre prend en charge les données de « changements » pour chaque élément.

    Tableau 13. Paramètres
    Nom Type Description
    Aucun
    Tableau 14. Renvoie
    Type Description
    Booléen Renvoie la valeur true si la prise en charge des changements est activée, sinon renvoie la valeur false.

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    gs.info('Changes is active: ' + hw.isWithChanges());

    Sortie :

    Changes is active: true

    HistoryWalker - isWithJournalFields()

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

    Tableau 15. Paramètres
    Nom Type Description
    Aucun
    Tableau 16. Renvoie
    Type Description
    Booléen Renvoie la valeur true si les champs journaux sont renseignés, sinon renvoie la valeur false.

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    gs.info('Populating journal fields is active: ' + hw. isWithJournalFields());
    

    Sortie :

    Populating journal fields is active: false

    HistoryWalker : isWithVariables()

    Spécifie si des valeurs sont définies pour les variables enregistrées dans l’historique.

    Tableau 17. Paramètres
    Nom Type Description
    Aucun
    Tableau 18. Renvoie
    Type Description
    Booléen Renvoie la valeur true si des valeurs pour les variables sont incluses, sinon renvoie la valeur false.

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    gs.info('Populating variables is active: ' + hw. isWithVariables());

    Sortie :

    Populating variables is active: false

    HistoryWalker : setFieldLevelSecurity(Booléen fieldLevelSecurity)

    Définit l’accès en lecture au niveau du champ sur chaque élément avant de définir la valeur historique de cet élément dans le GlideRecord. Si la sécurité au niveau des champs est activée, elle empêche l’API de renseigner les champs de l’enregistrement parcouru auxquels l’utilisateur de l’API n’a pas accès.

    Tableau 19. Paramètres
    Nom Type Description
    fieldLevelSecurity Booléen Si la valeur est définie sur true, la sécurité au niveau du champ est activée. La valeur par défaut est vrai.
    Tableau 20. Renvoie
    Type Description
    nul

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.setFieldLevelSecurity(false);
    hw.walkTo(0);
    

    HistoryWalker : setRecordLevelSecurity(booléen recordLevelSecurity)

    Définit l’accès en lecture au niveau de l’enregistrement sur l’enregistrement lors de la récupération à partir de la base de données. La sécurité au niveau de l’enregistrement empêche l’API de récupérer l’enregistrement parcouru si l’utilisateur de l’API n’a pas accès au GlideRecord.

    Tableau 21. Paramètres
    Nom Type Description
    recordLevelSecurity Booléen Si la valeur est définie sur true, la sécurité d’accès en lecture au niveau de l’enregistrement est activée. La valeur par défaut est vrai.
    Tableau 22. Renvoie
    Type Description
    nul

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.setRecordLevelSecurity(false);
    hw.walkTo(0);
    

    HistoryWalker : setWithChanges(booléen withChanges)

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

    Tableau 23. Paramètres
    Nom Type Description
    withChanges Booléen Marqueur indiquant si les données des 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 Changes. Cet exemple doit être exécuté dans le champ d’application global.

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.walkTo(0);
    do {
        printChangedFields(hw);
    } while (hw.walkForward());
    
    function printChangedFields(hw) {
        var walkedGr = hw.getWalkedRecord();
        var fields = GlideScriptRecordUtil.get(walkedGr).getChangedFieldNames();
        gs.info("Fields changed at update " + hw.getUpdateNumber() + " were:");
        for (var j = 0; j < fields.size(); j++)
            gs.info(" " + fields.get(j));
        gs.info("");
    }

    Cet exemple de code montre comment appeler cette méthode sans la prise en charge des données Changes. Cet exemple s’exécute à la fois dans les environnements inclus dans le champ d’application et dans les environnements globaux.

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.setWithChanges(false);
    hw.walkTo(0);
    do {
        var oldPriority = hw.getWalkedRecord().priority;
        gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
    } while (hw.walkForward());
    

    HistoryWalker - setWithJournalFields(booléen withJournalFields)

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

    Tableau 25. Paramètres
    Nom Type Description
    withJournalFields (Champs de journal) Booléen Si la valeur est définie sur vrai, incluez les champs de type journal. La valeur par défaut est false.
    Tableau 26. Renvoie
    Type Description
    nul

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.setWithJournalFields(true);
    if (hw.walkTo(0)) {
        var workNotes = hw.getWalkedRecord().work_notes;
        gs.info('Work Notes in update number ' + hw.getUpdateNumber() + ' was ' + workNotes);
    }
    

    HistoryWalker : setWithVariables(Booléen avecVariables)

    Spécifie si les variables sont renseignées à partir des valeurs historiques.

    Tableau 27. Paramètres
    Nom Type Description
    withVariables Booléen Si la valeur est définie sur true, les valeurs sont renseignées pour les variables. La valeur par défaut est false.
    Tableau 28. Renvoie
    Type Description
    nul

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.setWithVariables(true);
    hw.walkTo(0);
    if (hw.walkTo(0)) {
        var varUrgency = hw.getWalkedRecord().variables.urgency;
        gs.info('Variable Urgency in update number ' + hw.getUpdateNumber() + ' was ' + varUrgency);
    }
    

    HistoryWalker - marcherBackward()

    Applique les données d’historique/d’audit appropriées pour remettre un GlideRecord parcourable à l’état lorsqu’il était un numéro de mise à jour en arrière. Si le nombre de mises à jour précédent est manquant dans les données d’historique/d’audit, le nombre de mises à jour disponibles précédent est rétabli.

    Tableau 29. Paramètres
    Nom Type Description
    Aucun
    Tableau 30. Renvoie
    Type Description
    Booléen Renvoie la valeur true s’il était possible de marcher jusqu’au numéro de mise à jour spécifié. Sinon, renvoie false, par exemple si vous avez déjà marché jusqu’au numéro de mise à jour 0.

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.walkTo(incGr.sys_mod_count);
    do {
        var oldPriority = hw.getWalkedRecord().priority;
        gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
    } while (hw.walkBackward())
    

    Sortie :

    Incident priority in update number 5 was 2
    Incident priority in update number 4 was 4
    Incident priority in update number 3 was 4
    Incident priority in update number 2 was 4
    Incident priority in update number 1 was 4
    Incident priority in update number 0 was 4
    

    HistoryWalker - walkForward()

    Applique les données d’historique/d’audit appropriées pour remettre un GlideRecord marché à l’état lorsqu’il avançait d’un numéro de mise à jour. Si le nombre de mises à jour suivant est manquant dans les données d’historique/d’audit, il passera au prochain nombre de mises à jour disponibles.

    Tableau 31. Paramètres
    Nom Type Description
    Aucun
    Tableau 32. Renvoie
    Type Description
    Booléen Renvoie la valeur true s’il était possible de marcher jusqu’au numéro de mise à jour spécifié. Sinon, renvoie la valeur false, par exemple si vous avez déjà atteint le nombre de mises à jour GlideRecord.

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    hw.walkTo(0);
    do {
        var oldPriority = hw.getWalkedRecord().priority;
        gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
    } while (hw.walkForward())
    

    Sortie :

    Incident priority in update number 0 was 4
    Incident priority in update number 1 was 4
    Incident priority in update number 2 was 4
    Incident priority in update number 3 was 4
    Incident priority in update number 4 was 4
    Incident priority in update number 5 was 2
     

    HistoryWalker : walkTo(int updateCount)

    Applique les données d’historique/d’audit appropriées pour obtenir un GlideRecord à l’état qu’il était dans un nombre de mises à jour spécifique. Utilisez getWalkedRecord() ou getWalkedRecordCopy() après avoir marché jusqu’à un numéro de mise à jour pour récupérer le GlideRecord « parcouru ».

    Tableau 33. Paramètres
    Nom Type Description
    updateCount Entier Le numéro de mise à jour vers lequel marcher.
    Tableau 34. Renvoie
    Type Description
    Booléen true s’il était possible d’accéder au numéro de mise à jour spécifié, false dans le cas contraire, par exemple si la mise à jour demandée est supérieure au nombre de mises à jour du GlideRecord ou s’il n’existe aucune donnée d’historique/d’audit du numéro de mise à jour demandé

    Exemple :

    var incGr = new GlideRecord('incident');
    incGr.get('number', 'INC0000015');
    
    var hw = new sn_hw.HistoryWalker(incGr.getTableName(), incGr.getUniqueValue());
    if (hw.walkTo(3)) {
        var oldPriority = hw.getWalkedRecord().priority;
        gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
    } else
        gs.info('Incident does not have update number 3');

    Sortie :

    Incident priority in update number 3 was 4