
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Artigo: Consultas Avançadas à Tabela sys_audit
com GlideRecord: Um Guia para Desenvolvedores e Administradores
Introdução: A Tabela sys_audit
como Fonte de Governança e Segurança
No ecossistema ServiceNow, a tabela sys_audit
é muito mais do que um simples registro de atividades. Ela é a espinha dorsal da rastreabilidade e governança, capturando automaticamente as mudanças em campos auditados em qualquer registro do sistema. Para desenvolvedores e administradores, dominar a interação com essa tabela não é apenas uma habilidade técnica; é uma competência fundamental para a segurança da informação e a conformidade regulatória.
Em sintonia o ServiceNow, que enfatiza a importância de uma gestão robusta e uma cultura de melhoria contínua, o uso eficaz da sys_audit
permite auditar a trilha completa das alterações. Isso se alinha diretamente com o princípio de "Colaborar e Promover Visibilidade", garantindo que todas as partes interessadas possam rastrear e entender a evolução dos registros. A seguir, exploraremos como usar o poder do GlideRecord para extrair o máximo de valor dessa tabela, indo além do básico e incorporando boas práticas de desenvolvimento.
>> System Definition > Tables
Search by =sys_audit
https://<instance>.service-now.com/now/nav/ui/classic/params/target/sys_db_object.do%3Fsys_id%3D9c0a70109000021087de3cfccdb0d6e5%26sysparm_record_target%3Dsys_db_object%26sysparm_record_row%3D1%26sysparm_record_rows%3D1%26sysparm_record_list%3Dsys_update_nameISNOTEMPTY%255Ename%253Dsys_audit%255EORDERBYDESCsys_updated_on
Fundamentos do GlideRecord para sys_audit
O GlideRecord é a API mais comum no ServiceNow para interagir com o banco de dados. Ele atua como um invólucro (wrapper) sobre as linhas da tabela, permitindo a execução de operações CRUD (Create, Read, Update, Delete). Para a tabela sys_audit
, o uso do GlideRecord é crucial para:
-
Consultar (Select): Encontrar e iterar sobre registros que atendem a critérios específicos (ex: todas as mudanças em um Incidente ou a alteração de um campo específico).
-
Inserir (Insert): Raramente usada em produção, mas útil para testes ou cenários de carga de dados históricos.
-
Atualizar (Update): Semelhante à inserção, é usada com cautela, principalmente em scripts de correção ou manutenção.
A principal força do GlideRecord está na sua capacidade de construir consultas complexas de forma programática, garantindo que a lógica de negócio seja aplicada com precisão.
Como testar / debugar o seu script?
System Definition > Scripts - Background
Exemplo para Update
//
var ObjAudit = new GlideRecord("sys_audit");
ObjAudit.addQuery("documentkey", "14d1e2de0fe20300975587ece1050e65");
ObjAudit.orderByDesc('sys_created_on');
ObjAudit.query();
ObjAudit.next();
gs.print("documentkey=" + ObjAudit.documentkey);
gs.print("fieldname=" + ObjAudit.fieldname);
gs.print("internal_checkpoint=" + ObjAudit.internal_checkpoint);
gs.print("internal_checkpoint=" + ObjAudit.internal_checkpoint);
gs.print("newvalue=" + ObjAudit.newvalue);
gs.print("oldvalue=" + ObjAudit.oldvalue);
gs.print("reason=" + ObjAudit.reason);
gs.print("sys_created_by=" + ObjAudit.sys_created_by);
gs.print("sys_created_on=" + ObjAudit.sys_created_on);
gs.print("sys_created_on=" + ObjAudit.sys_created_on);
gs.print("sys_id=" + ObjAudit.sys_id);
gs.print("tablename=" + ObjAudit.tablename);
gs.print("user=" + ObjAudit.user);
ObjAudit.user.setValue("TestA");
ObjAudit.update();
//
Exemplo para Insert
var ObjAudit = new GlideRecord("sys_audit");
ObjAudit.initialize();
ObjAudit.documentkey ="14d1e2de0fe20300975587ece1050e65";
ObjAudit.fieldname = "Attachment";
ObjAudit.sys_created_on = "2017-11-27 10:41:39";
ObjAudit.newvalue = "new attach";
ObjAudit.sys_created_by = "Tiago Macul";
ObjAudit.user = "Tiago Macul";
ObjAudit.insert();
Onde verificar:
XML
<xml>
<fieldname>short_description</fieldname>
<internal_checkpoint>15fea2ae3830000001</internal_checkpoint>
<newvalue>teste update 10</newvalue>
<oldvalue>teste update 9</oldvalue>
<reason/>
<record_checkpoint>41</record_checkpoint>
<sys_created_by>admin</sys_created_by>
<sys_created_on>2017-11-23 18:36:40</sys_created_on>
<sys_id>e3c29b2a0f2e0300975587ece1050ecd</sys_id>
<tablename>incident</tablename>
<user>TestA</user>
</sys_audit>
</xml>
Rest API Explorer
https://<InstanceName>.service-now.com/nav_to.do?uri=/$restapi.do
WSDL
https://<InstanceName>.service-now.com/api/now/table/sys_audit?sysparm_limit=1
WSDL Response Body
{
"result": [
{
"fieldname": "version",
"reason": "",
"sys_id": "21737a1337210200f212cc028e41f1ae",
"newvalue": "1.0",
"sys_created_on": "2015-04-22 22:27:44",
"documentkey": "27d3f35cc0a8000b001df42d019a418f",
"internal_checkpoint": "14ef5ad7c3b0000001",
"record_checkpoint": "10",
"tablename": "cmdb_ci_service",
"user": "admin",
"oldvalue": "",
"sys_created_by": "admin"
}
]
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.