Andarilho do Histórico - Com Escopo, Global

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 11 min. de leitura
  • A API Histórico do Walker usa as tabelas de auditoria/histórico para gerar uma versão histórica de um registro existente.

    Ele oferece suporte à capacidade de retornar um gliderecord para uma contagem de atualização anterior (gliderecord percorrido) com o GlideElements apropriado preenchido. Depois que o registro de glide percorrido é recuperado, a API fornece a capacidade de avançar e retroceder os números de atualização navegando por suas atualizações históricas.

    Para usar essa classe em aplicações com escopo e globais, use o identificador de namespace sn_hw. O plug-in do Histórico ( com.glide.history_walker ) que está habilitado por padrão é necessário para acessar a API do Histórico do Walker.
    Nota:
    Para atualizações off-line, a API Histórico de walker é iniciada automaticamente e os únicos dois métodos que você pode usar são: walkTo() (o argumento de entrada para este método só pode ser zero) e walkForward(). Outros métodos disponíveis não podem ser invocados para atualizações off-line.
    A API Histórico do Walker fornece duas maneiras de recuperar os dados de auditoria:
    • Usando o conjunto de históricos: uma entrada de conjunto de históricos é criada (se não estiver disponível ou não for atualizada) a partir dos dados na tabela Auditoria do sistema [sys_audit] para o registro que você percorrerá. A tabela Conjunto de históricos contém registros (Linhas de histórico) com as mudanças reais nos valores de campo que ocorreram. Os métodos da API HistóricoWalker recuperam os dados do histórico das linhas de histórico geradas, em vez de consultar a tabela sys_audit.
    • Usando a tabela de auditoria do sistema: neste caso, a API do Histórico de atividades extrai dados consultando diretamente a tabela sys_audit.

    Por padrão, ele preenche os dados para oferecer suporte aos métodos changes(), changesFrom()e changesTo() no registro orientado, bem como fornece segurança no nível de registro e campo. Além disso, ele pode permitir que os campos de diário e as variáveis também sejam preenchidos no registro de glide orientado ao percorrer as atualizações.

    Esta API permite que você:

    • Aplique os dados de histórico/auditoria apropriados para obter um gliderecord existente para o estado em que estava em uma contagem de atualização específica.
    • Instrua a API do Histórico para usar a tabela sys_audit em vez das tabelas sys_history_set/sys_history_line para recuperar seus dados.
    • Desative o controle de acesso no nível de linha.
    • Desative o controle de acesso no nível de campo.
    • Desative a recuperação e o processamento de dados de "mudanças".
    • Habilitar campos de diário.
    • Habilite variáveis.

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

    Busca o registro do banco de dados com base nos parâmetros, usando os Conjuntos de históricos para recuperar os dados históricos.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    tableName Cadeia de caracteres Nome da tabela que contém o registro a ser recuperado.
    sydId Cadeia de caracteres sys_id do registro a ser recuperado.

    Exemplo:

    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

    HistóricoWalker - HistóricoWalker(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 os 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.
    sydId Cadeia de caracteres sys_id do registro a ser recuperado.
    usarAuditoria Booliano
    • Se definido como verdadeiro, usará dados de auditoria para recuperar a data histórica.
    • Se definido como falso, usará o histórico definido para recuperar a data histórica.

    Exemplo

    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

    Andarilho do histórico - getUpdateNumber()

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

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

    Exemplo:

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

    Saída:

    Update number: 3

    Andarilho do histórico - getWalkedRecord()

    Obtém o registro preenchido com os dados de histórico/auditoria depois de ir 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.

    Exemplo:

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

    Saída:

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

    Andarilho do histórico - getWalpedRecordCopy()

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

    Nota:
    A API getWalkedRecord() pode modificar o walkRecord obtido após passar para outro número de atualização. A API getWalpedRecordCopy() obtém um clone do registro percorrido para evitar isso.
    Tabela 7. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 8. Retorna
    Tipo Descrição
    GlideRecord Uma cópia do GlideRecord percorrido.

    Exemplo:

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

    Saída:

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

    Andarilho 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 Retorna verdadeiro se a segurança no nível de campo estiver habilitada, caso contrário, retorna falso.

    Exemplo:

    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

    Andarilho 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 Retorna verdadeiro se a segurança em nível de registro estiver habilitada, caso contrário, retorna falso.

    Exemplo:

    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

    Andarilho do histórico - isWithChanges()

    Especifica se algum dos métodos que percorrem o registro de uma atualização para outra oferece suporte aos dados de "mudanças" de cada elemento.

    Tabela 13. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 14. Retorna
    Tipo Descrição
    Booliano Retorna verdadeiro se o suporte a mudanças estiver habilitado, caso contrário, retorna falso.

    Exemplo:

    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

    Andarilho do histórico - 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 Retorna verdadeiro se os campos de diário estiverem preenchidos, caso contrário, retorna falso.

    Exemplo:

    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

    Andarilho 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 Retorna verdadeiro se incluir valores para variáveis, caso contrário, retorna falso.

    Exemplo:

    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

    HistóricoWalker - 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 percorrido aos quais o usuário da API não tem acesso.

    Tabela 19. Parâmetros
    Nome Tipo Descrição
    fieldLevelSecurity Booliano Se definido como verdadeiro, a segurança no nível de campo será habilitada. O valor padrão é verdadeiro.
    Tabela 20. Retorna
    Tipo Descrição
    vazio

    Exemplo:

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

    HistóricoWalker - setRecordLevelSecurity(booliano recordLevelSecurity)

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

    Tabela 21. Parâmetros
    Nome Tipo Descrição
    recordLevelSecurity Booliano Se definido como verdadeiro, a segurança de acesso de leitura no nível de registro será habilitada. O valor padrão é verdadeiro.
    Tabela 22. Retorna
    Tipo Descrição
    vazio

    Exemplo:

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

    Andarilho do Histórico - setWithChanges(booliano comMudanças)

    Define o suporte de 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.
    • false: 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());
    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("");
    }

    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);
    hw.walkTo(0);
    do {
        var oldPriority = hw.getWalkedRecord().priority;
        gs.info('Incident priority in update number ' + hw.getUpdateNumber() + ' was ' + oldPriority);
    } while (hw.walkForward());
    

    HistóricoWalker - setWithJournalFields(booliano withJournalFields)

    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
    withJournalFields Booliano Se definido como verdadeiro, inclua campos de tipo de registro. O valor padrão é falso.
    Tabela 26. Retorna
    Tipo Descrição
    vazio

    Exemplo:

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

    Andarilho do Histórico - setWithVariables(booliano comVariáveis)

    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 Se definido como verdadeiro, os valores serão preenchidos para as variáveis. O valor padrão é falso.
    Tabela 28. Retorna
    Tipo Descrição
    vazio

    Exemplo:

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

    Andarilho do histórico - walkBackward()

    Aplica os dados de histórico/auditoria apropriados para obter um GlideRecord percorrido para o estado quando ele era um número de atualização retroativo. Se a contagem de atualizações anteriores estiver ausente nos dados de histórico/auditoria, ela retornará à contagem de atualizações anteriores disponíveis.

    Tabela 29. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 30. Retorna
    Tipo Descrição
    Booliano Retorna verdadeiro se for possível ir até o número de atualização especificado. Else, retorna falso, por exemplo, se já caminhou para o número de atualização 0.

    Exemplo:

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

    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
    

    Andarilho do Histórico - walkForward()

    Aplica os dados de histórico/auditoria apropriados para obter um GlideRecord percorrido para o estado quando ele estava um número de atualização à frente. Se a próxima contagem de atualizações estiver ausente nos dados de histórico/auditoria, ele seguirá 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 Retorna verdadeiro se for possível ir até o número de atualização especificado. Senão, retorna falso, por exemplo, se já caminhou para a contagem de atualizações do GlideRecord.

    Exemplo:

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

    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
     

    Andarilho do Histórico - walkTo(int updateCount)

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

    Tabela 33. Parâmetros
    Nome Tipo Descrição
    updateCount Inteiro O número de atualização para o qual ir.
    Tabela 34. Retorna
    Tipo Descrição
    Booliano verdadeiro se for possível ir até o número de atualização especificado; caso contrário, falso, por exemplo, se a atualização solicitada for maior do que a contagem de atualizações do GlideRecord ou se não houver dados de histórico/auditoria do número de atualização solicitado

    Exemplo:

    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