GlideQuery : inclus, global
Le script include 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 d’effectuer les opérations suivantes :
- Utilisez des objets et des types JavaScript standard pour les requêtes et les résultats.
- Diagnostiquez rapidement les erreurs de requête grâce à des vérifications supplémentaires et effacez les messages d’erreur.
- Simplifiez votre code en évitant les modèles de requêtes passe-partout.
- Évitez les problèmes de performances courants sans avoir besoin d’une connaissance 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 conjointement avec l’API de flux et l’API facultative dans un Modèle de générateur où la méthode appelle la chaîne, chaque méthode s’appuyant sur le résultat retourné 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 terminal, une méthode qui renvoie un résultat de requête, ce qui vous permet de définir les exigences de la requête avant de l’exécuter.
Si la requête ne renvoie qu’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é dont le total des réaffectations est 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 lève une erreur lorsque votre requête présente un problème et inclut une explication claire pour vous guider. Cet include de script vérifie les éléments suivants :
- 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 l’objet GlideQuery ultérieurement 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
Le script include GlideQuery ne prend pas en charge :
- Lire ou écrire sur des tables qui n’autorisent pas l’accès à partir d’autres périmètres.
- Lecture de requêtes codées.
- Les 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 faut exécuter
(active = vrai ET nom != null) OU last_name = Luddyouactive = vrai ET (nom != null OU last_name = Luddy).var user = new global.GlideQuery('sys_user') .where('active', true) .whereNotNull('name') .orWhere('last_name', 'Luddy') .selectOne() .get()Voir 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 comme 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 terminales les plus populaires du script include GlideQuery , select() et selectOne(), sont des méthodes terminales. Ces méthodes sont appelées lorsque GlideQuery a terminé d’être configuré et qu’il est prêt à commencer à traiter les 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 de flux Partie 1.
Les méthodes suivantes sont classées comme intermédiaires :
- aggregate(Chaîne, aggregateType, champ de chaîne)
- disableAutoSysFields()
- disableWorkflow()
- forceUpdate()
- groupBy (champs de chaînes)
- having(String aggregateType, champ de chaîne, opérateur de chaîne, valeur de numéro)
- limit(limite de nombre)
- orderBy(champs de chaînes)
- orderByDesc(String fieldOrAggregate, String field)
- orWhere(String fieldOrQuery, opérateur de chaîne, n’importe quelle valeur)
- ouWhereNotNull(champ de chaîne)
- orWhereNull(champ de chaîne)
- where(String fieldOrQuery, Opérateur de chaîne, N’importe quelle valeur)
- whereNotNull(champ de chaîne)
- whereNull(champ de chaîne)
- withAcls()
Les méthodes suivantes sont classées comme terminales :
- avg (champ de chaîne)
- count()
- deleteMultiple()
- get(String key, Array selectedFields)
- getBy(Objet cléValeurs, Tableau selectedFields)
- insérer(Objet cléValeurs, Objet selectedFields)
- insertOrUpdate(Object changes, Object selectedFields)
- max(Champ de chaîne)
- min(Champ de chaîne)
- select(champs de chaînes)
- selectOne(champs de chaîne)
- somme(champ de chaîne)
- toGlideRecord()
- mettre à jour(Objet modifié, objet selectedFields)
- updateMultiple(L’objet change)
GlideQuery : GlideQuery (table de chaînes)
Instancie un objet GlideQuery utilisé pour générer et exécuter des requêtes d’enregistrement.
| Nom | Type | Description |
|---|---|---|
| table | Chaîne | Table à interroger. |
| Type | Description |
|---|---|
| Aucun |
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 construire 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 plutôt l’une de ces méthodes :
- avg()
- min()
- max()
- count()
| 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 |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
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 qui contient 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 de la table spécifiée par les clauses Where précédentes.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Aucun |
Cet exemple supprime tous les enregistrements actifs de 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 système , tels 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 |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
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 toutes les règles métier, tous les flux, tous les workflows ou tous les enregistrements d’audit qui pourraient être exécutés ou créés à la suite de la requête.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
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 la mise à jour de la base de données, même si 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 |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
Cet exemple force les mises à jour des enregistrements de tâches avec un certain sys_id.
var forceUpdate = new global.GlideQuery('task')
.forceUpdate()
.where('sys_id', taskId)
.update()
GlideQuery : obtenir (clé de chaîne, tableau selectedFields)
Renvoie un enregistrement unique à partir de la requête.
| Nom | Type | Description |
|---|---|---|
| key | Chaîne | Sys_id de l’enregistrement à renvoyer. |
| selectedFields | Tableau | Facultatif. Champs supplémentaires à retourner dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un enregistrement unique. |
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, Array selectedFields)
Renvoie un objet facultatif contenant un seul enregistrement basé sur un ensemble de paires nom-valeur à interroger. Suppose l’opérateur « = » pour chaque paire nom-valeur.
| Nom | Type | Description |
|---|---|---|
| Valeurs clés | Objet | Objet où les clés correspondent au nom des champs et où les valeurs correspondent aux valeurs à interroger. |
| selectedFields | Tableau | Facultatif. Champs supplémentaires à retourner dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un enregistrement unique. |
Exemple qui renvoie un enregistrement en requérant 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 champ ou 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) sur lesquels regrouper les résultats. |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
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, champ de chaîne, opérateur de chaîne, valeur de numéro)
Filtre les groupes d’agrégats afin que vous puissiez 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 de nombre à utiliser dans l’opération. |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
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 : insérer(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 à retourner dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un enregistrement unique. |
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à un.
| 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 à retourner dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un enregistrement unique. |
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 |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
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 d’agrégat 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 enregistrement unique. |
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 le minimum d’agrégat 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 enregistrement unique. |
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 le résultat renvoyé par ordre croissant selon un champ donné.
| Nom | Type | Description |
|---|---|---|
| champs | Chaîne | Champs séparés par des virgules pour trier le résultat par ordre croissant. |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
Cet exemple montre comment classer les résultats par ordre croissant en fonction du 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 |
|---|---|---|
| fieldOrAggregate | 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 permettant de trier le résultat par ordre décroissant. Requis pour les requêtes utilisant la méthode aggregate(). |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
Cet exemple montre comment classer le résultat par nombre décroissant.
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 OR à une requête qui renvoie des valeurs basées sur une condition donnée.
| Nom | Type | Description |
|---|---|---|
| fieldOrQuery | Chaîne ou GlideQuery | Champ 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 OR. Si vous ne transmettez 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 OR. |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
Cet exemple montre comment ajouter une clause OR 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 OR qui renvoie les enregistrements qui ne contiennent pas de valeur nulle dans un champ donné.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ utilisé dans la requête. |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
Cet exemple montre comment interroger la table Utilisateur et renvoyer des résultats dans lesquels le prénom ou le nom de famille 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 qui contiennent une valeur nulle dans un champ donné.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ utilisé dans la requête. |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
Cet exemple montre comment interroger la table Utilisateur et renvoyer des enregistrements dont le prénom ou le nom est nul.
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 |
PAS DANS |
!= |
ENTRE |
GT_OR_EQUALS_FIELD |
DIFFÉRENT DE |
> |
CONTIENT |
DANS |
NSAMEAS (en anglais seulement) |
>= |
NE CONTIENT PAS |
INSTANCEOF |
ACTIVÉ |
< |
DYNAMIQUE |
COMME |
IDENTIQUES |
<= |
EMPTYSTRING |
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 |
|---|---|
| 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 champ de priorité, renvoyés sous la forme d’un 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 : select (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é. Marqueurs possibles :
DISPLAY: 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 ; Débloquer le numéro 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 des 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 enregistrement unique ou pour vérifier 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é. Marqueurs possibles :
DISPLAY: 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 ; Débloquer le numéro 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 enregistrement unique. |
Cet exemple montre comment retourner 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 : somme (champ de chaîne)
Renvoie la somme des agrégats 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 enregistrement unique. |
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 : mettre à jour (objets modifiés, objet 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 les paires nom-valeur à mettre à jour dans l’enregistrement. Les noms doivent correspondre aux champs de la table. |
| selectedFields | Tableau | Facultatif. Champs supplémentaires à retourner dans le résultat. Par défaut : le système renvoie toujours le sys_id. |
| Type | Description |
|---|---|
| Facultatif | Objet utilisé pour interagir avec un enregistrement unique. |
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’objets)
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 les 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 sont les suivantes :
|
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 - where(String fieldOrQuery, String operator, Any value)
Ajoute une clause Where à la requête qui renvoie des valeurs basées sur une condition donnée.
| Nom | Type | Description |
|---|---|---|
| fieldOrQuery | Chaîne ou GlideQuery | Champ 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 transmettez pas d’argument, le système utilise l’opérateur =. |
| valide | N'importe lequel | Valeur utilisée dans la clause where. |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
Cet exemple montre comment renvoyer les enregistrements de la table Utilisateur où actif est vrai et où la dernière connexion de l’utilisateur est ulté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 les enregistrements de la table Incident où actif est 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 |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
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 nulle dans un champ donné.
| Nom | Type | Description |
|---|---|---|
| champ | Chaîne | Champ utilisé dans la requête. |
| Type | Description |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
Cet exemple montre comment interroger la table Utilisateur et renvoyer des enregistrements dont le prénom ou le nom est nul.
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 |
|---|---|
| GlideQuery | Objet de requête en cours de construction. |
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"
}