GlideRecord : client
L’API GlideRecord fournit des méthodes qui effectuent des opérations de base de données. Cette API permet l’utilisation de certaines fonctionnalités GlideRecord dans les scripts côté client, tels que les scripts clients et les scripts de politique d’interface utilisateur.
Un GlideRecord contient à la fois des enregistrements et des champs. Les requêtes effectuées à l’aide des méthodes GlideRecord côté client sont exécutées sur le serveur. Par conséquent, une demande est effectuée à partir du navigateur du client pour obtenir les données d’enregistrement.
L’API GlideRecord côté client n’est pas prise en charge dans les applications incluses dans le périmètre. Au lieu de cela, créez un script include et utilisez l’API GlideAJAX , ou utilisez les API REST. En outre, cette API applique des listes de contrôle d’accès (ACL) basées sur les informations d’identification de l’utilisateur qui exécute le script. Pour exécuter le code sur le serveur sans ACL, utilisez l’API GlideAjax .
Côté client GlideRecord : GlideRecord(String tableName)
Crée une instance de la classe GlideRecord pour la table spécifiée.
| Nom | Type | Description |
|---|---|---|
| tableName | Chaîne | Table à utiliser. |
var now_GR = new GlideRecord('incident');
Côté client GlideRecord : addOrderBy(colonne de chaîne)
Ajoute une colonne pour trier par dans la requête.
| Nom | Type | Description |
|---|---|---|
| colonne | Chaîne | La colonne par laquelle ordonner l’ensemble de résultats. |
| Type | Description |
|---|---|
| nul |
Côté client GlideRecord : addQuery(nom de la chaîne, valeur de l’objet)
Ajoute une requête pour renvoyer les enregistrements dans lesquels le nom de champ spécifié est égal à une valeur spécifiée (ou se trouve dans une liste de valeurs).
Si vous êtes familier avec SQL, cette méthode est similaire à la clause « where ». Vous pouvez créer une ou plusieurs requêtes pour un seul filtre en appelant cette méthode plusieurs fois ; pour cette méthode, les requêtes sont AND’ed. Une fois que vous avez défini toutes les requêtes souhaitées, appelez le Côté client GlideRecord : query(nom de chaîne, fonction responseFunction, valeur de chaîne) pour exécuter la clause de requête spécifiée (filtre).
Pour effectuer une opération autre que AND, utilisez soit la méthode addQuery(nom de chaîne, opérateur d’objet, valeur d’objet), soit la méthode setEncodedQuery().
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Nom du champ à vérifier. |
| valide | Objet | Valeur ou liste de valeurs à interroger. |
| Type | Description |
|---|---|
| nul |
Exemple montrant plusieurs requêtes.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('priority', 4); // Priority is 4 – Low and,
now_GR.addQuery('state', 3); // State is On Hold
now_GR.query(response);
function response(result) {
while(result.next()) {
// Print all INC with priority 4 – Low AND state is On Hold
console.log(result.getValue('number'));
}
}
Exemple montrant comment passer un objet de chaîne.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('short_description', new String('USB device not working')); // string object
now_GR.addQuery('priority', 4); //number
now_GR.query(response);
function response(result) {
while(result.next()) {
// Print all INC with priority 4 – Low AND short description contains 'USB device not working'
console.log(result.getValue('number'));
}
}
Côté client GlideRecord : addQuery(nom de chaîne, opérateur d’objet, valeur d’objet)
Ajoute un filtre pour renvoyer les enregistrements lorsque le champ remplit la condition spécifiée (champ, opérateur, valeur).
Si vous êtes familier avec SQL, cette méthode est similaire à la clause « where ». Vous pouvez créer une ou plusieurs requêtes pour un seul filtre en appelant cette méthode plusieurs fois. Une fois que vous avez défini toutes les requêtes souhaitées, appelez le Côté client GlideRecord : query(nom de chaîne, fonction responseFunction, valeur de chaîne) pour exécuter la clause de requête spécifiée (filtre).
Pour créer des requêtes plus complexes, utilisez la méthode setEncodedQuery().
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Nom du champ à vérifier. |
| opérateur | Objet | Opérateur de requête. Les valeurs disponibles dépendent du type de données du paramètre de valeur . Nombres:
Chaînes (doit être en majuscules) :
Remarque : N’utilisez pas l’opérateur LIKE. Utilisez CONTAINS à la place. |
| valide | Objet | Valeur sur laquelle poser une question (non sensible à la casse). |
| Type | Description |
|---|---|
| nul |
Exemple montrant comment ajouter plusieurs requêtes à un filtre.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('priority', '<=', 2); // Priority is 2 or higher and,
now_GR.addQuery('short_description', 'CONTAINS', 'crash'); // Short description contains the word crash
now_GR.query(response);
function response(result) {
while(result.next()) {
// Print all INC with priority of 2 or higher AND short description contains "crash"
console.log(result.getValue('number'));
}
}
Exemple montrant comment transmettre un tableau pour vérifier plusieurs conditions dans une seule requête.
var priorities = [4,2];
var now_GR = new GlideRecord('incident');
now_GR.addQuery('priority', 'IN', priorities);
now_GR.query(response);
function response(result) {
while(result.next()) {
console.log(result.getValue('number'));
}
}
Côté client GlideRecord : deleteRecord(Function responseFunction)
Supprime l’enregistrement actuel et appelle la fonction de réponse spécifiée une fois terminé.
| Nom | Type | Description |
|---|---|---|
| Fonction de réponse | Fonction | Fonction de réponse pour le rappel. |
| Type | Description |
|---|---|
| Aucun |
Cet exemple supprime un enregistrement, puis appelle la réponse de la fonction de réponse pour consigner un message d’alerte.
var recordGR = new GlideRecord('incident');
if (recordGR.get('99ebb4156fa831005be8883e6b3ee4b9')) {
recordGR.deleteRecord(response);
}
function response(result) {
alert('Deleted record sys_id: ' + result.getValue('sys_id'));
}
Sortie :
Deleted record sys_id: 99ebb4156fa831005be8883e6b3ee4b9
Côté client GlideRecord : obtenir (chaîne sys_id)
Exécute une requête GlideRecord pour un enregistrement avec le sys_id spécifié. Cette méthode est censée être utilisée pour interroger des enregistrements uniques, afin qu’une opération suivante soit effectuée avant le renvoi.
| Nom | Type | Description |
|---|---|---|
| sys_id | Chaîne | Le sys_id de l’enregistrement à trouver. |
| Type | Description |
|---|---|
| Booléen | Vrai si un ou plusieurs enregistrements correspondants ont été trouvés. False si aucun enregistrement n’a été trouvé. |
Côté client GlideRecord : getEncodedQuery()
Récupère la condition de requête de l’ensemble de résultats actuel sous forme de chaîne de requête codée.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Chaîne de requête codée contenant toutes les conditions qui ont été ajoutées à la requête. |
Côté client GlideRecord : getLimit()
Renvoie la limite d’enregistrements à renvoyer par la requête GlideRecord.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Numéro | Nombre limite d’enregistrements à renvoyer par la requête GlideRecord. |
Côté client GlideRecord : getTableName()
Récupère le nom de la table associée à ce GlideRecord.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Chaîne | Le nom de table |
var item = new GlideRecord('sc_request');
item.addQuery('sys_id', current.request);
item.query(itemResponse);
function itemResponse(item) {
alert('The table is ' + item.getTableName());
}
Côté client GlideRecord : hasNext()
Détermine s’il existe d’autres enregistrements dans le GlideRecord.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | Vrai s’il existe d’autres enregistrements dans l’ensemble de requêtes. |
Côté client GlideRecord : insérer(Fonction responseFunction)
Insère un nouvel enregistrement à l’aide des valeurs de champ qui ont été définies pour l’enregistrement actuel.
| Nom | Type | Description |
|---|---|---|
| Fonction de réponse | Fonction | Fonction à exécuter une fois l’enregistrement inséré. |
| Type | Description |
|---|---|
| Chaîne | Sys_id de l’enregistrement inséré ou nul si l’enregistrement n’a pas été inséré. |
var now_GR = new GlideRecord('incident');
now_GR.short_description = 'Learn about GlideRecord';
var recResponse = now_GR.insert(handleResponse);
function handleResponse(recResponse, answer) {
// Answer will be the sys_id of the created record or null
alert('Newly created sys_id is - ' + answer + ' exists');
}
Côté client GlideRecord : suivant()
Passe à l’enregistrement suivant dans le GlideRecord.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Booléen | False s’il n’y a plus d’enregistrements dans l’ensemble de requêtes. |
var rec = new GlideRecord('incident');
rec.query(recResponse);
function recResponse(rec) {
while (rec.next()) {
alert(rec.number + ' exists');
}
}
Côté client GlideRecord : orderBy(colonne de chaîne)
Spécifie une colonne orderBy. Peut être appelé plusieurs fois à l’ordre par plusieurs colonnes.
| Nom | Type | Description |
|---|---|---|
| colonne | Chaîne | Nom de colonne à utiliser pour classer le jeu de résultats. |
| Type | Description |
|---|---|
| nul |
function UpdateProjectWBS(project) {
var count = 0;
var child = new GlideRecord('pm_project_task');
child.addQuery('parent', project.sys_id);
child.orderBy('order');
child.orderBy('number');
child.query(childResponse);
g_form.addInfoMessage(count + ' Project Tasks updated');
}
function childResponse(child) {
var len = child.getRowCount().toString().length;
var seq = 0;
while (child.next()) {
count += UpdateProjectTaskWBS(child, 1, ++seq, len, '');
}
}
Côté client GlideRecord : query(nom de chaîne, fonction responseFunction, valeur de chaîne)
Exécute la requête au serveur par rapport à la table en fonction du filtre addQuery(). Cette méthode interroge la table GlideRecord ainsi que toutes les références de la table.
N’effectuez pas d’appels de requête synchrones. L’exécution d’une requête sans fonction de réponse rend l’appel synchrone, ce qui signifie que l’affichage attendra la réponse de la requête avant de continuer.
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Facultatif. Nom d’un champ à interroger. |
| Fonction de réponse | Fonction | Fonction appelée lorsque les résultats de la requête sont disponibles. |
| valide | Chaîne | Facultatif. Valeur de champ à interroger. Toute paire de littéraux est considérée comme une paire de requêtes (champ : valeur). |
| Type | Description |
|---|---|
| nul |
Ce qui suit est un exemple de base avec une fonction de réponse.
var rec = new GlideRecord('incident');
rec.query(recResponse);
function recResponse(rec) {
while (rec.next()) {
alert(rec.number + ' exists');
}
}
L’exemple suivant montre la différence entre la syntaxe synchrone et la syntaxe asynchrone, avec un exemple asynchrone.
// synchronous call syntax (no response function): DO NOT USE
query();
// asynchronous call syntax
// performs query with current conditions, calls responseFunction when done
query(responseFunction)
// synchronous call syntax (no response function): DO NOT USE
// adds "category=hardware" to current query conditions and performs query
query('category', 'hardware')
// asynchronous call syntax
// adds "category=hardware" to current query conditions, performs query, and calls responseFunction when done
query('category', 'hardware', responseFunction)
// asynchronous call example
// adds "user_name=abel.tuter" to current query conditions, performs query, and calls defined response function when done
function onLoad() {
var now_GR = new GlideRecord("sys_user");
now_GR.query("user_name", "abel.tuter", function(now_GR) {
if (now_GR.next()) {
alert("You can access fields by name from the client API, just like in the server API:\n now_GR.name = " + now_GR.name);
alert("You can also access fields using getValue():\n now_GR.getValue(\"email\") = " + now_GR.getValue("email"));
if (now_GR.getDisplayValue) {
alert("In Service Portal, Mobile, and Agent Workspace, you can access a field's display value:\n now_GR.getDisplayValue(\"company\") = " + now_GR.getDisplayValue("company"));
} else {
alert("On the desktop, you cannot access a field's display value, but can get its sys_id:\n now_GR.company = " + now_GR.company);
}
alert("You cannot dot-walk in the client API:\n now_GR.company.name = " + now_GR.company.name);
}
});
}
Côté client GlideRecord : setEncodedQuery(String encodedQuery)
Ajoute une chaîne de requête codée spécifiée à la clause de requête actuelle.
Cette méthode vous permet de spécifier des filtres complexes (chaînes de requête codées) dans un seul appel de requête, contrairement aux autres méthodes addQuery() côté client. Une fois que vous avez défini toutes les requêtes souhaitées, appelez le Côté client GlideRecord : query(nom de chaîne, fonction responseFunction, valeur de chaîne) pour exécuter la clause de requête spécifiée (filtre). Pour plus d’informations sur les chaînes de requête codées, consultez Chaînes de requête codées.
Si vous appelez cette méthode plusieurs fois avant d’appeler la méthode query(), les requêtes sont AND ensemble.
| Nom | Type | Description |
|---|---|---|
| encodedQuery | Chaîne | Chaîne de requête codée à ajouter à la clause de requête actuelle. |
| Type | Description |
|---|---|
| nul |
var now_GR = new GlideRecord('incident');
now_GR.setEncodedQuery('priority=4^ORstate=3');
now_GR.query(response);
function response(result) {
while(result.next()) {
console.log(result.getValue('number'));
}
}
Côté client GlideRecord : setLimit(Number maxQuery)
Définit la limite du nombre d’enregistrements dans le GlideRecord.
| Nom | Type | Description |
|---|---|---|
| maxQuery (Requête maximale) | Numéro | Limite du nombre d’enregistrements à extraire. |
| Type | Description |
|---|---|
| nul |