HistoryWalker – Scoped, Global
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.
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.- 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.
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| tableName | Zeichenfolge | Name der Tabelle, die den abzurufenden Datensatz enthält. |
| sydId | Zeichenfolge | sys_id des abzurufenden Datensatzes. |
| useAudit | Boolean |
|
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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| fieldLevelSecurity | Boolean | Wenn „true“, ist die Sicherheit auf Feldebene aktiviert. Der Standardwert ist „true“. |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| recordLevelSecurity | Boolean | Wenn „true“, ist die Sicherheit für den Lesezugriff auf Datensatzebene aktiviert. Der Standardwert ist „true“. |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| withChanges | Boolean | Kennzeichnung, die angibt, ob die Änderungsdaten für jedes Element unterstützt werden. Gültige Werte:
Standardwert: true |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| withJournalFields | Boolean | Wenn „true“, werden Felder des Journaltyps eingeschlossen. Der Standardwert ist „false“. |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| withVariables | Boolean | Wenn „true“, werden Werte für Variablen aufgefüllt. Der Standardwert ist „false“. |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| 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.
| Name | Typ | Beschreibung |
|---|---|---|
| updateCount | Ganzzahl | Die Aktualisierungsnummer, zu der der Durchlauf erfolgen soll. |
| 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