logo

NJP

Desvendando o Histórico no ServiceNow: GlideRecord, sys_history_set, sys_history_line e sys_audit

New article articles in ServiceNow Community · Feb 26, 2025 · article

tiagomacul_0-1740608225899.png

No universo do ServiceNow, rastrear as mudanças e atividades em registros é crucial para auditoria, depuração e entendimento do fluxo de trabalho. É aí que entram em cena as tabelas sys_history_set, sys_history_line e sys_audit, juntamente com o poder do GlideRecord.

GlideRecord: A Porta de Entrada para o Histórico

O GlideRecord é a ferramenta essencial para interagir com as tabelas do ServiceNow através de scripts. Com ele, podemos consultar, inserir, atualizar e deletar registros em qualquer tabela, incluindo as de histórico.

sys_history_set: O Agrupador de Mudanças

A tabela sys_history_set funciona como um contêiner, agrupando todas as mudanças realizadas em um registro em um determinado momento. Cada registro nesta tabela representa um conjunto de mudanças.

sys_history_line: O Detalhamento das Mudanças

A tabela sys_history_line detalha as mudanças individuais dentro de um conjunto. Cada registro nesta tabela representa uma mudança específica em um campo do registro.

sys_audit: O Registro Completo de Auditoria

A tabela sys_audit é o registro completo de auditoria do ServiceNow. Ela armazena todas as mudanças realizadas em registros auditados, incluindo informações como o usuário que realizou a mudança, a data e hora da mudança, e os valores antigo e novo do campo alterado.

Como usar essas tabelas em scripts?

var grHistorySet = new GlideRecord('sys_history_set'); grHistorySet.addQuery('id', 'SYS_ID_DO_REGISTRO'); // Substitua pelo sys_id do registro grHistorySet.query(); while (grHistorySet.next()) { // Acessar os registros sys_history_line relacionados var grHistoryLine = new GlideRecord('sys_history_line'); grHistoryLine.addQuery('set', grHistorySet.sys_id); grHistoryLine.query(); while (grHistoryLine.next()) { // Acessar os detalhes da mudança gs.log('Campo: ' + grHistoryLine.element + ', Valor antigo: ' + grHistoryLine.oldvalue + ', Valor novo: ' + grHistoryLine.newvalue); } }

Acessando o Registro de Auditoria com GlideRecord:

var grAudit = new GlideRecord('sys_audit'); grAudit.addQuery('documentkey', 'SYS_ID_DO_REGISTRO'); // Substitua pelo sys_id do registro grAudit.query(); while (grAudit.next()) { // Acessar os detalhes da auditoria gs.log('Campo: ' + grAudit.fieldname + ', Valor antigo: ' + grAudit.oldvalue + ', Valor novo: ' + grAudit.newvalue + ', Usuário: ' + grAudit.sys_created_by); }

Sample

varTarget = ""; var grRecord = new GlideRecord("task"); grRecord.addQuery("sys_id", "1cf6094d1b99201070f10f60f54bcb2f"); grRecord.query(); if (grRecord.next()) { varTarget = grRecord.getValue("sys_id"); gs.log("number = " + grRecord.number.getDisplayValue()); } var LineID = ""; var grSet = new GlideRecord("sys_history_set"); grSet.addQuery("id", varTarget); grSet.query(); if (grSet.next()) { gs.log("ID = " + grSet.id.getDisplayValue()); LineID = grSet.getValue("sys_id"); } var grLine =new GlideRecord("sys_history_line"); grLine.addQuery("set", LineID); grLine.query(); if (grLine.next()) { gs.log("Line ID = " + grLine.set.getDisplayValue()); } var grAudit = new GlideRecord("sys_audit"); grAudit.addQuery("documentkey", varTarget); grAudit.query(); if (grAudit.next()) { gs.log("audit = " + grAudit.sys_id.getDisplayValue()) }

tiagomacul_1-1740608274308.png

Considerações Importantes:

  • Desempenho: Consultar grandes volumes de dados de histórico pode impactar o desempenho da plataforma. Utilize filtros e queries eficientes.
  • Permissões: Verifique as permissões dos usuários que executam os scripts para garantir que eles tenham acesso às tabelas de histórico.
  • Boas práticas: Utilize as APIs e funções do ServiceNow para acessar e manipular os dados de histórico, evitando consultas diretas ao banco de dados sempre que possível.

As tabelas sys_history_set, sys_history_line e sys_audit, combinadas com o poder do GlideRecord, oferecem um conjunto de ferramentas robusto para rastrear e analisar as mudanças em registros no ServiceNow. Dominar essas ferramentas é essencial para administradores, desenvolvedores e auditores que desejam ter um controle completo sobre o histórico da plataforma.

tiagomacul_2-1740608291066.jpeg

Listando meus Artigos/ publicados

View original source

https://www.servicenow.com/community/brazil-snug/desvendando-o-hist%C3%B3rico-no-servicenow-gliderecord-sys-history/ta-p/3189775