HistoryWalker – Scoped, Global

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 16 Minuten Lesedauer
  • Die HistoryWalker-API verwendet die Audit-/Protokolltabellen, um eine Verlaufsversion eines vorhandenen Datensatzes zu generieren. Diese Verlaufsversion enthält alle Aktualisierungen aller Felder für den angegebenen Glide-Datensatz.

    Diese API bietet die Möglichkeit, einen GlideRecord an eine vorherige Aktualisierungsanzahl (GlideRecord mit Walk-up) zurückzugeben, wobei die entsprechenden Glide-Elemente ausgefüllt sind. Nachdem der GlideRecord abgerufen wurde, bietet die API die Möglichkeit, zwischen den Update-Nummern vorwärts und rückwärts zu wechseln und durch die Verlaufsaktualisierungen zu navigieren.

    Diese API ermöglicht Ihnen Folgendes:

    • Weist die Verlaufs- API an, eine bestimmte Verlaufs-Walker-Implementierung zum Abrufen von Audit-Daten zu verwenden.
    • Durch die Verlaufsversion eines Glide-Datensatzes navigieren.
    • Wenden Sie die entsprechenden Verlaufs-/Auditdaten an, um einen vorhandenen GlideRecord in den Status zu versetzen, den er in einer bestimmten Aktualisierungsanzahl hatte.
    • Zugriffssteuerung auf Zeilenebene deaktivieren.
    • Zugriffssteuerung auf Feldebene deaktivieren.
    • Deaktivieren Sie den Abruf und die Verarbeitung von Change-Daten.
    • Sie können Journalfelder aktivieren.
    • Variablen aktivieren

    Die HistoriWalker- API bietet vier Möglichkeiten zum Abrufen von Audit-Daten:

    1. HISTORY: Verlaufs-Walker

      Wenn nicht verfügbar oder nicht aktuell, wird ein Verlaufssatz-Datensatz [sys_history_set] für den Glide-Datensatz erstellt, den Sie beim Instanziieren der HistoriWalker -API übergeben haben. Verwendet werden die Daten in der Sys-Audit-Tabelle [sys_audit]. Die Tabelle „sys_history_set“ enthält den Namen der zugehörigen Verlaufstabelle [sys_history_line]. Die Tabelle „sys_history_line“ enthält einen Datensatz für jeden Feldwert, der in der Tabelle, die gerade durchlaufen wird, aktualisiert wurde. Mit dieser Abrufmethode rufen die Verlaufswanderer- Methoden Verlaufsdaten aus der generierten Tabelle „sys_history_line“ ab, anstatt die Tabelle „sys_audit“ direkt abzufragen.

      Die Datensätze in der Tabelle „sys_history_line“ werden nach aufsteigenden Aktualisierungsfeldwerten [update] und nicht nach chronologischer Reihenfolge sortiert und gruppiert. Das Feld „update“ ist dem Feld „Updates“ [sys_mod_count] in der Aufgabentabelle zugeordnet.
      Hinweis:
      Aktualisierungen von „sys_mod_count“ durch Clients werden nicht synchronisiert und können daher überschrieben werden, wodurch diese Anzahl unzuverlässig wird.
    2. Audit: Audit-Walker

      Fragt die Tabelle „sys_audit“ nach dem Glide-Datensatz ab, den Sie beim Instanziieren der StoryWalker- API übergeben haben. Jeder Datensatz in der Tabelle „sys_audit“ enthält die Änderungen an Feldwerten, die während der Lebensdauer des Datensatzes aufgetreten sind.

      Datensätze werden aufsteigend nach dem Feld Anzahl der Updates [record_checkpoint] und nicht nach chronologischer Reihenfolge sortiert. Das Feld „record_checkpoint“ ist frei mit dem Feld „Updates“ [sys_mod_count] in der Aufgabentabelle verknüpft. Eine Eins-zu-eins-Korrelation kann nicht garantiert werden.

      Was ist bei der Entscheidung, ob die Audit-Methode verwendet werden soll, zu berücksichtigen?
      • Größe der Tabelle „sys_audit“. Die Tabelle „sys_audit“ kann sehr groß werden, da die Änderungen für alle Felder in allen Datensätzen in dieser Tabelle verwaltet werden.
      • Je nach Einstellung der Systemeigenschaft glide.sys.audit_insertskann möglicherweise ein Null-Update-Datensatz fehlen. Diese Eigenschaft definiert, ob ein Audit-Datensatz mit den anfänglichen Feldwerten erstellt wird, wenn ein Datensatz zum ersten Mal in eine Tabelle eingefügt wird. In einem Basissystem ist diese Eigenschaft auf „falsch“ festgelegt, wodurch die StoryWalker- API eine zusätzliche Verarbeitung durchführt, um diese fehlenden Informationen zu berücksichtigen.
      Daher ist die Ausführung der API „HistoryWalker“ mit „AUDIT“ nicht so leistungsstark wie die Ausführung von „HISTORY“ oder „CHECKPOINT“.
    3. CHECKPOINT: Prüfpunkt-Walker

      Verwendet einen hybriden Ansatz, um je nach Einstellung der Systemeigenschaft com.glide.history_walker.max_history_countVerlaufsdaten aus der Tabelle „sys_history_set“ oder „sys_audit“ abzurufen. Wenn der zu durchlaufende Datensatz einen sys_mod_count aufweist, der den in dieser Eigenschaft festgelegten Wert überschreitet (Standardwert = 1.000), verwendet der Prüfpunkt-Walker die Tabelle „sys_audit“, um Verlaufsdaten abzurufen. Andernfalls wird die Tabelle „sys_history_set“ verwendet.

      Der Grund für diese Prüfung besteht darin, dass die Tabelle „sys_history_set“ einen leistungsfähigeren Ansatz für das Durchlaufen von Verlaufsdaten bietet, jedoch nur bis zu einem bestimmten Punkt. Wenn die Gesamtzahl der Feldaktualisierungen ein bestimmtes Level erreicht, etwa 10.000, kann die Generierung der Tabelle „sys_history_set“ die Zeitüberschreitung der Anwendertransaktion überschreiten. Wenn die Zeitüberschreitung überschritten wird, sind die Gesamtergebnisse in der Leistung schlechter als die Ausführung mit der Tabelle „sys_audit“, die alle Tabellenaktualisierungen enthält. Der Prüfpunkt-Walker verwendet com.glide.history_walker.max_history_count, um den optimalen Datensatz für die beste Leistung zu bestimmen.

      Datensätze werden gruppiert und aufsteigend nach dem Feld „Interner Prüfpunkt des Datensatzes“ [internal_checkpoint] sortiert. Da das Feld „internal_checkpoint“ ein Zeitstempel ist, werden die Datensätze in chronologischer Reihenfolge angezeigt. Darüber hinaus hat das Feld „internal_checkpoint“ keine Zuordnung zum Feld „task.sys_mod_count“.

      Der wichtigste Unterschied zwischen dem Prüfpunkt-Walker und anderen Gehern besteht darin, dass die anderen Gehhilfen mit task.sys_mod_count-Einträgen gekoppelt sind und von ihnen gesteuert werden und sich auf sys_audit.record_checkpoint und sys_history_line.update beziehen. Der Prüfpunkt-Walker verwendet die Felder „sys_audit.internal_checkpoint“ bzw. „sys_history_line.internal_checkpoint“.

      Der interne Prüfpunkt des Datensatzes behebt beide Probleme und macht den Prüfpunkt-Walker zur zuverlässigsten Methode zum Abrufen von Audit-Verlaufsdaten.

    4. OFFLINE: Offline-Verlaufswanderer

      Stellt die Offline-Verlaufsfunktion bereit, die von Anwendungen wie der mobilen Offline-App Field Service verwendet wird. Wenn eine Aufgabentabellenerweiterung über Felder mit dem Wörterbuchattribut „offline_timestamp_field“ verfügt, wird der Offline-Verlaufs-Walker unabhängig von einer Eigenschaft oder expliziten Anweisung zur Verwendung eines anderen Walkers ausgeführt. Der Offline-Verlaufs-Walker verwendet die Tabellen „sys_history_line“ und „sys_history_set“, die Verlaufsdaten enthalten, die absichtlich nach Datum und Uhrzeit sortiert sind, um Offline-Aktualisierungen zu unterstützen. Für solche Tabellen kann nur der Offline-Verlaufs-Walker genaue Ergebnisse liefern.

      Hinweis:
      Für Offline-Aktualisierungen wird die API „HistoryWalker“ automatisch initiiert, und Sie können nur zwei Methoden verwenden: walkTo(0) und walkForward(). Sie können keine anderen StoryWalker -Methoden für Offline-Updates aufrufen.

    Die Systemeigenschaft com.snc.walker.default definiert den standardmäßigen Typ des Datensatz-Walkings, das beim Instanziieren der StoryWalker- API ausgeführt werden soll. Beim Upgrade von Kunden wird diese Eigenschaft auf „VERLAUF“ festgelegt. Für Neukunden wird diese Eigenschaft auf „CHECKPOINT“ festgelegt.

    Wenn Sie die StoryWalker -API wie folgt instanziieren, bestimmt die Eigenschaft com.snc.walker.default, welche Datensatz-Walker-Implementierung die API verwendet.
    var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>);
    Sie können auch den Typ des Datensatz-Walkers übergeben, der beim Instanziieren der API verwendet werden soll. Es wird empfohlen, beim Instanziieren dieser API immer die gewünschte Walk-Implementierung einzubeziehen.
    var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>, <walker>);
    wie zum Beispiel:
    var hw = new sn_hw.HistoryWalker('incident', '1c741bd70b2322007518478d83673af3', 'CHECKPOINT');

    Um diese Klasse in bereichsbezogenen und globalen Anwendungen zu verwenden, verwenden Sie den Namespace-Bezeichner 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.

    StoryWalker: StoryWalker(String tableName, String sysId, String walker)

    Instanziiert das StoryWalker-Objekt und ruft die Verlaufsdaten für den angegebenen Glide-Datensatz ab.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    tableName Zeichenfolge Name der Tabelle, die den abzurufenden Datensatz enthält.
    sysId Zeichenfolge Sys_id des Datensatzes, dessen Verlaufsdaten Sie abrufen möchten.
    Gehhilfe Zeichenfolge Optional. Name des Verlaufs-Walkers, der zum Abrufen der Verlaufsdaten für den angegebenen Datensatz verwendet werden soll.
    Gültige Werte:
    • Audit
    • PRÜFPOINT
    • VERLAUF
    • OFFLINE

    Standard: Geher ist in der Systemeigenschaft com.snc.walker.default angegeben.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird, um die am GlideRecord vorgenommenen Änderungen mit dem Prüfpunkt-Walker durchzugehen.

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

    Ausgabe:

    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)

    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.
    sysId Zeichenfolge Sys_id des abzurufenden Datensatzes.
    useAudit Boolean Kennzeichnung, die angibt, ob Audit-Daten zum Abrufen des Verlaufsdatums verwendet werden sollen.
    Gültige Werte:
    • „wahr“: Verwenden Sie Audit-Daten, um das Verlaufsdatum abzurufen.
    • „falsch“: Verwenden Sie den Verlaufssatz, um das Verlaufsdatum abzurufen.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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 Update-Nummer oder -1, wenn der Datensatz nicht gefunden wurde.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

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

    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.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

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

    Ausgabe:

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

    HistoryWalker – getWalkedRecordCopy()

    Gibt eine Kopie des mit den Verlaufs-/Auditdaten gefüllten Datensatzes zurück, nachdem eine Aktualisierungsnummer aufgerufen wurde.

    Hinweis:
    Die Methode getWalkedRecord() kann den erhaltenen WalkedRecord ändern, nachdem zu einer anderen Update-Nummer gewechselt wurde. Um dies zu verhindern, ruft die getWalkedRecordCopy()- Methode einen Klon des Walked-Datensatzes ab.
    Tabelle : 7. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 8. Ergebnisse
    Typ Beschreibung
    GlideRecord Kopie des gelaufenen GlideRecord.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

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

    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 Kennzeichnung, die angibt, ob die Sicherheit auf Feldebene aktiviert ist.
    Gültige Werte:
    • „wahr“: Sicherheit auf Feldebene ist aktiviert.
    • „falsch“: Sicherheit auf Feldebene ist nicht aktiviert.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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 Kennzeichnung, die angibt, ob die Sicherheit auf Datensatzebene aktiviert ist.
    Gültige Werte:
    • „wahr“: Sicherheit auf Datensatzebene ist aktiviert.
    • „falsch“: Sicherheit auf Datensatzebene ist nicht aktiviert.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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 einem Update zum nächsten durchlaufen, die Daten vom Typ „changes“ für jedes Element unterstützt.

    Tabelle : 13. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 14. Ergebnisse
    Typ Beschreibung
    Boolean Kennzeichnung, die angibt, ob die Change-Unterstützung aktiviert ist.
    Gültige Werte:
    • „wahr“: Change-Unterstützung ist aktiviert.
    • „falsch“: Change-Unterstützung ist nicht aktiviert.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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 Kennzeichnung, die angibt, ob Journalfelder ausgefüllt sind.
    Gültige Werte:
    • wahr: Journalfelder sind ausgefüllt.
    • „falsch“: Journalfelder sind nicht ausgefüllt.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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 Kennzeichnung, die angibt, ob Werte für Variablen festgelegt sind, die im Verlauf aufgezeichnet werden.
    Gültige Werte:
    • true: Werte sind festgelegt.
    • false: Werte sind nicht festgelegt.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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 sie, dass die API die Felder des Walk-Datensatzes ausfüllt, auf die der API-Benutzer keinen Zugriff hat.

    Tabelle : 19. Parameter
    Name Typ Beschreibung
    fieldLevelSecurity Boolean Kennzeichnung, die angibt, wie die Lesezugriffssicherheit auf Feldebene festgelegt wird.
    Gültige Werte:
    • „wahr“: Aktivieren Sie die Sicherheit auf Feldebene.
    • „falsch“: Deaktiviert die Sicherheit auf Feldebene.

    Standardwert: wahr

    Tabelle : 20. Rückgaben
    Typ Beschreibung
    void

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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(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 Walk-Datensatz abruft, wenn der Anwender der API keinen Zugriff auf den GlideRecord hat.

    Tabelle : 21. Parameter
    Name Typ Beschreibung
    recordLevelSecurity Boolean Kennzeichnung, die angibt, wie die Lesezugriffssicherheit auf Datensatzebene festgelegt wird.
    Gültige Werte:
    • „wahr“: Sicherheit auf Datensatzebene aktivieren.
    • „falsch“: Deaktiviert die Sicherheit auf Datensatzebene.

    Standardwert: wahr

    Tabelle : 22. Rückgaben
    Typ Beschreibung
    void

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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(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 Change-Daten für jedes Element unterstützt werden.
    Gültige Werte:
    • „wahr“: Change-Daten werden für jedes Element unterstützt.
    • „falsch“: Change-Daten werden nicht für jedes Element unterstützt.

    Standardwert: wahr

    Tabelle : 24. Rückgaben
    Typ Beschreibung
    void

    Dieses Codebeispiel zeigt, wie diese Methode mit Changes-Datenunterstützung 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());
    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("");
    }

    Dieses Codebeispiel zeigt, wie diese Methode ohne Unterstützung für Changes-Daten aufgerufen wird. Dieses Beispiel wird sowohl in einer bereichsbezogenen als auch in einer globalen Umgebung ausgeführt.

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

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

    Tabelle : 25. Parameter
    Name Typ Beschreibung
    withJournalFields Boolean Kennzeichnung, die angibt, ob Felder vom Journaltyp eingeschlossen werden sollen.
    Gültige Werte:
    • „wahr“: Felder vom Typ „Journal“ einschließen.
    • „falsch“: Felder vom Typ „Journal“ nicht einschließen.

    Standardwert: false

    Tabelle : 26. Ergebnisse
    Typ Beschreibung
    void

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

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

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

    Tabelle : 27. Parameter
    Name Typ Beschreibung
    withVariables Boolean Kennzeichnung, die angibt, ob Variablen aus den Verlaufswerten ausgefüllt werden.
    Gültige Werte:
    • wahr: Variable ist ausgefüllt.
    • „false“: Variable ist nicht ausgefüllt.

    Standardwert: false

    Tabelle : 28. Ergebnisse
    Typ Beschreibung
    void

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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 Kennzeichnung, die angibt, ob ein Walk-up zur angegebenen Update-Nummer möglich war.
    Gültige Werte:
    • wahr: Möglichkeit zum Walken zur angegebenen Update-Nummer.
    • „falsch“: Die angegebene Update-Nummer kann nicht aufgerufen werden.

      Mögliche Gründe: Bereits zum Update Nummer 0 durchgelaufen.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

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

    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 Kennzeichnung, die angibt, ob ein Walk-up zur angegebenen Update-Nummer möglich war.
    Gültige Werte:
    • wahr: Möglichkeit zum Walken zur angegebenen Update-Nummer.
    • „falsch“: Die angegebene Update-Nummer kann nicht aufgerufen werden.

      Mögliche Gründe: Die GlideRecord-Aktualisierungsanzahl wurde bereits erreicht.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

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

    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() nach dem Walken zu einer Update-Nummer, um den „gewalkten“ GlideRecord abzurufen.

    Hinweis:
    Diese Methode wird von der Prüfpunkt-Walker-Implementierung nicht unterstützt. Rufen Sie die Methode StoryWalker - walkTo(String checkpoint) auf, wenn Sie den Prüfpunkt-Walker verwenden.
    Tabelle : 33. Parameter
    Name Typ Beschreibung
    updateCount Ganzzahl Nummer für den Walk-up-Prozess aktualisieren.
    Tabelle : 34. Rückgaben
    Typ Beschreibung
    Boolean Kennzeichnung, die angibt, ob ein Walk-up zur angegebenen Update-Nummer möglich war.
    Gültige Werte:
    • wahr: Möglichkeit zum Walken zur angegebenen Update-Nummer.
    • „falsch“: Die angegebene Update-Nummer kann nicht aufgerufen werden.

      Mögliche Gründe: Das angeforderte Update ist größer als die Aktualisierungsanzahl des GlideRecord, oder es sind keine Verlaufs-/Auditdaten für die angeforderte Updatenummer vorhanden.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    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

    StoryWalker - walkTo(String checkpoint)

    Wendet die entsprechenden Verlaufs-/Auditdaten an, um einen GlideRecord in den Status zu versetzen, in dem er sich für einen bestimmten internen Prüfpunkt des Datensatzes befand. Verwenden Sie die Methode getWalkedRecord() oder getWalkedRecordCopy() nach dem Walken zum internen Prüfpunkt eines Datensatzes, um den „gewalkten“ GlideRecord abzurufen.

    Hinweis:
    Diese Methode wird nur von der Prüfpunkt-Walker-Implementierung unterstützt.
    Tabelle : 35. Parameter
    Name Typ Beschreibung
    Prüfpunkt Zeichenfolge Gehender interner Prüfpunkt des Datensatzes. Sie finden diesen Wert im Feld „internal_checkpoint“ der Tabelle „Sys Audit“ [sys_audit] oder „Verlauf“ [sys_history_line].
    Tabelle : 36. Rückgaben
    Typ Beschreibung
    Boolean Kennzeichnung, die angibt, ob ein Gang zum internen Prüfpunkt des angegebenen Datensatzes möglich war.
    Mögliche Werte:
    • wahr: Möglichkeit zum Gehen zum internen Prüfpunkt des angegebenen Datensatzes.
    • „falsch“: Der interne Prüfpunkt des angegebenen Datensatzes kann nicht erreicht werden.

      Mögliche Gründe: Der interne Prüfpunkt ist nicht vorhanden.

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird, um die am GlideRecord vorgenommenen Änderungen durchzugehen.

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

    Ausgabe:

    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