HistoryWalk - escopo, global

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 19 min. de leitura
  • . HistórioWalker A API usa as tabelas de auditoria/histórico para gerar uma versão histórica de um registro existente. Esta versão histórica contém todas as atualizações de todos os campos do registro do Glide especificado.

    Esta API fornece a capacidade de retornar um GlideRecord a uma contagem de atualizações anterior (GlideRecord caminhado) com os elementos GlideRecord apropriados preenchidos. Depois que o GlideRecord caminhado é recuperado, a API fornece a capacidade de avançar e retroceder entre os números de atualização, navegando por suas atualizações históricas.

    Esta API permite que você:

    • Instrua o. HistórioWalker API para usar uma implementação específica do analisador de histórico para recuperar dados de auditoria.
    • Navegue pela versão histórica de um registro do Glide.
    • Aplique os dados de histórico/auditoria apropriados para obter um GlideRecord existente no estado em que estava em uma contagem de atualizações específica.
    • Desative o controle de acesso no nível de linha.
    • Desative o controle de acesso no nível do campo.
    • Desativar a recuperação e o processamento de dados de "mudanças".
    • Habilitar campos de diário.
    • Habilitar variáveis.

    . HistórioWalker A API fornece quatro maneiras de recuperar dados de auditoria:

    1. HISTÓRICO - Andador de histórico

      Se não estiver disponível ou não estiver atualizado, criará um registro Conjunto de históricos [sys_history_set] para o registro do Glide que você passou ao instanciar o. HistórioWalker API, usando os dados na tabela Auditoria do sistema [sys_audit]. A tabela sys_history_set contém o nome da tabela Histórico associada [sys_history_line]. A tabela sys_history_line contém um registro para cada valor de campo que foi atualizado na tabela que está sendo percorrida. Usando este método de recuperação, HistórioWalker os métodos recuperam dados do histórico da tabela sys_history_line gerada, em vez de consultar diretamente a tabela sys_audit.

      Os registros na tabela sys_history_line são classificados e agrupados por valores crescentes de campo Atualizar [atualizar] em vez de por ordem cronológica. O campo de atualização está associado vagamente ao campo Atualizações [sys_mod_count] na tabela de tarefas.
      Nota:
      As atualizações de sys_mod_count por clientes não são sincronizadas e, portanto, podem ser substituídas, tornando essa contagem não confiável.
    2. AUDIT - Andador de auditoria

      Consulta a tabela sys_audit para o registro do Glide que você passou ao instanciar o. HistórioWalker API. Cada registro na tabela sys_audit contém as mudanças nos valores de campo que ocorreram durante a vida útil do registro.

      Os registros são classificados em ordem crescente pelo campo Contagem de atualizações [record_checkpoint] em vez de por ordem cronológica. O campo record_checkpoint está associado vagamente ao campo Atualizações [sys_mod_count] na tabela de tarefas. A correlação de um para um não é garantida.

      Coisas a serem consideradas ao decidir se o método de recuperação de AUDITORIA deve ser usado:
      • Tamanho da tabela sys_audit. A tabela sys_audit pode se tornar bastante grande, pois as mudanças de todos os campos em todos os registros são mantidas nesta tabela.
      • Possível falta de atualização de registro zero dependendo da configuração da propriedade do sistema glide.sys.audit_inserts. Esta propriedade define se um registro de auditoria é criado com os valores de campo iniciais quando um registro é inserido pela primeira vez em uma tabela. Em um sistema de base, esta propriedade é definida como "falsa", causando HistórioWalker API para fazer processamento adicional para considerar essas informações ausentes.
      Como tal, executando o. HistórioWalker A API com AUDITORIA não é tão eficiente quanto o HISTÓRICO ou O PONTO DE VERIFICAÇÃO.
    3. CHECKPOINT - Analista do ponto de verificação

      Usa uma abordagem híbrida para obter dados históricos da tabela sys_history_set ou sys_audit, dependendo da configuração da propriedade do sistema com.glide.history_walker.max_history_count. Se o registro a ser visitado tiver um sys_mod_count que exceda o valor definido nesta propriedade, o valor padrão for 1 000, o analisador do ponto de verificação usará a tabela sys_audit para obter dados do histórico. Caso contrário, ele usará a tabela sys_history_set.

      Essa verificação é que a tabela sys_history_set fornece uma abordagem mais eficiente para dados de histórico de referência, mas somente até um determinado ponto. Quando o número total de atualizações de campo atinge um determinado nível, aproximadamente 10 mil, a geração da tabela sys_history_set pode exceder o tempo limite da transação do usuário. Se o tempo limite for excedido, os resultados gerais serão piores em desempenho do que a execução na tabela sys_audit que contém todas as atualizações de tabela. O andador do ponto de verificação usa com.glide.history_walker.max_history_countdeterminar o conjunto de registros ideal a ser usado para obter o melhor desempenho.

      Os registros são agrupados e classificados em ordem crescente pelo campo Ponto de verificação interno do registro [internal_checkpoint]. Como o campo internal_checkpoint é um carimbo de data/hora, os registros estão em ordem cronológica. Além disso, o campo internal_checkpoint não tem associação com o campo task.sys_mod_count.

      A diferença mais importante entre o andador de ponto de verificação e outros andadores é que os outros andadores são acoplados e orientados por entradas task.sys_mod_count e relacionados a sys_audit.record_checkpoint e sys_history_line.update. O caminhante do ponto de verificação usa os campos sys_audit.internal_checkpoint e sys_history_line.internal_checkpoint, respetivamente.

      O ponto de verificação interno do registro aborda esses dois problemas, tornando o analisador do ponto de verificação a maneira mais confiável de recuperar dados do histórico de auditoria.

    4. Andador de histórico off-line

      Fornece o recurso de histórico off-line usado por aplicações como o aplicativo off-line para celular de serviço de campo. Quando uma extensão de tabela de tarefas tem campos com o atributo de dicionário offline_timestamp_field definido, o analisador de histórico offline é executado independentemente de qualquer propriedade ou instrução explícita para usar outro analisador. O andador de histórico off-line usa as tabelas sys_history_line e sys_history_set, que contêm dados de histórico ordenados propositadamente por data e hora, para oferecer suporte a atualizações off-line. Somente o andador de histórico off-line pode fornecer resultados precisos para essas tabelas.

      Nota:
      Para atualizações off-line, o. HistórioWalker A API é iniciada automaticamente e os únicos dois métodos que você pode usar são: WalkTo(0) e. WalkForward() . Você não pode chamar outro HistórioWalker métodos para atualizações off-line.

    A propriedade do sistema com.snc.walker.defaultdefine o tipo padrão de acompanhamento de registro a ser executado ao instanciar o. HistórioWalker API. Para atualizar clientes, esta propriedade é definida como "HISTÓRICO". Para novos clientes, esta propriedade é definida como "PONTO DE VERIFICAÇÃO".

    Ao instanciar o. HistórioWalker API da seguinte forma, a. com.snc.walker.defaultA propriedade determina qual implementação do andador de registro a API usa.
    var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>);
    Você também pode passar o tipo de agente de registro a ser usado ao instanciar a API. Sempre é aconselhável incluir a implementação do caminhante desejada ao instanciar esta API.
    var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>, <walker>);
    como:
    var hw = new sn_hw.HistoryWalker('incident', '1c741bd70b2322007518478d83673af3', 'CHECKPOINT');

    Para usar esta classe em aplicações globais e com escopo, use sn_hw identificador de namespace. O plug-in History Walk (com.glide.history_walker) habilitado por padrão é necessário para acessar o. HistórioWalker API.

    HistoryWALK - HistoryWALK(cadeia de caracteres tablename, cadeia de caracteres SYSID, cadeia de caracteres walker)

    Instancia o objeto HistoryWalk e recupera os dados históricos do registro do Glide especificado.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    tableName Cadeia de caracteres Nome da tabela que contém o registro a ser recuperado.
    sysId Cadeia de caracteres Sys_id do registro cujos dados históricos você deseja recuperar.
    caminhante Cadeia de caracteres Opcional. Nome do analisador de histórico a ser usado para recuperar os dados históricos do registro especificado.
    Valores válidos:
    • AUDITORIA
    • PONTO DE VERIFICAÇÃO
    • HISTÓRICO
    • OFF-LINE

    Padrão: Caminhante especificado na propriedade do sistema com.snc.walker.default.

    O exemplo de código a seguir mostra como chamar este método para percorrer as mudanças feitas no GlideRecord usando o andador de ponto de verificação.

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

    Saída:

    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

    HistoryWALK - HistoryWALK(cadeia de caracteres tablename, cadeia de caracteres SYSID, boolian useAudit)

    Busca o registro do banco de dados com base nos parâmetros, usando Conjuntos de histórico ou Dados de auditoria para recuperar os dados históricos, dependendo do terceiro parâmetro.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    tableName Cadeia de caracteres Nome da tabela que contém o registro a ser recuperado.
    sysId Cadeia de caracteres Sys_id do registro a ser recuperado.
    UseAudit Booliano Sinalizador que indica se os dados de auditoria devem ser usados para recuperar a data do histórico.
    Valores válidos:
    • Verdadeiro: Use dados de auditoria para recuperar a data do histórico.
    • Falso: Use o conjunto de históricos para recuperar a data do histórico.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    Incident priority in update number 3 was 4

    HistoryWalk - getUpdateNumber()

    Obtém o número de atualização do registro do Glide caminhado atual.

    Tabela 3. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 4. Retorna
    Tipo Descrição
    Número inteiro Número da atualização atual ou -1 se o registro não for encontrado.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    Update number: 3

    HistoryWalk - getwalkedRecord()

    Preenche o registro com os dados de histórico/auditoria depois de caminhar para um número de atualização.

    Tabela 5. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 6. Retorna
    Tipo Descrição
    GlideRecord GlideRecord caminhado.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

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

    HistoryWalk - getwalkedRecordCopy()

    Retorna uma cópia do registro preenchido com os dados de histórico/auditoria após caminhar para um número de atualização.

    Nota:
    . ObRegistro walked() O método pode modificar o walkedRecord obtido após caminhar para outro número de atualização. . ObArquiçãoRegistraDeArquivoWalked() o método obtém um clone para o registro de caminhada para evitar isso.
    Tabela 7. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 8. Retorna
    Tipo Descrição
    GlideRecord Cópia do GlideRecord caminhado.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

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

    IsFieldLevelSecurity()

    Especifica se o acesso de leitura no nível de registro é aplicado ao registro ao recuperar do banco de dados.

    Tabela 9. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 10. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se a segurança no nível de campo está habilitada.
    Valores válidos:
    • Verdadeiro: A segurança no nível de campo está habilitada.
    • Falso: A segurança no nível de campo não está habilitada.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    Field level security is active: true

    IsRecordLevelSecurity()

    Especifica se o acesso de leitura no nível de registro é aplicado ao registro ao recuperar do banco de dados.

    Tabela 11. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 12. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se a segurança no nível de registro está habilitada.
    Valores válidos:
    • Verdadeiro: A segurança em nível de registro está habilitada.
    • Falso: A segurança no nível de registro não está habilitada.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    Record level security is active: true

    HistoryWalk - isWithChanges()

    Especifica se qualquer um dos métodos que percorre o registro de uma atualização para outra oferece suporte aos dados de "Mudanças" para cada elemento.

    Tabela 13. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 14. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se o suporte a mudanças está habilitado.
    Valores válidos:
    • Verdadeiro: O suporte a mudanças está habilitado.
    • Falso: O suporte a mudanças não está habilitado.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    Changes is active: true

    HistoryWalk - isWithJournalFields()

    Especifica se os campos de tipo de registro são preenchidos a partir dos valores históricos.

    Tabela 15. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 16. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se os campos de registro estão preenchidos.
    Valores válidos:
    • Verdadeiro: Os campos de diário estão preenchidos.
    • Falso: Os campos de diário não estão preenchidos.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    Populating journal fields is active: false

    HistoryWalk - isWithVariables()

    Especifica se os valores são definidos para variáveis registradas no histórico.

    Tabela 17. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 18. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se os valores estão definidos para variáveis registradas no histórico.
    Valores válidos:
    • Verdadeiro: Os valores estão definidos.
    • Falso: Os valores não estão definidos.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    Populating variables is active: false

    HistoryWalk - setFieldLevelSecurity(fieldLevelSecurity)

    Define o acesso de leitura no nível do campo em cada elemento antes de definir o valor histórico desse elemento no GlideRecord. Se a segurança no nível de campo estiver habilitada, ela impedirá que a API preencha os campos do registro de caminhada aos quais o usuário da API não tem acesso.

    Tabela 19. Parâmetros
    Nome Tipo Descrição
    FielLevelSecurity Booliano Sinalizador que indica como definir a segurança de acesso de leitura no nível do campo.
    Valores válidos:
    • Verdadeiro: Habilite a segurança em nível de campo.
    • Falso: Desabilita a segurança no nível do campo.

    Padrão: verdadeiro

    Tabela 20. Retornos
    Tipo Descrição
    vazio

    O exemplo de código a seguir mostra como chamar este método.

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

    Define o acesso de leitura em nível de registro no registro ao recuperar do banco de dados. A segurança em nível de registro impede que a API recupere o registro de caminhada se o usuário da API não tiver acesso ao GlideRecord.

    Tabela 21. Parâmetros
    Nome Tipo Descrição
    Nível de segurança de registro Booliano Sinalizador que indica como definir a segurança de acesso de leitura no nível de registro.
    Valores válidos:
    • Verdadeiro: Habilite a segurança no nível de registro.
    • Falso: Desabilita a segurança no nível de registro.

    Padrão: verdadeiro

    Tabela 22. Retornos
    Tipo Descrição
    vazio

    O exemplo de código a seguir mostra como chamar este método.

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

    HistoryWalk - setWithChanges(boolian withChanges)

    Define o suporte de dados "Mudanças" para cada elemento de um método que percorre o registro de uma atualização para outra.

    Tabela 23. Parâmetros
    Nome Tipo Descrição
    ComMudanças Booliano Sinalizador que indica se os dados de mudanças são compatíveis com cada elemento.
    Valores válidos:
    • Dados de mudança são compatíveis com cada elemento.
    • Dado de mudança não é compatível com cada elemento.

    Padrão: verdadeiro

    Tabela 24. Retornos
    Tipo Descrição
    vazio

    Este exemplo de código mostra como chamar este método com suporte a dados de mudanças. Este exemplo deve ser executado no escopo global.

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

    Este exemplo de código mostra como chamar este método sem suporte a dados de mudanças. Este exemplo é executado em ambientes com escopo e globais.

    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(booliano com Campos de diário)

    Especifica se os campos de tipo de registro são preenchidos a partir dos valores históricos.

    Tabela 25. Parâmetros
    Nome Tipo Descrição
    Com Campos de diário Booliano Sinalizador que indica se campos do tipo registro devem ser incluídos.
    Valores válidos:
    • Verdadeiro: Incluir campos do tipo diário.
    • Falso: Não inclua campos do tipo diário.

    Padrão: falso

    Tabela 26. Retornos
    Tipo Descrição
    vazio

    O exemplo de código a seguir mostra como chamar este método.

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

    HistoryWalk - setWithVariables(booliano comVariables)

    Especifica se as variáveis são preenchidas a partir dos valores históricos.

    Tabela 27. Parâmetros
    Nome Tipo Descrição
    ComVariáveis Booliano Sinalizador que indica se as variáveis são preenchidas a partir dos valores históricos.
    Valores válidos:
    • Verdadeiro: As variáveis estão preenchidas.
    • Falso: As variáveis não estão preenchidas.

    Padrão: falso

    Tabela 28. Retornos
    Tipo Descrição
    vazio

    O exemplo de código a seguir mostra como chamar este método.

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

    HistoryWalk - walkBackward()

    Aplica os dados de histórico/auditoria apropriados para obter um GlideRecord caminhado ao estado quando era um número de atualização anterior. Se a contagem de atualizações anteriores estiver ausente nos dados de histórico/auditoria, ela será encaminhada para a contagem de atualizações disponíveis anteriormente.

    Tabela 29. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 30. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se foi possível caminhar até o número de atualização especificado.
    Valores válidos:
    • Verdadeiro: Pode caminhar até o número de atualização especificado.
    • Falso: Não é possível caminhar até o número de atualização especificado.

      Motivos possíveis: Já caminhou até o número de atualização 0.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    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
    

    HistoryWalk - walkForward()

    Aplica os dados de histórico/auditoria apropriados para obter um GlideRecord caminhado ao estado em que era um número de atualização a seguir. Se a próxima contagem de atualizações estiver ausente nos dados de histórico/auditoria, ela será encaminhada para a próxima contagem de atualizações disponível.

    Tabela 31. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 32. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se foi possível caminhar até o número de atualização especificado.
    Valores válidos:
    • Verdadeiro: Pode caminhar até o número de atualização especificado.
    • Falso: Não é possível caminhar até o número de atualização especificado.

      Motivos possíveis: Já caminhou até a contagem de atualizações do GlideRecord.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    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)

    Aplica os dados de histórico/auditoria apropriados para obter um GlideRecord ao estado em que estava em uma contagem de atualizações específica. Usar ObRegistro walked() ou ObArquiçãoRegistraDeArquivoWalked() Depois de caminhar até um número de atualização para recuperar o GlideRecord "caminhado".

    Nota:
    Este método não é compatível com a implementação do analisador de ponto de verificação. Ligue para HistoryWalk - walkTo (ponto de verificação de cadeia de caracteres) método ao usar o analisador de ponto de verificação.
    Tabela 33. Parâmetros
    Nome Tipo Descrição
    updateCount Inteiro Atualizar o número a ser visitado.
    Tabela 34. Retornos
    Tipo Descrição
    Booliano Sinalizador que indica se foi possível caminhar até o número de atualização especificado.
    Valores válidos:
    • Verdadeiro: Pode caminhar até o número de atualização especificado.
    • Falso: Não é possível caminhar até o número de atualização especificado.

      Motivos possíveis: A atualização solicitada é maior do que a contagem de atualizações do GlideRecord ou não há dados de histórico/auditoria para o número de atualização solicitada.

    O exemplo de código a seguir mostra como chamar este método.

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

    Saída:

    Incident priority in update number 3 was 4

    HistoryWalk - walkTo (ponto de verificação de cadeia de caracteres)

    Aplica os dados de histórico/auditoria apropriados para obter um GlideRecord ao estado em que estava para um ponto de verificação interno de registro específico. Use ObRegistro walked() ou ObArquiçãoRegistraDeArquivoWalked() Método após caminhar até o ponto de verificação interno de um registro para recuperar o GlideRecord "caminhado".

    Nota:
    Este método só é compatível com a implementação do analisador de ponto de verificação.
    Tabela 35. Parâmetros
    Nome Tipo Descrição
    ponto de verificação Cadeia de caracteres Ponto de verificação interno do registro a ser visitado. Este valor pode ser encontrado no campo internal_checkpoint da tabela Auditoria do sistema [sys_audit] ou Histórico [sys_history_line].
    Tabela 36. Retornos
    Tipo Descrição
    Booliano Sinalizador que indica se foi possível caminhar até o ponto de verificação interno do registro especificado.
    Valores possíveis:
    • Verdadeiro: Capaz de caminhar até o ponto de verificação interno do registro especificado.
    • Falso: Não é possível caminhar até o ponto de verificação interno do registro especificado.

      Motivos possíveis: O ponto de verificação interno não existe.

    O exemplo de código a seguir mostra como chamar este método para percorrer as mudanças feitas no GlideRecord.

    
    var gr_Hw = new GlideRecord('sc_req_item');
    gr_Hw.get('b0d3335d49534210f877468e89703a7c');
     
    var hw = new sn_hw.HistoryWalker(gr_Hw.getTableName(), gr_Hw.getUniqueValue(), 'CHECKPOINT');
    hw.walkTo('19096afcc800000001');
    printChangedFields(hw);
     
    function printChangedFields(hw) {
       var walkedGr = hw.getWalkedRecord();
       var fields = GlideScriptRecordUtil.get(walkedGr).getChangedFieldNames();
       gs.info('Fields changed at update ' + hw.getUpdateNumber() + ' were:');
       for (var j = 0; j < fields.size(); j++) {
          var fieldName = fields.get(j) + '';
          if (fieldName !== 'variables')
             gs.info(walkedGr.getValue('sys_updated_on') + ' ' + fieldName + '=' + walkedGr.getValue(fieldName));
       }
     
       var variables = walkedGr.variables;
       for (var variableName in variables) {
          if (variables[variableName].changes())
             gs.info(walkedGr.getValue('sys_updated_on') + ' ' + variableName + '=' + variables[variableName].getValue());
       }
       gs.info('');
    }

    Saída:

    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