GlideQuery - com escopo, global
A inclusão de script GlideQuery é uma alternativa à API GlideRecord para executar operações CRUD em dados de registro de scripts do lado do servidor.
A inclusão de script GlideQuery permite:
- Use objetos e tipos JavaScript padrão para consultas e resultados.
- Diagnostique rapidamente erros de consulta com verificações adicionais e mensagens de erro claras.
- Simplifique seu código evitando padrões de consulta clichê.
- Evite problemas comuns de desempenho sem precisar de um conhecimento mais profundo do GlideRecord.
new global.GlideQuery('sys_user')
// ...Esta inclusão de script requer o plug-in GlideQuery [com.sn_glidequery].Implementação
Esta inclusão de script funciona junto com as APIs de fluxo e opcionais em um padrão de construtor em que o método chama a cadeia, cada método se baseia no resultado retornado do método anterior. Use métodos para definir os atributos da consulta. Os métodos não são executados até que você chame um método de terminal, um método que retorna um resultado de consulta, permitindo que você defina os requisitos da consulta antes de executá-la.
Se a consulta retornar um único registro, o sistema agrupará o resultado em um objeto opcional. Se a consulta retornar um fluxo de registros, o sistema agrupará o resultado em um objeto Stream. Esses objetos permitem gerenciar o resultado usando um conjunto de métodos em cada API.
Por exemplo, este script executa uma consulta na Tabela de tarefas, agrupa os registros por prioridade e retorna cada prioridade que tem um total de reatribuições maior que quatro.
var query = new global.GlideQuery('task')
.where('active', true) //Returns new GlideQuery object with a "where" clause.
.groupBy('priority') //Returns new GlideQuery object with a "group by" clause.
.aggregate('sum', 'reassignment_count') //Returns new GlideQuery object with a "sum(reassignment_count)" clause.
.having('sum', 'reassignment_count', '>', 4) //Returns new GlideQuery object with a "having reassignment_count > 4" clause.
.select() //Returns a stream of records wrapped in a Stream object.
.forEach(function (priority){ //Terminal method in the Stream class that executes the query and returns the result.
gs.info("Priority " + priority.group.priority + ": " + priority.sum.reassignment_count + " reassignments");
});Priority 1: 11 reassignments
Priority 3: 6 reassignments
Priority 5: 5 reassignmentsTratamento de erros
A inclusão de script GlideQuery gera um erro quando sua consulta tem um problema e inclui uma explicação clara para ajudar a orientá-lo. Esta inclusão de script verifica:
- Campos inválidos
- Tipos de valor inválidos para um campo
- Valores inválidos para campos de opção
- Operadores de consulta inválidos
Por exemplo, a amostra de código a seguir geraria um erro porque o campo consultado não existe na tabela.
new global.GlideQuery('task')
.where('id', '4717dfe5a9fe198100450448b2404c16') // should be 'sys_id'
.select('description', 'severity')
.toArray(100);
// Error: Unable to find field 'id' in table 'task'. Known fields: active, activity_due, ...Esta amostra de código geraria um erro porque o tipo de dados de um dos argumentos está incorreto.
new global.GlideQuery('task')
.where('priority', 'one') // priority is an integer (should be 1)
.select('description', 'severity')
.toArray(100);
// Error: Unable to match value ['one'] with field 'priority' in table 'task'. Expecting type 'integer'Reutilizar
Como os objetos GlideQuery são imutáveis, você pode reutilizá-los posteriormente em outras partes do código. Por exemplo, este script cria uma consulta e usa o objeto GlideQuery posteriormente para gerar um relatório.
var highPriorityTasks = new global.GlideQuery('task')
.where('active', true)
.where('priority', 1);
generateReport(highPriorityTasks);
notifyOwners(highPriorityTasks);
var avgReassignmentCount = highPriorityTasks
.avg('reassignment_count')
.orElse(0)
Limitações
A inclusão de script GlideQuery não é compatível com:
- Leitura ou gravação em tabelas que não permitem o acesso de outros escopos.
- Lendo consultas codificadas.
- Objetos GlideDate ou GlideDateTime, que são lidos como cadeias de caracteres JavaScript.
- Campos de moeda FX.
- Atualizando tipos de campo de diário.
- Consultas com lógica condicional ambígua. Por exemplo, a consulta a seguir não está clara porque o sistema não sabe se deve executar
(active = true AND name != null) OR last_name = Luddyoractive = true AND (name != null OR last_name = Luddy).var user = new global.GlideQuery('sys_user') .where('active', true) .whereNotNull('name') .orWhere('last_name', 'Luddy') .selectOne() .get()Consulte o método Where() para entender como aninhar uma consulta secundária.
Métodos intermediários e de terminal em GlideQuery
A inclusão de script GlideQuery usa duas categorias de métodos: intermediário e terminal. Métodos intermediários são os métodos que retornam um Stream, uma API usada para interagir com um fluxo de itens como registros, permitindo um estilo fluente de sintaxe em que as chamadas são encadeadas. Métodos de terminal são os métodos que não retornam um fluxo e, portanto, interrompem a cadeia de chamadas do método Stream.
Na inclusão de script GlideQuery, métodos como Where(), orderBy()e disableWorkflow() são métodos intermediários que retornam um novo objeto GlideQuery. Da mesma forma, os métodos de terminal mais populares da inclusão de script GlideQuery, select() e selectOne(), são métodos de terminal. Esses métodos são chamados quando o GlideQuery termina de ser configurado e está pronto para começar a processar registros. É importante ter em mente as diferenças entre esses dois tipos de método ao configurar chamadas para a inclusão de script GlideQuery de acordo com seus casos de uso específicos. Para obter mais informações sobre métodos intermediários e de terminal, consulte o artigo GlideQuery - Processamento de fluxo - Parte 1.
Os seguintes métodos são classificados como intermediários:
- agregado(cadeia de caracteres agregadoType, campo de cadeia de caracteres)
- disableAutoSysFields()
- disableWorkflow()
- forceUpdate ()
- groupBy (campos de cadeia de caracteres)
- tendo(cadeia de caracteres agregadoType, campo de cadeia de caracteres, operador de cadeia de caracteres, valor numérico)
- limit (limite de número)
- orderBy(campos de cadeia de caracteres)
- orderByDesc(cadeia de caracteres fieldOrAggregate, campo de cadeia de caracteres)
- orNow(cadeia de caracteres fieldOrQuery, operador de cadeia de caracteres, qualquer valor)
- orNowNotNull(cadeia de caracteres campo)
- orNowNull(cadeia de caracteres campo)
- em que (cadeia de caracteres fieldOrQuery, operador de cadeia de caracteres, qualquer valor)
- WhereNotNull(campo de cadeia de caracteres)
- WhereNull(campo de cadeia de caracteres)
- withAcls()
Os seguintes métodos são classificados como terminal:
- avg(campo de cadeia de caracteres)
- contagem ()
- deleteMultiple()
- get(cadeia de caracteres chave, matriz selectedFields)
- getBy(objeto keyValues, matriz selectedFields)
- insert(objeto keyValues, objeto selectedFields)
- insertOrUpdate(Objeto muda, Objeto selectedFields)
- max (campo de cadeia de caracteres)
- min (campo de cadeia de caracteres)
- select(campos de cadeia de caracteres)
- selectOne (campos de cadeia de caracteres)
- sum(campo de cadeia de caracteres)
- toGlideRecord()
- update(Objeto muda, Objeto selectedFields)
- updateMutiple(mudanças de objeto)
GlideQuery - GlideQuery (tabela de cadeia de caracteres)
Instancia um objeto GlideQuery usado para criar e executar consultas de registro.
| Nome | Tipo | Descrição |
|---|---|---|
| tabela | Cadeia de caracteres | Tabela a ser consultada. |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Este exemplo instancia uma consulta da tabela Usuário.
var query = new global.GlideQuery('sys_user');
GlideQuery - agregado (cadeia de caracteres agregadoType, campo de cadeia de caracteres)
Agrega um campo usando uma função de agregação especificada.
Use este método para criar consultas que agregam em relação a vários campos ou usam várias funções agregadas ou se você precisar usar o método groupBy(). Se você quiser agregar apenas em relação a um campo com uma função e não precisar usar groupBy(), use um destes métodos:
- média ()
- mín ()
- máx. ()
- contagem ()
| Nome | Tipo | Descrição |
|---|---|---|
| agregadoTipo | Cadeia de caracteres | O tipo de função de agregação a ser executada. As opções incluem:
|
| Assunto: | Cadeia de caracteres | Campo no qual a operação será executada. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
var query = new global.GlideQuery('task')
.where('active', true) //Returns new GlideQuery object with a "where" clause.
.groupBy('priority') //Returns new GlideQuery object with a "group by" clause.
.aggregate('sum', 'reassignment_count') //Returns new GlideQuery object with a "sum(reassignment_count)" clause.
.having('sum', 'reassignment_count', '>', 4) //Returns new GlideQuery object with a "having reassignment_count > 4" clause.
.select() //Returns a stream of records wrapped in a Stream object.
.forEach(function (priority){ //Terminal method in the Stream class that executes the query and returns the result.
gs.info("Priority " + priority.group.priority + ": " + priority.sum.reassignment_count + " reassignments");
});Priority 1: 11 reassignments
Priority 3: 6 reassignments
Priority 5: 5 reassignmentsGlideQuery - avg (cadeia de caracteres do campo)
Retorna a média agregada de um determinado campo numérico.
- Números inteiros
- Longo
- Número de ponto flutuante
- Duplo
- Moeda
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo no qual a operação será executada. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto que contém a média agregada do campo fornecido. |
Este exemplo mostra como retornar o número médio de falhas na tabela cmdb_ci.
var faults = new global.GlideQuery('cmdb_ci')
.avg('fault_count')
.orElse(0);
gs.info(JSON.stringify(faults));
Saída:
0.0037
GlideQuery - contagem ()
Retorna o número de registros que correspondem à consulta.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Número | Número de registros que correspondem à consulta. |
Este exemplo retorna o número de registros ativos na tabela Usuário.
var userCount = new global.GlideQuery('sys_user')
.where('active', true)
.count();
Saída:
612
GlideQuery – deleteMutiple()
Exclui todos os registros na tabela especificada pelas cláusulas Where anteriores.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Este exemplo exclui todos os registros ativos na tabela Usuário em que o sobrenome é Jeter.
var query = new global.GlideQuery('sys_user')
.where('active', true)
.where('last_name', 'Jeter')
.deleteMultiple();
GlideQuery – disableAutoSysFields()
Desabilita a atualização de campos do sistema ou campos com um nome que começa com o prefixo sys, como sys_created_on, sys_updated_on e sys_mod_count. Aplica-se somente à consulta especificada.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo adiciona um registro à tabela de tarefas, mas não define campos do sistema. Sem chamar este método, o exemplo abaixo atualizaria sys_updated_on, sys_mod_count e assim por diante.
var query = new global.GlideQuery('task')
.disableAutoSysFields()
.insert({ description: 'example', priority: 1 });
GlideQuery – disableWorkflow()
Desabilita quaisquer regras de negócio, fluxos, fluxos de trabalho ou registros de auditoria que seriam executados ou criados como resultado da consulta.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo atualiza vários registros na Tabela de tarefas sem acionar nenhum processo de negócios automático.
var query = new global.GlideQuery('task')
.disableWorkflow()
.where('active', true)
.updateMultiple({ priority: 1 });
GlideQuery – forceUpdate()
Força uma atualização do banco de dados mesmo quando nenhuma mudança de registro é feita. Por exemplo, você pode usar este método para forçar a execução de uma regra de negócio.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo força atualizações de registros de tarefa com um determinado sys_id.
var forceUpdate = new global.GlideQuery('task')
.forceUpdate()
.where('sys_id', taskId)
.update()
GlideQuery - get(Chave de cadeia de caracteres, matriz selectedFields)
Retorna um único registro da consulta.
| Nome | Tipo | Descrição |
|---|---|---|
| chave | Cadeia de caracteres | Sys_id do registro a ser retornado. |
| selectedFields | Matriz | Opcional. Campos adicionais a serem retornados no resultado. Padrão: o sistema sempre retorna o sys_id. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Exemplo que retorna um registro com base em sys_id.
var user = new global.GlideQuery('sys_user')
.get('5137153cc611227c000bbd1bd8cd2005', ['first_name', 'last_name']) //Returns an Optional object.
.orElse({ first_name: 'Default', last_name: 'User' }); //Method in the Optional class to return a default value.
gs.info(JSON.stringify(user, null, 2));
Saída:
{
"sys_id":"5137153cc611227c000bbd1bd8cd2005",
"first_name":"Fred",
"last_name":"Luddy"
}
GlideQuery - getBy (objeto keyValues, matriz selectedFields)
Retorna um objeto opcional que contém um único registro com base em um conjunto de pares de nome-valor para consulta. Assume o operador '=' para cada par de nome-valor.
| Nome | Tipo | Descrição |
|---|---|---|
| keyValues | Objeto | Objeto em que as chaves são o nome dos campos e os valores são os valores a serem consultados. |
| selectedFields | Matriz | Opcional. Campos adicionais a serem retornados no resultado. Padrão: o sistema sempre retorna o sys_id. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Exemplo que retorna um registro consultando o nome de um usuário.
var user = new global.GlideQuery('sys_user')
.getBy({
first_name: 'Fred',
last_name: 'Luddy'
}, ['first_name', 'last_name', 'city', 'active']) // select first_name, last_name, city, active
.orElse({
first_name: 'Nobody',
last_name: 'Found',
city: 'Nowhere',
active: false
});
gs.info(JSON.stringify(user, null, 2));
Saída:
{
"first_name":"Fred",
"last_name":"Luddy",
"city":null,
"active":true,
"sys_id":"5137153cc611227c000bbd1bd8cd2005"
}
GlideQuery - groupBy(campos de cadeia de caracteres)
Agrupa os resultados da consulta por um campo ou campos designados.
Você deve usar este método com o método agregado().
| Nome | Tipo | Descrição |
|---|---|---|
| campos | Cadeia de caracteres ou matriz de cadeias de caracteres | Campo ou campos para agrupar os resultados. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
var query = new global.GlideQuery('task')
.where('active', true) //Returns new GlideQuery object with a "where" clause.
.groupBy('priority') //Returns new GlideQuery object with a "group by" clause.
.aggregate('sum', 'reassignment_count') //Returns new GlideQuery object with a "sum(reassignment_count)" clause.
.having('sum', 'reassignment_count', '>', 4) //Returns new GlideQuery object with a "having reassignment_count > 4" clause.
.select() //Returns a stream of records wrapped in a Stream object.
.forEach(function (priority){ //Terminal method in the Stream class that executes the query and returns the result.
gs.info("Priority " + priority.group.priority + ": " + priority.sum.reassignment_count + " reassignments");
});Priority 1: 11 reassignments
Priority 3: 6 reassignments
Priority 5: 5 reassignmentsGlideQuery - tendo (cadeia de caracteres agregadoType, campo de cadeia de caracteres, operador de cadeia de caracteres, valor numérico)
Os filtros agregam grupos para que você possa exibir somente grupos de resultados que correspondam a uma condição especificada.
Deve usar este método com os métodos agregado() ou groupBy().
| Nome | Tipo | Descrição |
|---|---|---|
| agregadoTipo | Cadeia de caracteres | O tipo de função de agregação a ser executada. As opções incluem:
|
| Assunto: | Cadeia de caracteres | Campo no qual a operação será executada. |
| operador | Cadeia de caracteres | Operador numérico a ser usado na operação. As opções incluem:
|
| valor | Número | Valor numérico a ser usado na operação. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
var query = new global.GlideQuery('task')
.where('active', true) //Returns new GlideQuery object with a "where" clause.
.groupBy('priority') //Returns new GlideQuery object with a "group by" clause.
.aggregate('sum', 'reassignment_count') //Returns new GlideQuery object with a "sum(reassignment_count)" clause.
.having('sum', 'reassignment_count', '>', 4) //Returns new GlideQuery object with a "having reassignment_count > 4" clause.
.select() //Returns a stream of records wrapped in a Stream object.
.forEach(function (priority){ //Terminal method in the Stream class that executes the query and returns the result.
gs.info("Priority " + priority.group.priority + ": " + priority.sum.reassignment_count + " reassignments");
});Priority 1: 11 reassignments
Priority 3: 6 reassignments
Priority 5: 5 reassignmentsGlideQuery - insert(KeyValues do objeto, selectedFields do objeto)
Insere um registro e retorna um objeto opcional que contém o registro.
| Nome | Tipo | Descrição |
|---|---|---|
| keyValues | Objeto | Objeto que contém pares de nome-valor a serem inseridos no registro. Campos não especificados serão nulos. |
| selectedFields | Matriz | Opcional. Campos adicionais a serem retornados no resultado. Padrão: o sistema sempre retorna o sys_id. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Este exemplo mostra como inserir um registro com base no nome e no sobrenome de um usuário.
var fred = new global.GlideQuery('sys_user')
.insert({ first_name: 'Fred', last_name: 'Luddy' })
.get();
gs.info(JSON.stringify(fred, null, 2));
Saída:
{
"sys_id":"cf16eed0e82a9010f8778bda83d255d2",
"first_name":"Fred",
"last_name":"Luddy"
}
GlideQuery - insertOrUpdate(Objeto muda, Objeto selectedFields)
Atualiza um registro existente ou insere um novo registro, caso ainda não exista.
| Nome | Tipo | Descrição |
|---|---|---|
| Mudanças | Objeto | Objeto que contém pares de nome-valor a serem atualizados ou inseridos no registro. |
| selectedFields | Matriz | Opcional. Campos adicionais a serem retornados no resultado. Padrão: o sistema sempre retorna o sys_id. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Este exemplo mostra como inserir um novo registro que ainda não existe no sistema.
// insert a new record
var user = new GlideQuery('sys_user')
.insertOrUpdate({
first_name: 'George',
last_name: 'Griffey'
})
.orElse(null);
Este exemplo mostra como atualizar um registro existente.
// update existing record
var user = new global.GlideQuery('sys_user')
.insertOrUpdate({
sys_id: '2d0efd6c73662300bb513198caf6a72e',
first_name: 'George',
last_name: 'Griffey' })
.orElse(null);
GlideQuery - limit (limite de número)
Limita o número de registros retornados em uma consulta.
| Nome | Tipo | Descrição |
|---|---|---|
| limite | Número | Número de registros a serem retornados. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como limitar os resultados retornados a cinco registros.
var incidents = new global.GlideQuery('incident')
.limit(5)
.select('priority', 'description')
.forEach(function (incident){
gs.info(JSON.stringify(incident, null, 2));
});
Saída:
*** Script: {
"priority": 1,
"description": "User can't get to any of his files on the file server.",
"sys_id": "9d385017c611228701d22104cc95c371"
}
*** Script: {
"priority": 1,
"description": "I just moved from floor 2 to floor 3 and my laptop cannot connect to any wireless network.",
"sys_id": "e8caedcbc0a80164017df472f39eaed1"
}
*** Script: {
"priority": 1,
"description": "User forgot their email password.",
"sys_id": "9d3c1197c611228701cd1d94bc32d76d"
}
*** Script: {
"priority": 1,
"description": "When I try to print, my whole computer just freezes and stops working.",
"sys_id": "8d6246c7c0a80164012fb063cecd4ace"
}
*** Script: {
"priority": 3,
"description": "Unable to login even though login credentials are correct.",
"sys_id": "a9e30c7dc61122760116894de7bcc7bd"
}
GlideQuery - max (campo de cadeia de caracteres)
Retorna o máximo agregado de um determinado campo.
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo no qual a operação será executada. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Este exemplo mostra como retornar o valor máximo, ou o valor alfanumérico mais alto, de um determinado campo.
var name = new global.GlideQuery('sys_user')
.max('last_name')
.orElse('');
gs.info(JSON.stringify(name));
Saída:
"Zortman"
GlideQuery - min (cadeia de caracteres do campo)
Retorna o mínimo agregado de um determinado campo.
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo no qual a operação será executada. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Este exemplo mostra como retornar o valor mínimo, ou o valor alfanumérico mais baixo, de um determinado campo.
var name = new global.GlideQuery('sys_user')
.min('last_name')
.orElse('');
gs.info(JSON.stringify(name));
Saída:
"Abel"
GlideQuery - orderBy(campos de cadeia de caracteres)
Ordena o resultado retornado em ordem crescente por um determinado campo.
| Nome | Tipo | Descrição |
|---|---|---|
| campos | Cadeia de caracteres | Campos delimitados por vírgulas para ordenar o resultado em ordem crescente. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como ordenar os resultados em ordem crescente por número de registro.
var query = new global.GlideQuery('incident')
.orderBy('number')
.limit(5)
.select('number', 'description') //Returns a stream of records wrapped in a Stream object.
.forEach(function (incident){ //Terminal method in the Stream class that executes the query and returns the result.
gs.info(JSON.stringify(incident, null, 2));
});
Saída:
*** Script: {
"number": "INC0000001",
"description": "User can't access email on mail.company.com.",
"sys_id": "9c573169c611228700193229fff72400"
}
*** Script: {
"number": "INC0000002",
"description": "User can't get to any of his files on the file server.",
"sys_id": "9d385017c611228701d22104cc95c371"
}
*** Script: {
"number": "INC0000003",
"description": "I just moved from floor 2 to floor 3 and my laptop cannot connect to any wireless network.",
"sys_id": "e8caedcbc0a80164017df472f39eaed1"
}
*** Script: {
"number": "INC0000004",
"description": "User forgot their email password.",
"sys_id": "9d3c1197c611228701cd1d94bc32d76d"
}
*** Script: {
"number": "INC0000005",
"description": "CPU was 100% busy for more than 10 minutes",
"sys_id": "e8e875b0c0a80164009dc852b4d677d5"
}
GlideQuery - orderByDesc(cadeia de caracteres fieldOrAggregate, campo de cadeia de caracteres)
Ordena o resultado retornado em ordem decrescente por um determinado campo.
| Nome | Tipo | Descrição |
|---|---|---|
| fieldOrAggregate | Cadeia de caracteres | Se a consulta não usar o método agregado(), passe o campo para ordenar os resultados. Se a consulta usar o método agregado(), passe o tipo de função de agregação a ser executada. As opções incluem:
|
| Assunto: | Cadeia de caracteres | Opcional. Campo para ordenar o resultado em ordem decrescente. Necessário para consultas que usam o método agregado(). |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como ordenar o resultado em ordem decrescente por número.
var query = new global.GlideQuery('incident')
.orderByDesc('number')
.limit(5)
.select('number', 'description') //Returns a stream of records wrapped in a Stream object.
.forEach(function (incident){ //Terminal method in the Stream class that executes the query and returns the result.
gs.info(JSON.stringify(incident, null, 2));
});
Saída:
*** Script: {
"number": "INC0009009",
"description": "Unable to access the shared folder. Please provide access.",
"sys_id": "57af7aec73d423002728660c4cf6a71c"
}
*** Script: {
"number": "INC0009005",
"description": "Unable to send or receive emails.",
"sys_id": "ed92e8d173d023002728660c4cf6a7bc"
}
*** Script: {
"number": "INC0009004",
"description": "While launching the defect tracking base URL, it is redirecting to an error page.",
"sys_id": "e329de99731423002728660c4cf6a73c"
}
*** Script: {
"number": "INC0009003",
"description": "Having an issue with users trying to access the company portal app",
"sys_id": "9fffc328731823002728660c4cf6a742"
}
*** Script: {
"number": "INC0009002",
"description": "My computer is not detecting the headphone device. It could be an issue with the USB port.",
"sys_id": "1c832706732023002728660c4cf6a7b9"
}
Este exemplo mostra como solicitar um resultado agregado pela soma de incidentes secundários.
var aggQuery = new GlideQuery('incident')
.aggregate('sum', 'child_incidents')
.groupBy('category')
.orderByDesc('sum', 'child_incidents')
.select()
.forEach(function (category){
gs.info(JSON.stringify(category, null, 2));
});
Saída:
*** Script: {
"group": {
"category": "hardware"
},
"sum": {
"child_incidents": 2
}
}
*** Script: {
"group": {
"category": "inquiry"
},
"sum": {
"child_incidents": 1
}
}
*** Script: {
"group": {
"category": "software"
},
"sum": {
"child_incidents": 0
}
}
*** Script: {
"group": {
"category": ""
},
"sum": {
"child_incidents": null
}
}
*** Script: {
"group": {
"category": "database"
},
"sum": {
"child_incidents": null
}
}
*** Script: {
"group": {
"category": "network"
},
"sum": {
"child_incidents": null
}
}
GlideQuery - orNow (cadeia de caracteres fieldOrQuery, operador de cadeia de caracteres, qualquer valor)
Adiciona uma cláusula OR a uma consulta que retorna valores com base em uma determinada condição.
| Nome | Tipo | Descrição |
|---|---|---|
| campoOuConsulta | Cadeia de caracteres ou GlideQuery | Campo ou outro objeto GlideQuery usado na cláusula Where. Se estiver passando um campo, você pode fazer referência com pontos até um valor desejado. Por exemplo, 'company.name'. |
| operador | Cadeia de caracteres | Opcional. Operador usado na cláusula OR. Se você não passar um argumento, o sistema usará o operador =. Você não precisa incluir um valor de espaço reservado. |
| valor | Qualquer | Valor usado na cláusula OR. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como adicionar uma cláusula OR simples a uma consulta.
var query = new global.GlideQuery('sys_user')
.where('failed_attempts', '>', 0)
.orWhere('last_login', '<', '2019-04-15')
.select()
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Saída:
*** Script: {
"sys_id": "005d500b536073005e0addeeff7b12f4"
}
*** Script: {
"sys_id": "d999e5fc77e72300454792718a10611d"
}
*** Script: {
"sys_id": "30ad318577ab2300454792718a10619e"
}
*** Script: {
"sys_id": "4ac73ecd738123002728660c4cf6a72c"
}
*** Script: {
"sys_id": "3883f4c0730123002728660c4cf6a754"
}
*** Script: {
"sys_id": "3988a3ca732023002728660c4cf6a757"
}
*** Script: {
"sys_id": "8ff5b254b33213005e3de13516a8dcf7"
}
Este exemplo mostra como adicionar uma cláusula orNow que contém uma consulta separada.
// active = true OR (title = 'Vice President' AND state = 'CA')
var query = new GlideQuery('sys_user')
.where('active', true)
.orWhere(new GlideQuery()
.where('title', 'Vice President')
.where('state', 'CA'))
.select('name')
.limit(5)
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Saída:
*** Script: {
"name": "ITIL User",
"sys_id": "681b365ec0a80164000fb0b05854a0cd"
}
*** Script: {
"name": "SOAP Guest",
"sys_id": "155699460a0a0b2b009e27c10b7f68f6"
}
*** Script: {
"name": "System Administrator",
"sys_id": "6816f79cc0a8016401c5a33be04be441"
}
*** Script: {
"name": "Alva Pennigton",
"sys_id": "ca826bf03710200044e0bfc8bcbe5d89"
}
*** Script: {
"name": "Benchmark Scheduler",
"sys_id": "d3383a875b0132003d1c484c11f91a5b"
}
GlideQuery - orNowNotNull(campo de cadeia de caracteres)
Adiciona uma cláusula OR que retorna registros que não contêm um valor nulo em um determinado campo.
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo usado na consulta. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como consultar a tabela Usuário e retornar resultados em que o nome ou o sobrenome não sejam nulos.
var query = new global.GlideQuery('sys_user')
.whereNotNull('first_name')
.orWhereNotNull('last_name')
.select('name')
.limit(5)
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Saída:
*** Script: {
"name": "ITIL User",
"sys_id": "681b365ec0a80164000fb0b05854a0cd"
}
*** Script: {
"name": "System Administrator",
"sys_id": "6816f79cc0a8016401c5a33be04be441"
}
*** Script: {
"name": "Alva Pennigton",
"sys_id": "ca826bf03710200044e0bfc8bcbe5d89"
}
*** Script: {
"name": "Benchmark Scheduler",
"sys_id": "d3383a875b0132003d1c484c11f91a5b"
}
*** Script: {
"name": "Allyson Gillispie",
"sys_id": "06826bf03710200044e0bfc8bcbe5d8a"
}
GlideQuery - orNowNull(campo de cadeia de caracteres)
Adiciona uma cláusula OR a uma consulta que retorna registros que contêm um valor nulo em um determinado campo.
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo usado na consulta. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como consultar a tabela Usuário e retornar registros em que o nome ou o sobrenome são nulos.
var query = new global.GlideQuery('sys_user')
.whereNull('last_name')
.orWhereNull('first_name')
.select('first_name', 'last_name')
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Saída:
*** Script: {
"first_name": "ml.admin",
"last_name": null,
"sys_id": "88aad6c5c73003005f1b78d48b9763a5"
}
*** Script: {
"first_name": "Sitemap Scheduler User",
"last_name": null,
"sys_id": "85388c25b71011104eed4643ae11a993"
}
*** Script: {
"first_name": null,
"last_name": "Guest",
"sys_id": "5136503cc611227c0183e96598c4f706"
}
*** Script: {
"first_name": "ml_report.user",
"last_name": null,
"sys_id": "b6bad6c5c73003005f1b78d48b97632a"
}
GlideQuery - parse(cadeia de caracteres tabela, cadeia de caracteres encoded_query )
Adiciona uma consulta codificada a uma nova consulta GlideQuery.
Este método não é compatível com todos os operadores de consulta codificada com GlideRecord. Os seguintes operadores são compatíveis no momento:
= |
QUALQUER COISA |
GT_FIELD |
NÃO EM |
!= |
ENTRE |
FIELD_OR_Equals_GT |
NÃO GOSTOU |
> |
CONTÉM |
EM |
NSAMEAS |
>= |
NÃO CONTÉM |
INSTÂNCIADE |
LIGADO |
< |
DINÂMICO |
CURTIR |
SAMEAS |
<= |
STRING VAZIO |
LT_FIELD |
COMEÇA COM |
TERMINACOM |
LT_OU_IGUAL_CAMPO |
| Nome | Tipo | Descrição |
|---|---|---|
| tabela | Cadeia de caracteres | Tabela a ser consultada, como tarefa ou incidente. |
| encoded_query | Cadeia de caracteres | Consulta codificada a ser aplicada aos registros na tabela especificada. |
| Tipo | Descrição |
|---|---|
| GlideQuery | Objeto GlideQuery que contém a consulta codificada. |
O exemplo a seguir cria um objeto GlideQuery que contém todos os registros ativos na tabela de tarefas, ordenados pelo campo de prioridade, retornado como um objeto Stream que contém apenas o campo de descrição.
GlideQuery.parse('task', 'active=true^ORDERBYpriority') // Pass the encoded query to use to parse the Task records
.select('description') // Return the records that match the encoded query
.forEach(doSomething); // Do some processing on each of the returned records
GlideQuery - select(campos de cadeia de caracteres)
Retorna os resultados da consulta como um objeto de fluxo que contém os campos especificados.
Você pode anexar um sinalizador a um nome de campo para retornar os metadados do campo em vez do valor do campo. Por exemplo, usar o nome de campo company$DISPLAY retorna o valor de exibição de um campo de empresa. Os possíveis sinalizadores incluem:
DISPLAY: retorna o valor de exibição de um campo.CURRENCY_CODE: retorna o código da moeda de um campo de moeda. Por exemplo,USD.CURRENCY_DISPLAY: retorna o valor de exibição da moeda de um campo de moeda. Por exemplo,JPY 123,45.CURRENCY_STRING: retorna a cadeia de caracteres de moeda de um campo de moeda. Por exemplo,JPY;123.45.
| Nome | Tipo | Descrição |
|---|---|---|
| campos | Cadeia de caracteres ou matriz de cadeias de caracteres | Opcional. Campos a serem exibidos no resultado. Você pode fornecer qualquer número de campos como argumentos, referência com pontos até um valor desejado ou usar um sinalizador. Por exemplo: ou
Padrão: o sistema sempre retorna o sys_id. |
| Tipo | Descrição |
|---|---|
| Fluxo | Objeto usado para interagir com um fluxo de itens, como registros. |
Este exemplo mostra como selecionar campos a serem exibidos na consulta e usar $ DISPLAY para retornar o valor de exibição de um campo.
var stream = new global.GlideQuery('sys_user')
.select('first_name', 'last_name', 'company$DISPLAY')
.limit(5)
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Saída:
*** Script: {
"first_name": "System",
"last_name": "Administrator",
"company$DISPLAY": "",
"sys_id": "6816f79cc0a8016401c5a33be04be441"
}
*** Script: {
"first_name": "Alva",
"last_name": "Pennigton",
"company$DISPLAY": "ACME North America",
"sys_id": "ca826bf03710200044e0bfc8bcbe5d89"
}
*** Script: {
"first_name": "Benchmark",
"last_name": "Scheduler",
"company$DISPLAY": "",
"sys_id": "d3383a875b0132003d1c484c11f91a5b"
}
*** Script: {
"first_name": "Allyson",
"last_name": "Gillispie",
"company$DISPLAY": "ACME North America",
"sys_id": "06826bf03710200044e0bfc8bcbe5d8a"
}
*** Script: {
"first_name": "SOAP",
"last_name": "Guest",
"company$DISPLAY": "",
"sys_id": "155699460a0a0b2b009e27c10b7f68f6"
}
GlideQuery - selectOne(campos de cadeia de caracteres)
Retorna o resultado da consulta como um objeto opcional que contém os campos especificados.
Use este método ao retornar um único registro ou para testar se existe um registro. Se estiver retornando vários registros, use o método select() para retornar um objeto Stream.
Você pode anexar um sinalizador a um nome de campo para retornar os metadados do campo em vez do valor do campo. Por exemplo, usar o nome de campo company$DISPLAY retorna o valor de exibição de um campo de empresa. Os possíveis sinalizadores incluem:
DISPLAY: retorna o valor de exibição de um campo.CURRENCY_CODE: retorna o código da moeda de um campo de moeda. Por exemplo,USD.CURRENCY_DISPLAY: retorna o valor de exibição da moeda de um campo de moeda. Por exemplo,JPY 123,45.CURRENCY_STRING: retorna a cadeia de caracteres de moeda de um campo de moeda. Por exemplo,JPY;123.45.
| Nome | Tipo | Descrição |
|---|---|---|
| campos | Cadeia de caracteres ou matriz de cadeias de caracteres | Opcional. Campos a serem exibidos no resultado. Você pode fornecer qualquer número de campos como argumentos, referência com pontos até um valor desejado ou usar um sinalizador. Por exemplo: ou
Padrão: o sistema sempre retorna o sys_id. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Este exemplo mostra como retornar um único registro como um objeto opcional e exibir os campos especificados.
var user = new global.GlideQuery('sys_user')
.where('zip', '12345')
.whereNotNull('last_name')
.selectOne('first_name', 'last_name', 'company$DISPLAY')
.get();
gs.info(JSON.stringify(user, null, 2));
Saída:
{
"first_name":"Abel",
"last_name":"Tuter",
"company$DISPLAY":"ACME South America",
"sys_id":"62826bf03710200044e0bfc8bcbe5df1"
}
GlideQuery - soma (cadeia de caracteres do campo)
Retorna a soma agregada de um determinado campo numérico.
- Números inteiros
- Longo
- Número de ponto flutuante
- Duplo
- Moeda
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo no qual a operação será executada. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Este exemplo mostra como retornar a soma de todas as falhas na tabela cmdb_ci.
var totalFaults = new global.GlideQuery('cmdb_ci')
.sum('fault_count')
.orElse(0);
gs.info(JSON.stringify(totalFaults));
Saída:
10
GlideQuery – toGlideRecord()
Retorna um objeto GlideRecord que representa a consulta atual. Retorna um objeto GlideAggregate se a consulta usar o método GlideQuery.aggregate().
Depois de transformar a consulta, use o método query() nas classes GlideRecord ou GlideAggregate para consultar o banco de dados.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| GlideRecord ou GlideAggregate | Objeto GlideRecord que contém a consulta. Se você usou o método GlideQuery.aggregate(), o método retornará um objeto GlideAggregate. |
Este exemplo mostra como transformar um objeto GlideQuery em um GlideRecord.
var userGr = new global.GlideQuery('sys_user')
.where('active', true)
.whereNotNull('first_name')
.limit(10)
.toGlideRecord();
userGr.query();
GlideQuery - update(Objeto muda, Objeto selectedFields)
Atualiza um registro existente que corresponde às condições definidas.
Antes de usar este método, chame o método Where() para especificar as condições que um registro deve atender para ser atualizado.
| Nome | Tipo | Descrição |
|---|---|---|
| Mudanças | Objeto | Objeto que contém pares de nome-valor a serem atualizados no registro. Os nomes devem corresponder aos campos na tabela. |
| selectedFields | Matriz | Opcional. Campos adicionais a serem retornados no resultado. Padrão: o sistema sempre retorna o sys_id. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Este exemplo mostra como atualizar um registro com novos valores.
var updateRecord = new global.GlideQuery('sys_user')
.where('sys_id', '0a826bf03710200044e0bfc8bcbe5d7a')
.update({ city: 'Los Angeles' });
GlideQuery - updateMutiple(mudanças de objeto)
Atualiza todos os registros existentes que correspondem às condições definidas. Retorna o número de registros atualizados.
Antes de usar este método, chame o método Where() para especificar as condições que os registros devem atender para serem atualizados.
| Nome | Tipo | Descrição |
|---|---|---|
| Mudanças | Objeto | Objeto que contém pares de nome-valor a serem atualizados no registro. Os nomes devem corresponder aos campos na tabela. |
| Tipo | Descrição |
|---|---|
| Objeto | Objeto que contém o número de registros que foram atualizados. As chaves incluem:
|
Este exemplo mostra como atualizar todos os registros que se encaixam em critérios definidos.
var update = new global.GlideQuery('sys_user')
.where('active', false)
.where('last_name', 'Griffey')
.updateMultiple({ active: true });
gs.info(JSON.stringify(update));
Saída:
{"rowCount":1}
GlideQuery - onde (cadeia de caracteres fieldOrQuery, operador de cadeia de caracteres, qualquer valor)
Adiciona uma cláusula Where à consulta que retorna valores com base em uma determinada condição.
| Nome | Tipo | Descrição |
|---|---|---|
| campoOuConsulta | Cadeia de caracteres ou GlideQuery | Campo ou outro objeto GlideQuery usado na cláusula Where. Se estiver passando um campo, você pode fazer referência com pontos até um valor desejado. Por exemplo, 'company.name'. |
| operador | Cadeia de caracteres | Opcional. Operador usado na cláusula "where". Se você não passar um argumento, o sistema usará o operador =. |
| valor | Qualquer | Valor usado na cláusula Where. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como retornar registros da tabela Usuário em que ativo é verdadeiro e o último login do usuário é após uma data especificada.
var query = new global.GlideQuery('sys_user')
.where('active', true)
.where('last_login', '>', '2018-01-01')
.limit(5)
.select()
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Saída:
*** Script: {
"sys_id": "6816f79cc0a8016401c5a33be04be441"
}
*** Script: {
"sys_id": "005d500b536073005e0addeeff7b12f4"
}
*** Script: {
"sys_id": "d999e5fc77e72300454792718a10611d"
}
*** Script: {
"sys_id": "30ad318577ab2300454792718a10619e"
}
*** Script: {
"sys_id": "3883f4c0730123002728660c4cf6a754"
}
Este exemplo mostra como retornar registros da tabela Incidente em que ativo é verdadeiro e a prioridade ou gravidade é 1.
// active = true AND (priority = 1 OR severity = 1)
var query = new GlideQuery('incident')
.where('active', true)
.where(new GlideQuery()
.where('priority', 1)
.orWhere('severity', 1))
.limit(5)
.select()
.toArray(5)
gs.info(JSON.stringify(query, null, 2));
Saída:
[
{
"sys_id":"b0f31e5673500010c2e7660c4cf6a711"
},
{
"sys_id":"8ff5b254b33213005e3de13516a8dcf7"
},
{
"sys_id":"d999e5fc77e72300454792718a10611d"
},
{
"sys_id":"30ad318577ab2300454792718a10619e"
},
{
"sys_id":"3883f4c0730123002728660c4cf6a754"
}
]
GlideQuery - WhereNotNull(cadeia de caracteres do campo)
Retorna registros que não contêm um valor nulo em um determinado campo.
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo usado na consulta. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como consultar a tabela Usuário e retornar resultados em que o campo first_name não é nulo.
var query = new global.GlideQuery('sys_user')
.whereNotNull('first_name')
.select('name')
.limit(5)
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Saída:
*** Script: {
"name": "System Administrator",
"sys_id": "6816f79cc0a8016401c5a33be04be441"
}
*** Script: {
"name": "Alva Pennigton",
"sys_id": "ca826bf03710200044e0bfc8bcbe5d89"
}
*** Script: {
"name": "Benchmark Scheduler",
"sys_id": "d3383a875b0132003d1c484c11f91a5b"
}
*** Script: {
"name": "Allyson Gillispie",
"sys_id": "06826bf03710200044e0bfc8bcbe5d8a"
}
*** Script: {
"name": "SOAP Guest",
"sys_id": "155699460a0a0b2b009e27c10b7f68f6"
}
GlideQuery - WhereNull(cadeia de caracteres campo)
Retorna registros que contêm um valor nulo em um determinado campo.
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo usado na consulta. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como consultar a tabela Usuário e retornar registros em que o nome ou o sobrenome são nulos.
var query = new global.GlideQuery('sys_user')
.whereNull('last_name')
.orWhereNull('first_name')
.select('first_name', 'last_name')
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Saída:
*** Script: {
"first_name": "ml.admin",
"last_name": null,
"sys_id": "88aad6c5c73003005f1b78d48b9763a5"
}
*** Script: {
"first_name": "Sitemap Scheduler User",
"last_name": null,
"sys_id": "85388c25b71011104eed4643ae11a993"
}
*** Script: {
"first_name": null,
"last_name": "Guest",
"sys_id": "5136503cc611227c0183e96598c4f706"
}
*** Script: {
"first_name": "ml_report.user",
"last_name": null,
"sys_id": "b6bad6c5c73003005f1b78d48b97632a"
}
GlideQuery - withAcls()
Executa a consulta usando a API GlideRecordSecure para consultar o banco de dados com segurança e respeitando as ACLs.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como executar uma consulta segura usando ACLs.
var users = new global.GlideQuery('sys_user')
.withAcls()
.limit(5)
.orderByDesc('first_name')
.select('first_name')
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Saída:
*** Script: {
"first_name": "Zane",
"sys_id": "16826bf03710200044e0bfc8bcbe5dbc"
}
*** Script: {
"first_name": "Zackary",
"sys_id": "8a826bf03710200044e0bfc8bcbe5d69"
}
*** Script: {
"first_name": "Yvette",
"sys_id": "4e826bf03710200044e0bfc8bcbe5d57"
}
*** Script: {
"first_name": "Winnie",
"sys_id": "f682abf03710200044e0bfc8bcbe5d1d"
}
*** Script: {
"first_name": "Wilmer",
"sys_id": "42826bf03710200044e0bfc8bcbe5d7b"
}