Interrogation des tables dans le script
À l’aide des méthodes de l’API GlideRecord, vous pouvez renvoyer tous les enregistrements d’une table, renvoyer les enregistrements d’une table qui répondent à des conditions spécifiques ou renvoyer les enregistrements qui incluent une chaîne à partir d’une seule table ou de plusieurs tables dans un groupe d’index de texte.
Interrogez les tables à l’aide de l’API GlideRecord. Pour obtenir des informations de référence sur l’API, consultez GlideRecord - Scoped.
Renvoyer tous les enregistrements d’une table
var target = new GlideRecord('incident');La création d’un objet GlideRecord crée une variable cible qui est un objet GlideRecord pour la table d’incidents.
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}Ce script envoie la requête query() à la base de données. Chaque appel à next() chargerait l’enregistrement suivant pour le traitement.
Renvoyer les enregistrements d’une table qui répondent aux conditions de requête
var target = new GlideRecord('incident');
target.addQuery('priority',1);
target.query(); // Issue the query to the database to get relevant records
while (target.next()) {
// add code here to process the incident record
}target.addQuery('priority', 1) ;. Cette ligne indique que vous souhaitez uniquement obtenir les enregistrements pour lesquels le priority champ est égal à 1. En général, la plupart des requêtes que vous souhaitez effectuer sont des requêtes d’égalité ; Requêtes où vous souhaitez trouver des enregistrements avec un champ égal à une valeur. Pour cette raison, vous n’avez pas besoin de fournir un opérateur d’égalité. Toutefois, supposons que vous vouliez rechercher tous les incidents pour lesquels le priority champ est supérieur à 1. Dans ce cas, vous devez spécifier l’opérateur que vous souhaitez appliquer à la requête.var target = new GlideRecord('incident') ;
target.addQuery('priority','>',1);
target.query(); // Issue the query to the database to get relevant records
while (target.next()) {
// add code here to process the incident record
}Renvoyer les enregistrements d’une table qui incluent une chaîne
Utilisez le nom réservé « 123TEXTQUERY321 » pour rechercher des correspondances de chaînes dans tous les champs d’une table. Par exemple, ce script renvoie les enregistrements de la table Incident avec des valeurs de champ qui incluent la chaîne « email ».
var now_GR = new GlideRecord('incident');
gr.addQuery('123TEXTQUERY321', 'email');
gr.query();
'123TEXTQUERY321' est une option réservée pour le name paramètre de la méthode addQuery(). Vous pouvez utiliser cette option dans une chaîne de requête codée. Par exemple, au lieu de gr.addQuery('123TEXTQUERY321', 'email') ;, vous pouvez utiliser gr.addEncodedQuery('123TEXTQUERY321=email').
La recherche de chaînes n’est pas sensible à la casse. Le système renvoie les mêmes résultats, que vous recherchiez E-mail, E-mail ou E-mail.
Renvoyer des enregistrements de plusieurs tables dans un groupe d’index de texte qui incluent une chaîne
Utilisez le nom réservé « 123TEXTINDEXGROUP321 » pour rechercher une chaîne dans une table à partir d’un groupe d’index de texte. Cette option renvoie des résultats avec des scores de pertinence calculés à l’aide des paramètres du groupe d’index de texte.
var now_GR = new GlideRecord('kb_knowledge');
gr.addQuery('123TEXTQUERY321', 'email');
gr.addQuery('123TEXTINDEXGROUP321', 'portal');
gr.query();Vous pouvez créer une requête similaire pour chaque table supplémentaire du groupe d’index « portail » que vous souhaitez rechercher, puis fusionner les résultats des requêtes individuelles, en affichant en premier les résultats ayant les scores de pertinence les plus élevés. Étant donné que toutes ces requêtes de recherche utilisent les mêmes paramètres de recherche de groupe d’index de texte, les scores de pertinence de leurs résultats sont tous normalisés de façon cohérente. Si vous cherchiez le même ensemble de tables sans utiliser la méthode gr.addQuery('123TEXTINDEXGROUP321', 'portal'), les scores de pertinence des requêtes individuelles seraient normalisés différemment et ne constitueraient pas une base utile pour trier le jeu de résultats fusionné.
'123TEXTINDEXGROUP321' est une option réservée pour le name paramètre dans la méthode addQuery(). Vous pouvez utiliser cette option dans une chaîne de requête codée. Par exemple, au lieu de gr.addQuery('123TEXTINDEXGROUP321', 'portal') ;, vous pouvez utiliser gr.addEncodedQuery('123TEXTINDEXGROUP321=portal').
La recherche de chaînes multi-tables n’est pas sensible à la casse. Le système renvoie les mêmes résultats, que vous recherchiez E-mail, E-mail ou E-mail.
Opérateurs JavaScript disponibles
Décrit les opérateurs qui peuvent être utilisés dans une requête addQuery().
| Champ | Définition | addQuery (en anglais seulement) |
|---|---|---|
| = | Le champ doit être égal à la valeur fournie. | addQuery('priorité', '=', 1) ; |
| > | La valeur du champ doit être supérieure à la valeur fournie. | addQuery('priorité', '>', 1) ; |
| < | La valeur du champ doit être inférieure à la valeur fournie. | addQuery('priorité', '<', 3) ; |
| >= | La valeur du champ doit être supérieure ou égale à la valeur fournie. | addQuery('priorité', '>=', 1) ; |
| <= | La valeur du champ doit être égale ou inférieure à la valeur fournie. | addQuery('priority', '<=', 3) ; |
| != | Le champ ne doit pas être égal à la valeur fournie. | addQuery('priorité', ' !=', 1) ; |
| STARTSWITH | Le champ doit commencer par la valeur fournie. L’exemple de droite renvoie tous les enregistrements dans lesquels le champ short_description commence par le texte Erreur. | addQuery('short_description', 'STARTSWITH', 'Erreur') ; |
| CONTIENT | Le champ doit contenir la valeur fournie quelque part dans le texte. L’exemple de droite renvoie tous les enregistrements dans lesquels le champ short_description contient le texte Erreur n’importe où dans le champ. Remarque : L’opération LIKE n’est pas prise en charge. Les administrateurs doivent utiliser CONTAINS dans la requête. |
addQuery('short_description', 'CONTIENT', 'Erreur') ; |
| DANS | Utilise une carte de valeurs autorisant les virgules et rassemble une collection d’enregistrements qui répondent à une autre exigence. Se comporte comme Sélectionner * <table> à partir duquel short_description IN ('Erreur', 'Réussite', 'Échec'), qui est identique à Sélectionner * à partir de <table> laquelle short_description='Erreur'. Par exemple, pour interroger toutes les valeurs variables qui appartiennent à une activité spécifique, utilisez la IN clause et stockez leurs sys_ids dans une carte ou une liste séparée par des virgules. Interrogez ensuite la table de valeurs de variables et fournissez cette liste de sys_ids. |
addQuery('short_description', 'IN', 'Erreur,Réussite,Échec') ; |
| ENDSWITH | Le champ doit se terminer avec la valeur fournie. L’exemple illustré à droite renvoie tous les enregistrements dans lesquels le champ short_description se termine par le texte Erreur. | addQuery('short_description', 'ENDSWITH', 'Erreur') ; |
| NE CONTIENT PAS | Sélectionne les enregistrements qui ne correspondent PAS au modèle dans le champ. Cet opérateur ne récupère pas les champs vides. Pour les valeurs vides, utilisez les opérateurs « est vide » ou « n’est pas vide ». L’exemple illustré à droite renvoie tous les enregistrements dans lesquels le champ short_description ne contient pas le mot « Erreur ». | addQuery('short_description', 'NE CONTIENT PAS', 'Erreur') ; |
| PAS DANS | Utilise une carte de valeurs autorisant les virgules et rassemble une collection d’enregistrements qui répondent à une autre exigence. Se comporte comme : Sélectionnez * <table> à partir duquel short_description NOT IN (« Erreur »). |
addQuery('short_description', 'NOT IN', 'Erreur,Réussite,Échec') ; |
| INSTANCEOF | Opérateur spécial qui récupère uniquement les enregistrements d’une « classe » spécifiée pour les tables étendues. L’exemple de code à droite montre comment récupérer tous les éléments de configuration classifiés en tant qu’ordinateurs. | addQuery('sys_class_name', 'INSTANCEOF', 'cmdb_ci_computer') ; |
Pour plus d’informations sur les opérateurs disponibles pour les filtres et les requêtes, reportez-vous à la section Operators available for filters and queries.
var target = new GlideRecord('incident');
target.addNullQuery('short_description');
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}var target = new GlideRecord('incident');
target.addNotNullQuery('short_description');
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}Pour plus d’informations sur l’API GlideRecord et ses méthodes disponibles, consultez GlideRecord.
Exemples de requêtes GlideRecord
Ces exemples montrent comment effectuer diverses requêtes GlideRecord .
query
var rec = new GlideRecord('incident');
rec.query();
while(rec.next()) {
gs.print(rec.number + ' exists'); }
mettre à jour
var rec = new GlideRecord('incident');
rec.addQuery('active',true);
rec.query();
while(rec.next()) {
rec.active = false;
gs.print('Active incident ' + rec.number = ' closed');
rec.update(); }
insérer
var rec = new GlideRecord('incident');
rec.initialize();
rec.short_description = 'Network problem';
rec.caller_id.setDisplayValue('Joe Employee');
rec.insert();
supprimer
var rec = new GlideRecord('incident');
rec.addQuery('active',false);
rec.query();
while(rec.next()) {
gs.print('Inactive incident ' + rec.number + ' deleted');
rec.deleteRecord(); }
Interrogation des tables de Service Catalog
var now_GR = new GlideRecord('sc_item_option_mtom');
gr.addQuery('sc_item_option.item_option_new.name','item_name');
gr.addQuery('sc_item_option.value','item_value');
gr.query();
while(gr.next()) {
gs.addInfoMessage(gr.request_item.number); }Pour plus d’informations, consultez GlideRecord.