Caminhante do histórico - com escopo, global

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 19 min. de leitura
  • A API do Histórico do Caminhante 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 de glide especificado.

    Esta API fornece a capacidade de retornar um GlideRecord para uma contagem de atualização anterior (GlideRecord andou) com os elementos glide apropriados preenchidos. Depois que o GlideRecord orientado é 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 a API do Caminhante do Histórico a usar uma implementação de walker de histórico específica para recuperar dados de auditoria.
    • Navegue pela versão histórica de um registro de glide.
    • Aplique os dados de histórico/auditoria apropriados para colocar um GlideRecord existente no estado em que estava em uma contagem de atualização específica.
    • Desative o controle de acesso no nível da linha.
    • Desative o controle de acesso no nível de campo.
    • Desative a recuperação e o processamento de dados de "mudanças".
    • Habilite campos de diário.
    • Habilite variáveis.

    A API do SuccessWalker fornece quatro maneiras de recuperar dados de auditoria:

    1. HISTORY - Caminhante do histórico

      Se não estiver disponível ou não estiver atualizado, cria um registro de conjunto de históricos [ sys_history_set ] para o registro do glide que você passou ao instanciar a API do Histórico de walker, usando os dados na tabela Auditoria do sistema [sys_audit]. A tabela sys_history_set contém o nome da tabela Histórico [sys_history_line] associada. 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, os métodos de Histórico de Caminhada recuperam dados de 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 do campo Atualizar [update] em vez de por ordem cronológica. O campo de atualização está vagamente associado ao campo Atualizações [sys_mod_count] na tabela de tarefas.
      Nota:
      As atualizações do sys_mod_count pelos clientes não são sincronizadas e, portanto, podem ser substituídas, tornando essa contagem não confiável.
    2. AUDIT – Andarilho de auditoria

      Consulta a tabela sys_audit para o registro do glide que você passou ao instanciar a API do Histórico de Caminhada. 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á vagamente associado ao campo Atualizações [sys_mod_count] na tabela de tarefas. A correlação de um para um não é garantida.

      Itens a considerar ao decidir se deve usar o método de recuperação AUDIT:
      • Tamanho da tabela sys_audit. A tabela sys_audit pode se tornar muito grande, pois as mudanças em todos os campos em todos os registros são mantidas nesta tabela.
      • Possível falta de registro de atualização 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", fazendo com que a API doHistoryWalker faça um processamento adicional para contabilizar essas informações ausentes.
      Como tal, a execução da API do Histórico de walkers com AUDIT não tem o mesmo desempenho de HISTORY ou de checkpoint.
    3. checkpoint - walker 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 percorrido tiver um sys_mod_count que exceda o valor definido nesta propriedade, valor padrão = 1.000, o walker 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.

      O motivo dessa verificação é que a tabela sys_history_set fornece uma abordagem com melhor desempenho para dados de histórico de caminhada, mas somente até um determinado ponto. Quando o número total de atualizações de campo atinge um determinado nível, aproximadamente 10K, 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 inferiores em desempenho do que a execução na tabela sys_audit que contém todas as atualizações de tabela. O walker do ponto de verificação usa o com.glide.history_walker.max_history_count para determinar 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 walker do ponto de verificação e outros walkers é que os outros walkers são vinculados e orientados pelas entradas task.sys_mod_count e relacionados a sys_audit.record_checkpoint e sys_history_line.update. O walker do ponto de verificação usa os campos sys_audit.internal_checkpoint e sys_history_line.internal_checkpoint, respectivamente.

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

    4. OFF-LINE - Andador de histórico off-line

      Fornece o recurso de histórico off-line usado por aplicações como o aplicativo móvel off-line para 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 walker de histórico offline é executado independentemente de qualquer propriedade ou instrução explícita para usar outro walker. O walker de histórico off-line usa as tabelas sys_history_line e sys_history_set, que contêm dados de histórico ordenados propositalmente por data e hora, para oferecer suporte a atualizações off-line. Somente o orientador do histórico off-line pode fornecer resultados precisos para essas tabelas.

      Nota:
      Para atualizações off-line, a API do Histórico de Caminhada é iniciada automaticamente e os únicos dois métodos que você pode usar são: walkTo(0) e walkForward(). Você não pode chamar outros métodos de Caminhada do Histórico para atualizações off-line.

    A propriedade do sistema com.snc.walker.default define o tipo padrão de referência de registro a ser executada ao instanciar a API do Histórico de Caminhada. Para fazer upgrade de clientes, esta propriedade é definida como "HISTORY". Para novos clientes, esta propriedade é definida como "CHECKPOINT".

    Quando você instancia a API do Histórico de Caminhadas da seguinte forma, a propriedade com.snc.walker.default determina qual implementação de walker de registros a API usa.
    var hw = new sn_hw.HistoryWalker(<table name>, <sys_id>);
    Você também pode passar o tipo de record walker a ser usado ao instanciar a API. É aconselhável sempre incluir a implementação do walker 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 com escopo e globais, use o identificador de namespace sn_hw. O plug-in do Caminhante do histórico ( com.glide.history_walker ) que está habilitado por padrão é necessário para acessar a API do Caminhante do Histórico.

    HistóricoWalker - HistóricoWalker(cadeia de caracteres "tableName", cadeia de caracteres "sysId", "cadeia de caracteres walker")

    Instancia o objeto "HistoryWalker" e recupera os dados históricos do registro de 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.
    andador Cadeia de caracteres Opcional. Nome do pesquisador 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: walker 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 walker do 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

    CaminhadaDeHistória - CaminhadaDeHistória(cadeia de caracteres "tableName", cadeia de caracteres sysId, booliano "useAudit")

    Busca o registro do banco de dados com base nos parâmetros, usando os conjuntos de históricos 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.
    usarAuditoria Booliano Sinalizador que indica se dados de auditoria devem ser usados para recuperar a data histórica.
    Valores válidos:
    • verdadeiro: use dados de auditoria para recuperar a data histórica.
    • falso: use o conjunto de históricos para recuperar a data histórica.

    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

    Caminhante do histórico - getUpdateNumber()

    Obtém o número de atualização do registro atual de glide andado.

    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

    Caminhante do histórico - getWalkedRecord()

    Obtém o registro preenchido 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 O GlideRecord percorrido.

    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

    Caminhante do histórico - getWalkedRecordCopy()

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

    Nota:
    O método getWalkedRecord() pode modificar o walkRecord obtido após caminhar para outro número de atualização. O método getWalkedRecordCopy() obtém um clone do registro andado para evitar isso.
    Tabela 7. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 8. Retorna
    Tipo Descrição
    GlideRecord Cópia do GlideRecord orientado.

    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

    Caminhante do histórico - 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 do campo está habilitada.
    Valores válidos:
    • verdadeiro: a segurança no nível do campo está habilitada.
    • falso: a segurança no nível do 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

    Caminhante do histórico - 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 no nível do registro está habilitada.
    • falso: a segurança no nível do 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

    Caminhante do histórico - isWithChanges()

    Especifica se algum dos métodos que percorrem o registro de uma atualização para outra é compatível com os 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 à mudança está habilitado.
    Valores válidos:
    • verdadeiro: o suporte à mudança está habilitado.
    • falso: o suporte à mudança 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

    Caminhante do histórico - isWithJournalFields()

    Especifica se os campos de tipo de diário 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 diário estão preenchidos.
    Valores válidos:
    • verdadeiro: os campos de diário estão preenchidos.
    • falso: os campos de diário não sã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

    Caminhante do histórico - 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

    Caminhante do histórico - setFieldLevelSecurity(Booliano fieldLevelSecurity)

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

    Tabela 19. Parâmetros
    Nome Tipo Descrição
    fieldLevelSecurity Booliano Sinalizador que indica como definir a segurança de acesso de leitura no nível do campo.
    Valores válidos:
    • verdadeiro: habilitar a segurança no nível do campo.
    • falso: desabilita a segurança no nível do campo.

    Padrão: verdadeiro

    Tabela 20. Retorna
    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();

    Caminhante do histórico - setRecordLevelSecurity(Booliano recordLevelSecurity)

    Define o acesso de leitura no nível de registro ao recuperar do banco de dados. A segurança no nível do 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
    recordLevelSecurity Booliano Sinalizador que indica como definir a segurança de acesso de leitura no nível do registro.
    Valores válidos:
    • verdadeiro: habilitar a segurança no nível do registro.
    • falso: desabilita a segurança no nível do registro.

    Padrão: verdadeiro

    Tabela 22. Retorna
    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();

    Caminhante do Histórico - setWithChanges(Booliano withChanges)

    Define o suporte a dados de "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:
    • verdadeiro: os dados de mudança são compatíveis com cada elemento.
    • falso: os dados de mudança não são compatíveis com cada elemento.

    Padrão: verdadeiro

    Tabela 24. Retorna
    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);
    }

    Caminhante do Histórico - setWithJournalFields(Booliano withJournalFields)

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

    Tabela 25. Parâmetros
    Nome Tipo Descrição
    withJournalFields Booliano Sinalizador que indica se os campos do tipo de diário devem ser incluídos.
    Valores válidos:
    • verdadeiro: inclui campos do tipo diário.
    • falso: não inclui campos do tipo diário.

    Padrão: falso

    Tabela 26. Retorna
    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);
    }

    Caminhante do Histórico - setWithVariables(Booliano withVariables)

    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 são preenchidas.
    • falso: as variáveis não são preenchidas.

    Padrão: falso

    Tabela 28. Retorna
    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);
    }
    

    Caminhante do histórico - walkBackward()

    Aplica os dados de histórico/auditoria apropriados para obter um GlideRecord andado para o estado em que era um número de atualização para trás. Se a contagem de atualizações anterior estiver ausente nos dados de histórico/auditoria, ele passará para a contagem de atualizações disponível anterior.

    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: capaz de caminhar até o número de atualização especificado.
    • falso: não é possível caminhar até o número de atualização especificado.

      Possíveis motivos: já caminhou para a atualização número 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
    

    Caminhante do histórico - walkForward()

    Aplica os dados de histórico/auditoria apropriados para obter um GlideRecord andado para o estado em que era um número de atualização à frente. Se a contagem da próxima atualização estiver ausente nos dados de histórico/auditoria, ela passará 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: capaz de caminhar até o número de atualização especificado.
    • falso: não é possível caminhar até o número de atualização especificado.

      Possíveis motivos: já caminhou para 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
     

    Caminhante do histórico - walkTo(int updateCount)

    Aplica os dados de histórico/auditoria apropriados para colocar um GlideRecord no estado em que estava em uma contagem de atualização específica. Use getWalkedRecord() ou getWalkedRecordCopy() depois de caminhar para um número de atualização para recuperar o GlideRecord "caminhado".

    Nota:
    Este método não é compatível com a implementação do walker do ponto de verificação. Chame o método Caminhante do Histórico - walkTo(ponto de verificação de cadeia de caracteres) ao usar o walker do ponto de verificação.
    Tabela 33. Parâmetros
    Nome Tipo Descrição
    updateCount Inteiro Atualize o número para o qual caminhar.
    Tabela 34. 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: capaz de caminhar até o número de atualização especificado.
    • falso: não é possível caminhar até o número de atualização especificado.

      Possíveis motivos: 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 solicitado.

    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

    Caminhante do Histórico - walkTo(ponto de verificação de cadeia de caracteres)

    Aplica os dados de histórico/auditoria apropriados para colocar um GlideRecord no estado em que estava para um ponto de verificação interno de registro específico. Use o método getWalkedRecord() ou getWalkedRecordCopy() depois de 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 walker do 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 para o qual caminhar. Você pode encontrar este valor no campo internal_checkpoint da tabela Auditoria do sistema [sys_audit] ou Histórico [sys_history_line].
    Tabela 36. Retorna
    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.

      Possíveis motivos: 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