GlideQuery - escopo, global
. GlideQuery a inclusão de script é uma alternativa ao GlideRecord API para executar operações CRUD em dados de registro de scripts do lado do servidor.
. GlideQuery a inclusão de script permite que você:
- 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 de boiler-plate.
- Evite problemas comuns de desempenho sem precisar de 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 em conjunto com Fluxo e. Opcional APIs em um padrão do construtor em que o método chama a cadeia, cada método criado 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 encapsulará o resultado em um objeto Opcional. Se a consulta retornar um fluxo de registros, o sistema encapsulará o resultado em um objeto Fluxo. Esses objetos permitem gerenciar o resultado usando um conjunto de métodos em cada API.
Por exemplo, isso O script executa uma consulta na tabela Tarefa, agrupa os registros por prioridade e retorna cada prioridade que tem reatribuições totais maiores 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
. GlideQuery a inclusão de script gera um erro quando sua consulta tem um problema e inclui uma explicação clara para ajudar a orientá-lo. Este script inclui verificações para:
- Campos inválidos
- Tipos de valor inválidos para um campo
- Valores inválidos para campos de seleção
- Operadores de consulta inválidos
Por exemplo, o exemplo 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'Reutilize
Como os objetos GlideQuery são imutáveis, você pode reutilizá-los posteriormente em outras partes do seu 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
. GlideQuery a inclusão de script não é compatível com:
- Leitura ou gravação em tabelas que não permitem 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 registro.
- 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 ser executada
(Ativo: Verdadeiro E nome! Nulo) OU last_name: LuddyouVerdadeiro E (nome !: Nulo OU last_name: Luddy).var user = new global.GlideQuery('sys_user') .where('active', true) .whereNotNull('name') .orWhere('last_name', 'Luddy') .selectOne() .get()Consulte onde() método para entender como aninhar uma consulta secundária.
Métodos intermediário e terminal no GlideQuery
. GlideQuery a inclusão de script usa duas categorias de métodos: intermediário e terminal. Métodos intermediários são aqueles métodos que retornam um Fluxo , 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 aqueles métodos que não retornam um fluxo e, portanto, param a cadeia de Fluxo chamadas de método.
Em GlideQuery inclusão de script, métodos como onde() , Orderby() e Desabilitar Workflow() São métodos intermediários que retornam um novo objeto GlideQuery. Da mesma forma, o GlideQuery os métodos de terminal mais populares da inclusão de script, selecionar() e. SelectOne() , são métodos de terminal. Esses métodos são chamados quando GlideQuery a configuração terminou e está pronta para iniciar o processamento de registros. É importante ter em mente as diferenças entre esses dois tipos de método ao configurar chamadas para GlideQuery inclusão de script 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 - Fluxo de processamento Parte 1 .
Os seguintes métodos são classificados como intermediários:
- Agregate(cadeia de caracteres aggregateType, campo de cadeia de caracteres)
- DisableAutoSysFields()
- Desabilitar Workflow()
- ForceUpdate()
- GroupBy (campos de cadeia de caracteres)
- (Cadeia de caracteres aggregateType, campo de cadeia de caracteres, operador de cadeia de caracteres, valor numérico)
- Limit (limite numérico)
- Orderby (campos de cadeia de caracteres)
- OrderByDesc(cadeia de caracteres fieldOrAggregate, campo de cadeia de caracteres)
- OrWhere(cadeia de caracteres fieldOrQuery, operador de cadeia de caracteres, qualquer valor)
- Ou WhereNotNull (campo de cadeia de caracteres)
- Ou WhereNull (campo de cadeia de caracteres)
- String fieldOrQuery, operador de cadeia de caracteres, qualquer valor)
- WheNotNull (campo de cadeia de caracteres)
- WheNull (campo de cadeia de caracteres)
- Com Acls()
Os seguintes métodos são classificados como terminal:
- avg (campo de cadeia de caracteres)
- contagem()
- deleteMultiple()
- GET (Chave de cadeia de caracteres, Matriz selectedFields)
- GetBy (Object KeyValues, Array selectedFields)
- Inserir (Object KeyValues, Objeto Selecionado Campos)
- InsertOrUpdate(Mudanças de objeto, Objeto selectedFields)
- (Campo de cadeia de caracteres)
- Min (campo de cadeia de caracteres)
- (Campos de cadeia de caracteres)
- SelectOne (campos de cadeia de caracteres)
- Soma (campo de cadeia de caracteres)
- ToGlideRecord()
- Atualização (mudanças de objeto, objetos selecionados campos)
- UpdateMultiple (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 aggregateType, 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 vários campos ou usam várias funções agregadas, ou se você precisar usar GroupBy() método. Se você quiser agregar apenas um campo com uma função e não precisar usar GroupBy() , em seguida, use um destes métodos:
- média ()
- mínimo ()
- ()
- contagem()
| Nome | Tipo | Descrição |
|---|---|---|
| AggregateType | 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 executar a 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 - média (campo de cadeia de caracteres)
Retorna a média agregada de um determinado campo numérico.
- Inteiro
- Longa
- Número de ponto flutuante
- Duplo
- Moeda
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo no qual executar a operação. |
| 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 - count()
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 - deleteMultiple()
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 sistema prefixo, 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 regras de negócios, 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 Tarefa sem acionar processos de negócios automáticos.
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ócios.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo força as 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 baseado 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 (Object KeyValues, Array selectedFields)
Retorna um objeto opcional que contém um único registro com base em um conjunto de pares nome-valor para consulta. Assume o operador '
| 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 agregado() método.
| Nome | Tipo | Descrição |
|---|---|---|
| campos | Cadeia de caracteres ou matriz de cadeias de caracteres | 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 aggregateType, 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.
Este método deve ser usado com agregado() ou GroupBy() métodos.
| Nome | Tipo | Descrição |
|---|---|---|
| AggregateType | 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 executar a operação. |
| 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 - inserir(Object KeyValues, Object selectedFields)
Insere um registro e retorna um objeto opcional que contém o registro.
| Nome | Tipo | Descrição |
|---|---|---|
| KeyValues | Objeto | Objeto que contém pares 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(Mudanças de objeto, Object selectedFields)
Atualiza um registro existente ou insere um novo registro, se ainda não houver um.
| Nome | Tipo | Descrição |
|---|---|---|
| Mudanças | Objeto | Objeto que contém pares nome-valor para atualizar ou inserir 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 - limite (limite numérico)
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 executar a operação. |
| 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 (campo de cadeia de caracteres)
Retorna o mínimo agregado de um determinado campo.
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo no qual executar a operação. |
| Tipo | Descrição |
|---|---|
| Opcional | Objeto usado para interagir com um único registro. |
Este exemplo mostra como retornar o valor mínimo, ou o menor valor alfanumérico, 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 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 |
|---|---|---|
| OrAggregate | Cadeia de caracteres | Se a consulta não usar agregado() , passe o campo para ordenar os resultados. Se a consulta usar 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 usando agregado() método. |
| 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 - ouWhere(cadeia de caracteres fieldOrQuery, operador de cadeia de caracteres, qualquer valor)
Adiciona uma cláusula OU a uma consulta que retorna valores com base em uma determinada condição.
| Nome | Tipo | Descrição |
|---|---|---|
| FieldOrQuery | Cadeia de caracteres ou GlideQuery | Ou outro objeto GlideQuery usado na cláusula WHERE. Se passar um campo, você poderá fazer referência com pontos até um valor desejado. Por exemplo, 'company.name' . |
| operador | Cadeia de caracteres | Opcional. Operador usado na cláusula OU. Se você não passar um argumento, o sistema usará o operador . Não é necessário incluir um valor de espaço reservado. |
| valor | Qualquer | Valor usado na cláusula OU. |
| Tipo | Descrição |
|---|---|
| GlideQuery | O objeto de consulta que está sendo criado. |
Este exemplo mostra como adicionar uma cláusula OU 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 um OuOnde cláusula 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 - ouWhereNotNull (campo de cadeia de caracteres)
Adiciona uma cláusula OU 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 sobrenome não são 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 - ouWhereNull (campo de cadeia de caracteres)
Adiciona uma cláusula OU 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 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(tabela de cadeia de caracteres, cadeia de caracteres encoded_query )
Adiciona uma consulta codificada a um novo GlideQuery consulta.
Este método não é compatível com todos GlideRecord operadores de consulta codificada. Os seguintes operadores são compatíveis no momento:
= |
QUALQUER COISA |
GT_FIELD |
NÃO ESTÁ EM |
!= |
ENTRE |
GT_OR_EQUALS_FIELD |
NÃO GOSTO |
> |
CONTÉM |
EM |
NSAMEAS |
>= |
NÃO CONTÉM |
INSTANCEOF |
ATIVADO |
< |
DYNAMIC |
CURTIR |
SAMEAS |
<= |
EMPTISTRING |
LT_FIELD |
STARTSWITH |
ENDSWITH |
LT_OR_EQUALS_FIELD |
| Nome | Tipo | Descrição |
|---|---|---|
| tabela | Cadeia de caracteres | Tabela a ser consultada, como tarefa ou incidente. |
| encoded_query | Cadeia de caracteres | Consulta codificada para aplicar 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 Prioridade, retornados como um objeto Fluxo 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 - selecionar (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, usando o nome do campo EXIBIÇÃO da empresa retorna o valor de exibição de um campo da empresa. Os sinalizadores possíveis incluem:
EXIBIÇÃORetorna o valor de exibição de um campo.CURRENCY_CODERetorna o código de moeda de um campo de moeda. Por exemplo,USD.CURRENCY_DISPLAYRetorna o valor de exibição de moeda de um campo de moeda. Por exemplo,¥123,45.CURRENCY_STRINGRetorna 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 para 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 como usar PARA EXIBIR 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 campos especificados.
Use este método ao retornar um único registro ou para testar se existe um registro. Se retornar vários registros, use selecionar() Método para retornar um objeto de fluxo.
Você pode anexar um sinalizador a um nome de campo para retornar os metadados do campo em vez do valor do campo. Por exemplo, usando o nome do campo EXIBIÇÃO da empresa retorna o valor de exibição de um campo da empresa. Os sinalizadores possíveis incluem:
EXIBIÇÃORetorna o valor de exibição de um campo.CURRENCY_CODERetorna o código de moeda de um campo de moeda. Por exemplo,USD.CURRENCY_DISPLAYRetorna o valor de exibição de moeda de um campo de moeda. Por exemplo,¥123,45.CURRENCY_STRINGRetorna 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 para 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 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 (campo de cadeia de caracteres)
Retorna a soma agregada de um determinado campo numérico.
- Inteiro
- Longa
- Número de ponto flutuante
- Duplo
- Moeda
| Nome | Tipo | Descrição |
|---|---|---|
| Assunto: | Cadeia de caracteres | Campo no qual executar a operação. |
| 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 GlideAggregrate se a consulta usar GlideQuery.Aggregate() método.
Depois de transformar a consulta, use consulta () método no GlideRecord ou GlideAggregate classes 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 GlideQuery.Aggregate() , em seguida, o método retorna um objeto GlideAggregrate. |
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 - atualização (mudanças de objeto, objetos selecionados)
Atualiza um registro existente que corresponde às condições definidas.
Antes de usar este método, chame onde() método 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 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 - updateMultiple (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 onde() método 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 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 atendem a um critério definido.
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 - where (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 |
|---|---|---|
| FieldOrQuery | Cadeia de caracteres ou GlideQuery | Ou outro objeto GlideQuery usado na cláusula WHERE. Se passar um campo, você poderá 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 é posterior a 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 severidade é 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 (campo de cadeia de caracteres)
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 - wheNull (campo de cadeia de caracteres)
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 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 GlideRecordSecure API para consultar com segurança o banco de dados e respeitar 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"
}