HistoryWalker – Scoped, Global

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 10 Minuten Lesedauer
  • Die HistoryWalker-API verwendet die Audit-/Protokolltabellen, um eine Verlaufsversion eines vorhandenen Datensatzes zu generieren.

    Es unterstützt die Möglichkeit, einen Gliderecord auf eine vorherige Aktualisierungszählung (durchgelaufener Gliderecord) zurückzusetzen, wobei die entsprechenden GlideElements ausgefüllt sind. Nachdem der durchlaufene Gliderecord abgerufen wurde, bietet die API die Möglichkeit, die Aktualisierungsnummern vorwärts und rückwärts zu verschieben, indem durch die Verlaufsaktualisierungen navigiert wird.

    Um diese Klasse in bereichsbezogenen und globalen Anwendungen zu verwenden, verwenden Sie den Namespace-Identifier sn_hw. Das History-Walker-Plugin (com.glide.history_walker), das standardmäßig aktiviert ist, ist für den Zugriff auf die HistoryWalker-API erforderlich.
    Hinweis:
    Für Offline-Updates wird die HistoryWalker -API automatisch initiiert, und die einzigen zwei Methoden, die Sie verwenden können, sind: walkTo() (das Eingabeargument für diese Methode kann nur Null sein) und walkForward(). Sonstige verfügbare Methoden können nicht für Offline-Updates aufgerufen werden.
    Die HistoryWalker-API bietet zwei Möglichkeiten zum Abrufen der Audit-Daten:
    • Verwenden des Verlaufssatzes: Ein Verlaufssatzeintrag wird (falls nicht verfügbar oder nicht auf dem neuesten Stand) aus den Daten in der Sys-Audit-Tabelle [sys_audit] für den Datensatz erstellt, den Sie durchlaufen. Die Verlaufssatztabelle enthält Datensätze (Verlaufszeilen) mit den tatsächlich an Feldwerten vorgenommenen Änderungen. Methoden der HistoryWalker -API rufen die Verlaufsdaten aus den generierten Verlaufszeilen ab, anstatt die Tabelle sys_audit abzufragen.
    • Verwenden der Sys-Audit-Tabelle: In diesem Fall extrahiert die HistoryWalker -API Daten, die direkt die sys_audit-Tabelle abfragen.

    Standardmäßig füllt sie die Daten aus, um die Methoden changes(), changesFrom()und changesTo () im durchlaufenen Datensatz zu unterstützen und bietet Sicherheit auf Datensatz- und Feldebene. Darüber hinaus können Journalfelder und -variablen auch im durchlaufenen Gliderecord ausgefüllt werden, wenn die Aktualisierungen durchlaufen werden.

    Diese API ermöglicht Ihnen Folgendes:

    • Wenden Sie die entsprechenden Verlaufs-/Audit-Daten an, um einen vorhandenen GlideRecord auf den Status einer bestimmten Aktualisierungszählung zu bringen.
    • Weisen Sie die HistoryWalker -API an, die Tabelle sys_audit anstelle der Tabellen sys_history_set/sys_history_line zu verwenden, um die Daten abzurufen.
    • Deaktivieren Sie die Zugriffssteuerung auf Zeilenebene.
    • Deaktivieren Sie die Zugriffssteuerung auf Feldebene.
    • Deaktivieren Sie das Abrufen und Verarbeiten von „Changes“-Daten.
    • Sie können Journalfelder aktivieren.
    • Variablen aktivieren

    HistoryWalker – HistoryWalker(String tableName, String sysId)

    Ruft den Datenbankdatensatz basierend auf den Parametern ab und verwendet die Verlaufssätze, um die Verlaufsdaten abzurufen.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    tableName Zeichenfolge Name der Tabelle, die den abzurufenden Datensatz enthält.
    sydId Zeichenfolge sys_id des abzurufenden Datensatzes.

    Beispiel:

    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');

    Ausgabe:

    Incident priority in update number 3 was 4

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

    Ruft den Datenbankdatensatz basierend auf den Parametern ab und verwendet die Verlaufssatz- oder Audit-Daten, um die Verlaufsdaten abhängig vom dritten Parameter abzurufen.

    Tabelle : 2. Parameter
    Name Typ Beschreibung
    tableName Zeichenfolge Name der Tabelle, die den abzurufenden Datensatz enthält.
    sydId Zeichenfolge sys_id des abzurufenden Datensatzes.
    useAudit Boolean
    • Wenn „true“, werden Audit-Daten zum Abrufen des Verlaufsdatums verwendet.
    • Wenn „false“, wird der Verlaufssatz zum Abrufen von Verlaufsdaten verwendet.

    Beispiel

    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');
    

    Ausgabe:

    Incident priority in update number 3 was 4

    HistoryWalker – getUpdateNumber()

    Ruft die Aktualisierungsnummer des aktuellen durchlaufenen Glide-Datensatzes ab.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 4. Ergebnisse
    Typ Beschreibung
    int Aktuelle Aktualisierungsnummer oder -1, wenn kein Datensatz gefunden wurde

    Beispiel:

    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());

    Ausgabe:

    Update number: 3

    HistoryWalker – getWalkedRecord()

    Ruft den Datensatz mit den Verlaufs-/Audit-Daten auf, nachdem eine Aktualisierungsnummer aufgerufen wurde.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 6. Ergebnisse
    Typ Beschreibung
    GlideRecord Der durchlaufene GlideRecord.

    Beispiel:

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

    Ausgabe:

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

    HistoryWalker – getWalkedRecordCopy()

    Gibt eine Kopie des Datensatzes mit den Verlaufs-/Audit-Daten zurück, nachdem beim Durchlaufen eine Aktualisierungsnummer gefunden wurde.

    Hinweis:
    Die getWalkedRecord()-API kann den erhaltenen „walkedRecord“ ändern, nachdem beim Durchlaufen eine andere Aktualisierungsnummer gefunden wurde. Die getWalkedRecordCopy()-API erhält einen Klon für den durchlaufenen Datensatz, um dies zu verhindern.
    Tabelle : 7. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 8. Ergebnisse
    Typ Beschreibung
    GlideRecord Eine Kopie des durchlaufenen GlideRecord.

    Beispiel:

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

    Ausgabe:

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

    HistoryWalker – isFieldLevelSecurity()

    Gibt an, ob der Lesezugriff auf Datensatzebene auf den Datensatz angewendet wird, wenn er aus der Datenbank abgerufen wird.

    Tabelle : 9. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 10. Ergebnisse
    Typ Beschreibung
    Boolean Gibt „true“ zurück, wenn die Sicherheit auf Feldebene aktiviert ist, andernfalls wird „false“ zurückgegeben.

    Beispiel:

    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());

    Ausgabe:

    Field level security is active: true

    HistoryWalker – isRecordLevelSecurity()

    Gibt an, ob der Lesezugriff auf Datensatzebene auf den Datensatz angewendet wird, wenn er aus der Datenbank abgerufen wird.

    Tabelle : 11. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 12. Ergebnisse
    Typ Beschreibung
    Boolean Gibt „true“ zurück, wenn die Sicherheit auf Datensatzebene aktiviert ist; andernfalls wird „false“ zurückgegeben.

    Beispiel:

    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());
    

    Ausgabe:

    Record level security is active: true

    HistoryWalker – isWithChanges()

    Gibt an, ob eine der Methoden, die den Datensatz von einer Aktualisierung zur nächsten durchläuft, die „Changes“-Daten für jedes Element unterstützt.

    Tabelle : 13. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 14. Ergebnisse
    Typ Beschreibung
    Boolean Gibt „true“ zurück, wenn die Unterstützung von Änderungen aktiviert ist; andernfalls wird „false“ zurückgegeben.

    Beispiel:

    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());

    Ausgabe:

    Changes is active: true

    HistoryWalker – isWithJournalFields()

    Gibt an, ob Felder des Journaltyps über die Verlaufswerte aufgefüllt werden.

    Tabelle : 15. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 16. Ergebnisse
    Typ Beschreibung
    Boolean Gibt „true“ zurück, wenn Journalfelder aufgefüllt werden, ansonsten „false“.

    Beispiel:

    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());
    

    Ausgabe:

    Populating journal fields is active: false

    HistoryWalker – isWithVariables()

    Gibt an, ob Werte für Variablen festgelegt werden, die im Verlauf aufgezeichnet werden.

    Tabelle : 17. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 18. Ergebnisse
    Typ Beschreibung
    Boolean Gibt „true“ zurück, wenn Werte für Variablen einbezogen werden, ansonsten „false“.

    Beispiel:

    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());

    Ausgabe:

    Populating variables is active: false

    HistoryWalker – setFieldLevelSecurity(Boolean fieldLevelSecurity)

    Legt den Lesezugriff auf Feldebene für jedes Element fest, bevor der Verlaufswert dieses Elements im GlideRecord festgelegt wird. Wenn die Sicherheit auf Feldebene aktiviert ist, verhindert dies, dass die API die Felder des durchlaufenen Datensatzes auffüllt, auf die der Benutzer der API keinen Zugriff hat.

    Tabelle : 19. Parameter
    Name Typ Beschreibung
    fieldLevelSecurity Boolean Wenn „true“, ist die Sicherheit auf Feldebene aktiviert. Der Standardwert ist „true“.
    Tabelle : 20. Ergebnisse
    Typ Beschreibung
    void

    Beispiel:

    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(Boolean recordLevelSecurity)

    Legt den Lesezugriff auf Datensatzebene für den Datensatz fest, wenn er aus der Datenbank abgerufen wird. Die Sicherheit auf Datensatzebene verhindert, dass die API den durchlaufenen Datensatz abruft, wenn der Benutzer der API keinen Zugriff auf den GlideRecord hat.

    Tabelle : 21. Parameter
    Name Typ Beschreibung
    recordLevelSecurity Boolean Wenn „true“, ist die Sicherheit für den Lesezugriff auf Datensatzebene aktiviert. Der Standardwert ist „true“.
    Tabelle : 22. Ergebnisse
    Typ Beschreibung
    void

    Beispiel:

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

    Legt die Datenunterstützung für „Änderungen“ für jedes Element für eine Methode fest, die den Datensatz von einer Aktualisierung zur nächsten durchläuft.

    Tabelle : 23. Parameter
    Name Typ Beschreibung
    withChanges Boolean Kennzeichnung, die angibt, ob die Änderungsdaten für jedes Element unterstützt werden.
    Gültige Werte:
    • true: Change-Daten werden für jedes Element unterstützt.
    • false: Change-Daten werden nicht für jedes Element unterstützt.

    Standardwert: true

    Tabelle : 24. Ergebnisse
    Typ Beschreibung
    void

    Dieses Codebeispiel zeigt, wie diese Methode mit Unterstützung von Change-Daten aufgerufen wird. Dieses Beispiel muss im globalen Bereich ausgeführt werden.

    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("");
    }

    Dieses Code-Beispiel zeigt, wie diese Methode ohne Unterstützung von Änderungsdaten aufgerufen wird. Dieses Beispiel wird sowohl in bereichsbezogenen als auch in globalen Umgebungen ausgeführt.

    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(Boolean withJournalFields)

    Gibt an, ob Felder des Journaltyps über die Verlaufswerte aufgefüllt werden.

    Tabelle : 25. Parameter
    Name Typ Beschreibung
    withJournalFields Boolean Wenn „true“, werden Felder des Journaltyps eingeschlossen. Der Standardwert ist „false“.
    Tabelle : 26. Ergebnisse
    Typ Beschreibung
    void

    Beispiel:

    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(Boolean withVariables)

    Gibt an, ob Variablen aus den Verlaufswerten aufgefüllt werden.

    Tabelle : 27. Parameter
    Name Typ Beschreibung
    withVariables Boolean Wenn „true“, werden Werte für Variablen aufgefüllt. Der Standardwert ist „false“.
    Tabelle : 28. Ergebnisse
    Typ Beschreibung
    void

    Beispiel:

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

    Wendet die entsprechenden Verlaufs-/Audit-Daten an, um einen durchlaufenen GlideRecord in dem Status zu erhalten, in dem er eine Aktualisierungsnummer zurück war. Wenn die vorherige Aktualisierungszählung in den Verlaufs-/Audit-Daten fehlt, erfolgt das Durchlaufen zur vorherigen verfügbaren Aktualisierungszählung.

    Tabelle : 29. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 30. Ergebnisse
    Typ Beschreibung
    Boolean Gibt „true“ zurück, wenn das Durchlaufen der angegebenen Aktualisierungsnummer möglich war. Andernfalls wird „false“ zurückgegeben, beispielsweise wenn der Durchlauf bis zur Aktualisierungsnummer 0 bereits erfolgt ist.

    Beispiel:

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

    Ausgabe:

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

    Wendet die entsprechenden Verlaufs-/Audit-Daten an, um einen durchlaufenen GlideRecord in dem Status zu erhalten, in dem er eine Aktualisierungsnummer vorwärts war. Wenn die nächste Aktualisierungszählung in den Verlaufs-/Audit-Daten fehlt, erfolgt das Durchlaufen zur nächsten verfügbaren Aktualisierungszählung.

    Tabelle : 31. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 32. Ergebnisse
    Typ Beschreibung
    Boolean Gibt „true“ zurück, wenn das Durchlaufen der angegebenen Aktualisierungsnummer möglich war. Andernfalls wird „false“ zurückgegeben, beispielsweise wenn der Durchlauf bis zur GlideRecord-Aktualisierungszählung bereits erfolgt ist.

    Beispiel:

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

    Ausgabe:

    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)

    Wendet die entsprechenden Verlaufs-/Audit-Daten an, um einen GlideRecord auf den Status einer bestimmten Aktualisierungszählung zu bringen. Verwenden Sie getWalkedRecord() oder getWalkedRecordCopy(), nachdem Sie zu einer Aktualisierungsnummer gegangen sind, um den durchlaufenen GlideRecord abzurufen.

    Tabelle : 33. Parameter
    Name Typ Beschreibung
    updateCount Ganzzahl Die Aktualisierungsnummer, zu der der Durchlauf erfolgen soll.
    Tabelle : 34. Ergebnisse
    Typ Beschreibung
    Boolean „true“, wenn das Durchlaufen zur angegebenen Aktualisierungsnummer möglich war, andernfalls „false“, wenn z. B. die angeforderte Aktualisierung größer als der Aktualisierungszähler des GlideRecord ist oder wenn für die angeforderte Aktualisierungsnummer keine Verlaufs-/Audit-Daten vorhanden sind

    Beispiel:

    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');

    Ausgabe:

    Incident priority in update number 3 was 4