GlideQuery : dans le champ d’application, global
L’include de script GlideQuery est une alternative à l’API GlideRecord pour effectuer des opérations CRUD sur les données d’enregistrement à partir de scripts côté serveur.
L’include de script GlideQuery vous permet :
- Utilisez des objets et des types JavaScript standard pour les requêtes et les résultats.
- Diagnostiquez rapidement les erreurs de requête avec des vérifications supplémentaires et des messages d’erreur clairs.
- Simplifiez votre code en évitant les modèles de requête passe-partout.
- Évitez les problèmes de performances courants sans avoir besoin d’une connaissance plus approfondie de GlideRecord.
new global.GlideQuery('sys_user')
// ...Cet include de script nécessite le module d’extension GlideQuery [com.sn_glidequery].Implémentation
Cet include de script fonctionne avec les APIde flux et facultatives dans unoù les appels de méthode s’enchaînent, chaque méthode s’appuyant sur le résultat renvoyé de la méthode précédente. Utilisez des méthodes pour définir les attributs de la requête. Les méthodes ne s’exécutent pas tant que vous n’avez pas appelé une méthode terminale, une méthode qui renvoie un résultat de requête, vous permettant de définir les exigences de la requête avant de l’exécuter.
Si la requête renvoie un seul enregistrement, le système enveloppe le résultat dans un objet facultatif. Si la requête renvoie un flux d’enregistrements, le système enveloppe le résultat dans un objet Stream. Ces objets vous permettent de gérer le résultat à l’aide d’un ensemble de méthodes dans chaque API.
Par exemple, ce script effectue une requête sur la table Tâche, regroupe les enregistrements par priorité et renvoie chaque priorité ayant un total de réaffectations supérieur à quatre.
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 reassignmentsGestion des erreurs
L’include de script GlideQuery génère une erreur lorsque votre requête rencontre un problème et inclut une explication claire pour vous guider. Ce script include vérifie :
- Champs non valides
- Types de valeurs non valides pour un champ
- Valeurs non valides pour les champs de choix
- Opérateurs de requête non valides
Par exemple, l’exemple de code suivant générerait une erreur car le champ interrogé n’existe pas dans la table.
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, ...Cet exemple de code générerait une erreur, car le type de données de l’un des arguments est incorrect.
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'Réutiliser
Étant donné que les objets GlideQuery sont immuables, vous pouvez les réutiliser ultérieurement dans d’autres parties de votre code. Par exemple, ce script crée une requête, puis utilise ultérieurement l’objet GlideQuery pour générer un rapport.
var highPriorityTasks = new global.GlideQuery('task')
.where('active', true)
.where('priority', 1);
generateReport(highPriorityTasks);
notifyOwners(highPriorityTasks);
var avgReassignmentCount = highPriorityTasks
.avg('reassignment_count')
.orElse(0)
Limitations
L’include de script GlideQuery ne prend pas en charge :
- Lecture ou écriture sur des tables qui n’autorisent pas l’accès à partir d’autres périmètres.
- Lecture de requêtes codées.
- Objets GlideDate ou GlideDateTime, qui sont lus comme des chaînes JavaScript.
- Champs de devises FX.
- Mise à jour des types de champ journal.
- Requêtes avec une logique conditionnelle ambiguë. Par exemple, la requête suivante n’est pas claire car le système ne sait pas s’il doit exécuter
(actif = vrai ET nom != nul) OU last_name = Luddyouactif = vrai ET (nom != nul OU last_name = Luddy).var user = new global.GlideQuery('sys_user') .where('active', true) .whereNotNull('name') .orWhere('last_name', 'Luddy') .selectOne() .get()Consultez la méthode where() pour comprendre comment imbriquer une requête enfant à la place.
Méthodes intermédiaires et terminales dans GlideQuery
L’include de script GlideQuery utilise deux catégories de méthodes : intermédiaire et terminale. Les méthodes intermédiaires sont les méthodes qui renvoient un flux, une API utilisée pour interagir avec un flux d’éléments tels que des enregistrements, permettant un style de syntaxe fluide où les appels sont enchaînés. Les méthodes terminales sont les méthodes qui ne renvoient pas de flux et arrêtent donc la chaîne d’appels de méthode Stream .
Dans l’include de script GlideQuery , des méthodes telles que where(), orderBy() et disableWorkflow() sont des méthodes intermédiaires qui renvoient un nouvel objet GlideQuery. De même, les méthodes de terminal les plus populaires de l’include de script GlideQuery , select() et selectOne(), sont des méthodes de terminal. Ces méthodes sont appelées lorsque GlideQuery a terminé sa configuration et est prêt à commencer le traitement des enregistrements. Il est important de garder à l’esprit les différences entre ces deux types de méthodes lors de la configuration des appels à l’include de script GlideQuery en fonction de vos cas d’utilisation spécifiques. Pour plus d’informations sur les méthodes intermédiaires et terminales, consultez l’article GlideQuery - Traitement des flux Partie 1.
Les méthodes suivantes sont classées comme intermédiaires :
- aggregate(String aggregateType, Champ de chaîne)
- disableAutoSysFields()
- disableWorkflow()
- forceUpdate()
- groupBy (champs de chaîne)
- having(String aggregateType, Champ de chaîne, Opérateur de chaîne, Valeur numérique)
- limit(limite de nombre)
- orderBy (champs de chaîne)
- orderByDesc(Champ de chaîneOrAgrégat, champ de chaîne)
- orWhere(String fieldOrQuery, opérateur de chaîne, n’importe quelle valeur)
- orWhereNotNull(champ de chaîne)
- orWhereNull(champ de chaîne)
- where(Chaîne fieldOrQuery, opérateur de chaîne, toute valeur)
- whereNotNull(champ de chaîne)
- whereNull (champ de chaîne)
- avec Acls()
Les méthodes suivantes sont classées comme terminales :
- avg (champ de chaîne)
- nombre ()
- deleteMultiple()
- get(Clé de chaîne, tableau selectedFields)
- getBy(Object, keyValues, tableau, selectedFields)
- insert(Object keyValues, Object selectedFields)
- insertOrUpdate(Object changes, Object selectedFields)
- max(champ de chaîne)
- min(champ de chaîne)
- select (champs de chaîne)
- selectOne(champs de chaîne)
- sum(champ de chaîne)
- toGlideRecord()
- update(changements d’objet, objet selectedFields)
- updateMultiple (changements d’objet)
GlideQuery : GlideQuery(table de chaînes)
Instancie un objet GlideQuery utilisé pour créer et exécuter des requêtes d’enregistrement.
| Nom | Type | Description |
|---|---|---|
| table | Chaîne | Table à interroger. |
| Type | Description |
|---|---|
| Néant |
Cet exemple instancie une requête de la table Utilisateur.
var query = new global.GlideQuery('sys_user');
GlideQuery : agrégat(String aggregateType, Champ de chaîne)
Regroupe un champ à l’aide d’une fonction d’agrégation spécifiée.
Utilisez cette méthode pour créer des requêtes qui s’agrègent sur plusieurs champs ou utilisent plusieurs fonctions d’agrégation, ou si vous devez utiliser la méthode groupBy(). Si vous ne souhaitez regrouper qu’un seul champ avec une seule fonction, et que vous n’avez pas besoin d’utiliser groupBy(), utilisez l’une de ces méthodes à la place :
- moy()
- min()
- max()
- nombre ()
| Nom | Type | Description |
|---|---|---|
| Type d’agrégat | Chaîne | Type de fonction d’agrégation à exécuter. Les options incluent :
|
| champ | Chaîne | Champ sur lequel effectuer l’opération. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
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 (champ de chaîne)
Renvoie la moyenne agrégée d’un champ numérique donné.
- Entier
- Long
- Nombre à virgule flottante
- Double
- Devise
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ sur lequel effectuer l’opération. |
| Type | Description |
|---|---|
| Facultatif | Objet contenant la moyenne agrégée du champ donné. |
Cet exemple montre comment renvoyer le nombre moyen d’erreurs dans la table cmdb_ci.
var faults = new global.GlideQuery('cmdb_ci')
.avg('fault_count')
.orElse(0);
gs.info(JSON.stringify(faults));
Sortie :
0.0037
GlideQuery : count()
Renvoie le nombre d’enregistrements qui correspondent à la requête.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Numéro | Nombre d’enregistrements qui correspondent à la requête. |
Cet exemple renvoie le nombre d’enregistrements actifs dans la table Utilisateur.
var userCount = new global.GlideQuery('sys_user')
.where('active', true)
.count();
Sortie :
612
GlideQuery : deleteMultiple()
Supprime tous les enregistrements dans la table spécifiée par les clauses Where précédentes.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Néant |
Cet exemple supprime tous les enregistrements actifs dans la table Utilisateur dont le nom de famille est Jeter.
var query = new global.GlideQuery('sys_user')
.where('active', true)
.where('last_name', 'Jeter')
.deleteMultiple();
GlideQuery : disableAutoSysFields()
Désactive la mise à jour des champs système ou des champs dont le nom commence par le préfixe sys , tel que sys_created_on, sys_updated_on et sys_mod_count. S’applique uniquement à la requête spécifiée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple ajoute un enregistrement à la table de tâches, mais ne définit pas les champs système. Sans appeler cette méthode, l’exemple ci-dessous mettrait à jour sys_updated_on, sys_mod_count, etc.
var query = new global.GlideQuery('task')
.disableAutoSysFields()
.insert({ description: 'example', priority: 1 });
GlideQuery : disableWorkflow()
Désactive les règles métier, les flux, les workflows ou les enregistrements d’audit qui s’exécuteraient ou seraient créés à la suite de la requête.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple met à jour plusieurs enregistrements dans la table Tâche sans déclencher de processus business automatiques.
var query = new global.GlideQuery('task')
.disableWorkflow()
.where('active', true)
.updateMultiple({ priority: 1 });
GlideQuery : forceUpdate()
Force une mise à jour de la base de données même lorsqu’aucun changement n’est apporté à l’enregistrement. Par exemple, vous pouvez utiliser cette méthode pour forcer l’exécution d’une règle métier.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple force les mises à jour des enregistrements de tâches avec une certaine sys_id.
var forceUpdate = new global.GlideQuery('task')
.forceUpdate()
.where('sys_id', taskId)
.update()
GlideQuery : get(clé de chaîne, tableau selectedFields)
Renvoie un enregistrement unique de la requête.
| Nom | Type | Description |
|---|---|---|
| clé | Chaîne | Sys_id de l’enregistrement à renvoyer. |
| selectedFields | Tableau | Facultatif. Champs supplémentaires à renvoyer dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un seul enregistrement. |
Exemple qui renvoie un enregistrement basé sur 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));
Sortie :
{
"sys_id":"5137153cc611227c000bbd1bd8cd2005",
"first_name":"Fred",
"last_name":"Luddy"
}
GlideQuery : getBy(Object keyValues, tableau selectedFields)
Renvoie un objet facultatif contenant un seul enregistrement en fonction d’un ensemble de paires nom-valeur à interroger. Assume l’opérateur « = » pour chaque paire nom-valeur.
| Nom | Type | Description |
|---|---|---|
| Valeurs clés | Objet | Objet où les clés sont le nom des champs et les valeurs sont les valeurs à interroger. |
| selectedFields | Tableau | Facultatif. Champs supplémentaires à renvoyer dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un seul enregistrement. |
Exemple qui renvoie un enregistrement en interrogeant le nom d’un utilisateur.
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));
Sortie :
{
"first_name":"Fred",
"last_name":"Luddy",
"city":null,
"active":true,
"sys_id":"5137153cc611227c000bbd1bd8cd2005"
}
GlideQuery : groupBy (champs de chaîne)
Regroupe les résultats de la requête par un ou plusieurs champs désignés.
Vous devez utiliser cette méthode avec la méthode aggregate( ).
| Nom | Type | Description |
|---|---|---|
| champs | Chaîne ou tableau de chaînes | Champ(s) ou champs sur lesquels regrouper les résultats. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
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 : having (String aggregateType, String field, String operator, Number value)
Filtre les groupes d’agrégats afin de pouvoir afficher uniquement les groupes de résultats qui correspondent à une condition spécifiée.
Doit utiliser cette méthode avec les méthodes aggregate() ou groupBy().
| Nom | Type | Description |
|---|---|---|
| Type d’agrégat | Chaîne | Type de fonction d’agrégation à exécuter. Les options incluent :
|
| champ | Chaîne | Champ sur lequel effectuer l’opération. |
| opérateur | Chaîne | Opérateur numérique à utiliser dans l’opération. Les options incluent :
|
| valide | Numéro | Valeur numérique à utiliser dans l’opération. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
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(Object keyValues, Object selectedFields)
Insère un enregistrement et renvoie un objet facultatif contenant l’enregistrement.
| Nom | Type | Description |
|---|---|---|
| Valeurs clés | Objet | Objet contenant des paires nom-valeur à insérer dans l’enregistrement. Les champs non spécifiés seront nuls. |
| selectedFields | Tableau | Facultatif. Champs supplémentaires à renvoyer dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un seul enregistrement. |
Cet exemple montre comment insérer un enregistrement basé sur le prénom et le nom d’un utilisateur.
var fred = new global.GlideQuery('sys_user')
.insert({ first_name: 'Fred', last_name: 'Luddy' })
.get();
gs.info(JSON.stringify(fred, null, 2));
Sortie :
{
"sys_id":"cf16eed0e82a9010f8778bda83d255d2",
"first_name":"Fred",
"last_name":"Luddy"
}
GlideQuery : insertOrUpdate(Object changes, Object selectedFields)
Met à jour un enregistrement existant ou insère un nouvel enregistrement s’il n’en existe pas déjà.
| Nom | Type | Description |
|---|---|---|
| Changements | Objet | Objet contenant des paires nom-valeur à mettre à jour ou à insérer dans l’enregistrement. |
| selectedFields | Tableau | Facultatif. Champs supplémentaires à renvoyer dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un seul enregistrement. |
Cet exemple montre comment insérer un nouvel enregistrement qui n’existe pas déjà dans le système.
// insert a new record
var user = new GlideQuery('sys_user')
.insertOrUpdate({
first_name: 'George',
last_name: 'Griffey'
})
.orElse(null);
Cet exemple montre comment mettre à jour un enregistrement existant.
// 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 nombre)
Limite le nombre d’enregistrements renvoyés dans une requête.
| Nom | Type | Description |
|---|---|---|
| limite | Numéro | Nombre d’enregistrements à renvoyer. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment limiter les résultats renvoyés à cinq enregistrements.
var incidents = new global.GlideQuery('incident')
.limit(5)
.select('priority', 'description')
.forEach(function (incident){
gs.info(JSON.stringify(incident, null, 2));
});
Sortie :
*** 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(champ de chaîne)
Renvoie le maximum agrégé d’un champ donné.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ sur lequel effectuer l’opération. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un seul enregistrement. |
Cet exemple montre comment renvoyer la valeur maximale, ou la valeur alphanumérique la plus élevée, d’un champ donné.
var name = new global.GlideQuery('sys_user')
.max('last_name')
.orElse('');
gs.info(JSON.stringify(name));
Sortie :
"Zortman"
GlideQuery : min(champ de chaîne)
Renvoie la valeur minimale agrégée d’un champ donné.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ sur lequel effectuer l’opération. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un seul enregistrement. |
Cet exemple montre comment renvoyer la valeur minimale, ou la valeur alphanumérique la plus basse, d’un champ donné.
var name = new global.GlideQuery('sys_user')
.min('last_name')
.orElse('');
gs.info(JSON.stringify(name));
Sortie :
"Abel"
GlideQuery : orderBy (champs de chaîne)
Trie les résultats renvoyés par ordre croissant selon un champ donné.
| Nom | Type | Description |
|---|---|---|
| champs | Chaîne | Champs délimités par des virgules pour trier le résultat par ordre croissant. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment trier les résultats par ordre croissant par numéro d’enregistrement.
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));
});
Sortie :
*** 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(String fieldOrAggregate, String field)
Trie le résultat renvoyé par ordre décroissant selon un champ donné.
| Nom | Type | Description |
|---|---|---|
| fieldOrAgrégat | Chaîne | Si la requête n’utilise pas la méthode aggregate( ), transmettez le champ pour trier les résultats. Si la requête utilise la méthode aggregate(), transmettez le type de fonction d’agrégation à exécuter. Les options incluent :
|
| champ | Chaîne | Facultatif. Champ dans lequel classer les résultats par ordre décroissant. Requis pour les requêtes utilisant la méthode aggregate( ). |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment trier le résultat par ordre décroissant par numéro.
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));
});
Sortie :
*** 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"
}
Cet exemple montre comment trier un résultat agrégé par la somme des incidents enfants.
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));
});
Sortie :
*** 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 : orWhere(String fieldOrQuery, opérateur de chaîne, n’importe quelle valeur)
Ajoute une clause OU à une requête qui renvoie des valeurs en fonction d’une condition donnée.
| Nom | Type | Description |
|---|---|---|
| fieldOrQuery | Chaîne ou GlideQuery | Field ou un autre objet GlideQuery utilisé dans la clause where. Si vous transmettez un champ, vous pouvez remonter pas à pas jusqu’à la valeur souhaitée. Par exemple, « company.name ». |
| opérateur | Chaîne | Facultatif. Opérateur utilisé dans la clause OU. Si vous ne passez pas d’argument, le système utilise l’opérateur =. Vous n’avez pas besoin d’inclure une valeur d’espace réservé. |
| valide | N'importe lequel | Valeur utilisée dans la clause OU. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment ajouter une clause OU simple à une requête.
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));
});
Sortie :
*** 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"
}
Cet exemple montre comment ajouter une clause orWhere qui contient une requête distincte.
// 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));
});
Sortie :
*** 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 : orWhereNotNull(champ de chaîne)
Ajoute une clause OU qui renvoie les enregistrements qui ne contiennent pas de valeur Null dans un champ donné.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ utilisé dans la requête. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment interroger la table Utilisateur et renvoyer des résultats dans lesquels le prénom ou le nom n’est pas nul.
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));
});
Sortie :
*** 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 : orWhereNull(champ de chaîne)
Ajoute une clause OU à une requête qui renvoie les enregistrements contenant une valeur nulle dans un champ donné.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ utilisé dans la requête. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment interroger la table User et renvoyer des enregistrements où le prénom ou le nom sont nuls.
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));
});
Sortie :
*** 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(Table de chaînes, Chaîne encoded_query )
Ajoute une requête codée à une nouvelle requête GlideQuery .
Cette méthode ne prend pas en charge tous les opérateurs de requête codée GlideRecord . Les opérateurs suivants sont actuellement pris en charge :
= |
RIEN |
GT_FIELD |
NON DANS |
!= |
ENTRE |
GT_OR_EQUALS_FIELD |
DIFFÉRENT DE |
> |
CONTIENT |
DANS |
NSAMEAS |
>= |
NE CONTIENT PAS |
INSTANCEDE |
SUR |
< |
DYNAMIQUE |
COMME |
SAMEAS |
<= |
CHAÎNE VIDE |
LT_FIELD |
STARTSWITH |
SE TERMINE PAR |
LT_OR_EQUALS_FIELD |
| Nom | Type | Description |
|---|---|---|
| table | Chaîne | Table à interroger, telle qu’une tâche ou un incident. |
| encoded_query | Chaîne | Requête codée à appliquer aux enregistrements de la table spécifiée. |
| Type | Description |
|---|---|
| Requête GlideQuery | Objet GlideQuery contenant la requête codée. |
L’exemple suivant crée un objet GlideQuery qui contient tous les enregistrements actifs de la table de tâches, classés par le champ de priorité, renvoyé en tant qu’objet Stream contenant uniquement le champ de description.
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 : sélectionner (champs de chaîne)
Renvoie les résultats de la requête sous la forme d’un objet de flux contenant les champs spécifiés.
Vous pouvez ajouter un marqueur à un nom de champ pour renvoyer les métadonnées du champ au lieu de la valeur du champ. Par exemple, l’utilisation du nom de champ company$DISPLAY renvoie la valeur d’affichage d’un champ de société. Les marqueurs possibles sont les suivants :
AFFICHAGE: renvoie la valeur d’affichage d’un champ.CURRENCY_CODE: renvoie le code de devise d’un champ de devise. Par exemple,USD.CURRENCY_DISPLAY: renvoie la valeur d’affichage de devise d’un champ de devise. Par exemple,123,45 ¥.CURRENCY_STRING: renvoie la chaîne de devise d’un champ de devise. Par exemple,JPY ; 123.45.
| Nom | Type | Description |
|---|---|---|
| champs | Chaîne ou tableau de chaînes | Facultatif. Champs à afficher dans le résultat. Vous pouvez fournir n’importe quel nombre de champs en tant qu’arguments, remonter pas à pas vers une valeur souhaitée ou utiliser un marqueur. Par exemple : ou
Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Flux | Objet utilisé pour interagir avec un flux d’éléments tels que des enregistrements. |
Cet exemple montre comment sélectionner les champs à afficher à partir de la requête et utiliser $DISPLAY pour renvoyer la valeur d’affichage d’un champ.
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));
});
Sortie :
*** 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(champs de chaîne)
Renvoie le résultat de la requête sous la forme d’un objet facultatif contenant les champs spécifiés.
Utilisez cette méthode lors du renvoi d’un seul enregistrement ou pour tester si un enregistrement existe. Si vous renvoyez plusieurs enregistrements, utilisez la méthode select() pour renvoyer un objet Stream.
Vous pouvez ajouter un marqueur à un nom de champ pour renvoyer les métadonnées du champ au lieu de la valeur du champ. Par exemple, l’utilisation du nom de champ company$DISPLAY renvoie la valeur d’affichage d’un champ de société. Les marqueurs possibles sont les suivants :
AFFICHAGE: renvoie la valeur d’affichage d’un champ.CURRENCY_CODE: renvoie le code de devise d’un champ de devise. Par exemple,USD.CURRENCY_DISPLAY: renvoie la valeur d’affichage de devise d’un champ de devise. Par exemple,123,45 ¥.CURRENCY_STRING: renvoie la chaîne de devise d’un champ de devise. Par exemple,JPY ; 123.45.
| Nom | Type | Description |
|---|---|---|
| champs | Chaîne ou tableau de chaînes | Facultatif. Champs à afficher dans le résultat. Vous pouvez fournir n’importe quel nombre de champs en tant qu’arguments, remonter pas à pas vers une valeur souhaitée ou utiliser un marqueur. Par exemple : ou
Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un seul enregistrement. |
Cet exemple montre comment renvoyer un seul enregistrement en tant qu’objet facultatif et afficher les champs spécifiés.
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));
Sortie :
{
"first_name":"Abel",
"last_name":"Tuter",
"company$DISPLAY":"ACME South America",
"sys_id":"62826bf03710200044e0bfc8bcbe5df1"
}
GlideQuery : sum(champ de chaîne)
Renvoie la somme agrégée d’un champ numérique donné.
- Entier
- Long
- Nombre à virgule flottante
- Double
- Devise
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ sur lequel effectuer l’opération. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un seul enregistrement. |
Cet exemple montre comment renvoyer la somme de toutes les erreurs dans la table cmdb_ci.
var totalFaults = new global.GlideQuery('cmdb_ci')
.sum('fault_count')
.orElse(0);
gs.info(JSON.stringify(totalFaults));
Sortie :
10
GlideQuery : toGlideRecord()
Renvoie un objet GlideRecord qui représente la requête actuelle. Renvoie un objet GlideAggregrate si la requête utilise la méthode GlideQuery.aggregate( ).
Après avoir transformé la requête, utilisez la méthode query() dans les classes GlideRecord ou GlideAggregate pour interroger la base de données.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| GlideRecord ou GlideAggregate | Objet GlideRecord qui contient la requête. Si vous avez utilisé la méthode GlideQuery.aggregate(), la méthode renvoie un objet GlideAggregrate à la place. |
Cet exemple montre comment transformer un objet GlideQuery en GlideRecord.
var userGr = new global.GlideQuery('sys_user')
.where('active', true)
.whereNotNull('first_name')
.limit(10)
.toGlideRecord();
userGr.query();
GlideQuery : update(Object changes, Object selectedFields)
Met à jour un enregistrement existant qui correspond aux conditions définies.
Avant d’utiliser cette méthode, appelez la méthode where() pour spécifier les conditions qu’un enregistrement doit remplir pour être mis à jour.
| Nom | Type | Description |
|---|---|---|
| Changements | Objet | Objet contenant des paires nom-valeur à mettre à jour dans l’enregistrement. Les noms doivent correspondre aux champs de la table. |
| selectedFields | Tableau | Facultatif. Champs supplémentaires à renvoyer dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un seul enregistrement. |
Cet exemple montre comment mettre à jour un enregistrement avec de nouvelles valeurs.
var updateRecord = new global.GlideQuery('sys_user')
.where('sys_id', '0a826bf03710200044e0bfc8bcbe5d7a')
.update({ city: 'Los Angeles' });
GlideQuery : updateMultiple(Changements d’objet)
Met à jour tous les enregistrements existants qui correspondent aux conditions définies. Renvoie le nombre d’enregistrements mis à jour.
Avant d’utiliser cette méthode, appelez la méthode where() pour spécifier les conditions que les enregistrements doivent remplir pour être mis à jour.
| Nom | Type | Description |
|---|---|---|
| Changements | Objet | Objet contenant des paires nom-valeur à mettre à jour dans l’enregistrement. Les noms doivent correspondre aux champs de la table. |
| Type | Description |
|---|---|
| Objet | Objet contenant le nombre d’enregistrements qui ont été mis à jour. Les clés comprennent :
|
Cet exemple montre comment mettre à jour des enregistrements qui correspondent à des critères définis.
var update = new global.GlideQuery('sys_user')
.where('active', false)
.where('last_name', 'Griffey')
.updateMultiple({ active: true });
gs.info(JSON.stringify(update));
Sortie :
{"rowCount":1}
GlideQuery : où(Chaîne champOrRequête, opérateur de chaîne, valeur quelconque)
Ajoute une clause Where à la requête qui renvoie des valeurs en fonction d’une condition donnée.
| Nom | Type | Description |
|---|---|---|
| fieldOrQuery | Chaîne ou GlideQuery | Field ou un autre objet GlideQuery utilisé dans la clause where. Si vous transmettez un champ, vous pouvez remonter pas à pas jusqu’à la valeur souhaitée. Par exemple, « company.name ». |
| opérateur | Chaîne | Facultatif. Opérateur utilisé dans la clause where. Si vous ne passez pas d’argument, le système utilise l’opérateur =. |
| valide | N'importe lequel | Valeur utilisée dans la clause where. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment renvoyer des enregistrements de la table Utilisateur où actif est défini sur vrai et où la dernière connexion de l’utilisateur est postérieure à une date spécifiée.
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));
});
Sortie :
*** Script: {
"sys_id": "6816f79cc0a8016401c5a33be04be441"
}
*** Script: {
"sys_id": "005d500b536073005e0addeeff7b12f4"
}
*** Script: {
"sys_id": "d999e5fc77e72300454792718a10611d"
}
*** Script: {
"sys_id": "30ad318577ab2300454792718a10619e"
}
*** Script: {
"sys_id": "3883f4c0730123002728660c4cf6a754"
}
Cet exemple montre comment renvoyer des enregistrements de la table Incident où actif est défini sur vrai et où la priorité ou la gravité est 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));
Sortie :
[
{
"sys_id":"b0f31e5673500010c2e7660c4cf6a711"
},
{
"sys_id":"8ff5b254b33213005e3de13516a8dcf7"
},
{
"sys_id":"d999e5fc77e72300454792718a10611d"
},
{
"sys_id":"30ad318577ab2300454792718a10619e"
},
{
"sys_id":"3883f4c0730123002728660c4cf6a754"
}
]
GlideQuery : whereNotNull(champ de chaîne)
Renvoie les enregistrements qui ne contiennent pas de valeur Null dans un champ donné.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ utilisé dans la requête. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment interroger la table Utilisateur et renvoyer des résultats lorsque le champ first_name n’est pas nul.
var query = new global.GlideQuery('sys_user')
.whereNotNull('first_name')
.select('name')
.limit(5)
.forEach(function (user){
gs.info(JSON.stringify(user, null, 2));
});
Sortie :
*** 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(champ de chaîne)
Renvoie les enregistrements qui contiennent une valeur Null dans un champ donné.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ utilisé dans la requête. |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment interroger la table User et renvoyer des enregistrements où le prénom ou le nom sont nuls.
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));
});
Sortie :
*** 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()
Exécute la requête à l’aide de l’API GlideRecordSecure pour interroger la base de données en toute sécurité tout en respectant les ACL.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Requête GlideQuery | L’objet de requête en cours de création. |
Cet exemple montre comment exécuter une requête sécurisée à l’aide d’ACL.
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));
});
Sortie :
*** 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"
}