GlideRecord vs GlideAggregate: Qual Usar e Quando?

code, coding, computer, data, developing, development, ethernet, html, programmer, programming, screen, software, technology, work, code, code, coding, coding, coding, coding, coding, computer, computer, computer, computer, data, programming, programming, programming, software, software, technology, technology, technology, technology

No desenvolvimento de soluções na plataforma ServiceNow, é comum nos depararmos com a necessidade de buscar e manipular dados diretamente nas tabelas do sistema. Dois dos objetos mais utilizados para esse fim são o GlideRecord e o GlideAggregate. Embora ambos sirvam para interagir com registros de tabelas, cada um possui finalidades distintas e deve ser aplicado com consciência para garantir performance, clareza de código e eficiência operacional.

Neste artigo, explico as principais diferenças entre GlideRecord e GlideAggregate, e apresento cenários práticos que ajudarão você a escolher a ferramenta certa para cada situação.


O que é GlideRecord?

O GlideRecord é o objeto mais amplamente utilizado para recuperar, inserir, atualizar e deletar registros em tabelas do ServiceNow. Ele fornece uma interface completa para navegação e manipulação de dados linha a linha.

Exemplo de uso:

var gr = new GlideRecord('incident');
gr.addQuery('priority', 1);
gr.query();

while (gr.next()) {
gs.info('Número do incidente: ' + gr.number);
}

Neste exemplo, recuperamos todos os incidentes com prioridade 1 e iteramos sobre cada um deles. Esse tipo de abordagem é ideal quando precisamos acessar dados individuais e suas propriedades diretamente.


O que é GlideAggregate?

O GlideAggregate é utilizado para realizar cálculos e agregações sobre os dados de uma tabela, como contagens, somas, médias, máximos e mínimos. Ele funciona de maneira semelhante ao GROUP BY em SQL.

Exemplo de uso:

var ga = new GlideAggregate('incident');
ga.addAggregate('COUNT');
ga.addQuery('priority', 1);
ga.query();

if (ga.next()) {
gs.info('Total de incidentes com prioridade 1: ' + ga.getAggregate('COUNT'));
}

Este exemplo mostra como obter a quantidade total de incidentes com prioridade 1, sem precisar iterar sobre cada registro individualmente, o que resulta em muito melhor performance em tabelas grandes.


Principais Diferenças

CaracterísticaGlideRecordGlideAggregate
Tipo de operaçãoLeitura, inserção, atualização, exclusãoSomente leitura com agregações
PerformancePode ser mais pesado com grandes volumesMais leve para operações agregadas
Acesso a cada registroSimNão (retorna apenas valores agregados)
Suporte a funções de grupoNãoSim (COUNT, SUM, AVG, MIN, MAX, etc.)
Uso de GROUP BYNãoSim (via groupBy('campo'))

Quando Usar GlideRecord?

Use o GlideRecord quando:

  • Você precisa iterar sobre registros.
  • Precisa ler ou modificar campos específicos de registros.
  • Vai realizar operações CRUD (Create, Read, Update, Delete).
  • A lógica do seu script depende de valores campo a campo.

Exemplo real:

Listar todos os incidentes atribuídos a um grupo específico e atualizá-los:

var gr = new GlideRecord('incident');
gr.addQuery('assignment_group', '<<group_sys_id>>');
gr.query();

while (gr.next()) {
gr.state = 2; // Em progresso
gr.update();
}

Quando Usar GlideAggregate?

Use o GlideAggregate quando:

  • Precisa de estatísticas ou métricas agregadas.
  • Quer contar registros sem trazer todos eles.
  • Deseja obter média, máximo ou mínimo de um campo.
  • Deseja agrupar registros por um campo e aplicar uma função.

Exemplo real:

Contar o número de incidentes abertos por grupo:

var ga = new GlideAggregate('incident');
ga.addQuery('active', true);
ga.addAggregate('COUNT');
ga.groupBy('assignment_group');
ga.query();

while (ga.next()) {
gs.info('Grupo: ' + ga.assignment_group + ' | Total: ' + ga.getAggregate('COUNT'));
}

Considerações de Performance

Em ambientes corporativos com grande volume de dados, a escolha entre GlideRecord e GlideAggregate impacta diretamente no desempenho da aplicação. Sempre que for possível utilizar GlideAggregate para substituições de contagens manuais com GlideRecord, essa deve ser a escolha preferencial.

Além disso, o GlideAggregate faz com que o banco de dados execute a agregação diretamente, retornando apenas os valores necessários, enquanto o GlideRecord traz todos os registros para o script manipulá-los.


Conclusão

Ambos os objetos são ferramentas poderosas no arsenal de um desenvolvedor ServiceNow. Compreender suas diferenças e aplicá-los corretamente é essencial para desenvolver soluções eficientes, escaláveis e alinhadas às boas práticas da plataforma.

Regra geral:

  • Precisa de dados individuais → GlideRecord
  • Precisa de estatísticas ou agregações → GlideAggregate

Aprofundar-se nesses recursos e saber escolher o mais adequado em cada cenário é o que diferencia um bom desenvolvedor de um excelente arquiteto de soluções.

No responses yet

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *