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 avec les 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 de l’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 include de script 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 exécutant 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 | La 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 | Colonne selon laquelle classer le jeu de résultats. |
| Type | Description |
|---|---|
| nul |
Côté client GlideRecord : addQuery(nom de chaîne, valeur d’objet)
Ajoute une requête pour renvoyer les enregistrements où 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 pour Côté client GlideRecord : query(nom de chaîne, fonction responseFunction, valeur de chaîne) exécuter la clause de requête spécifiée (filtre).
Pour effectuer une opération autre que AND, utilisez la méthode addQuery(String name, Object operator, Object value) ou la méthode setEncodedQuery( ).
| Nom | Type | Description |
|---|---|---|
| nom | Chaîne | Nom du champ à vérifier. |
| valide | Objet | Valeur ou liste de valeurs sur lesquelles effectuer une requête. |
| 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 transmettre 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 dans lesquels 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 filtre unique en appelant cette méthode plusieurs fois. Une fois que vous avez défini toutes les requêtes souhaitées, appelez pour Côté client GlideRecord : query(nom de chaîne, fonction responseFunction, valeur de chaîne) 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 effectuer une requête (insensible à 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(Fonction responseFunction)
Supprime l’enregistrement actuel et appelle la fonction de réponse spécifiée une fois terminée.
| 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 : get(chaîne sys_id)
Exécute une requête GlideRecord pour un enregistrement avec la sys_id spécifiée. Cette méthode est censée être utilisée pour interroger des enregistrements uniques, de sorte qu’une opération suivante est effectuée avant de renvoyer.
| Nom | Type | Description |
|---|---|---|
| sys_id | Chaîne | L’sys_id de l’enregistrement à trouver. |
| Type | Description |
|---|---|
| Booléen | Vrai si un ou plusieurs enregistrements correspondants ont été trouvés. Faux 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 | 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 plus d’enregistrements dans le jeu de requêtes. |
Côté client GlideRecord : insert(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 | Faux 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 String)
Spécifie une colonne orderBy. Peut être appelé plusieurs fois pour être trié par plusieurs colonnes.
| Nom | Type | Description |
|---|---|---|
| colonne | Chaîne | Nom de colonne à utiliser pour ordonner l’ensemble 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 sur le serveur par rapport à la table basée sur le 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 du champ à interroger. Toute paire de littéraux est considérée comme une paire de requêtes (champ : valeur). |
| Type | Description |
|---|---|
| nul |
Voici 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 synchronus et 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) en 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 pour Côté client GlideRecord : query(nom de chaîne, fonction responseFunction, valeur de chaîne) exécuter la clause de requête spécifiée (filtre). Pour plus d’informations sur les chaînes de requêtes codées, reportez-vous à la section Chaînes de requêtes codées.
Si vous appelez cette méthode plusieurs fois avant d’appeler la méthode query(), les requêtes sont ET 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 contenus dans le GlideRecord.
| Nom | Type | Description |
|---|---|---|
| MaxQuery | Numéro | La limite du nombre d’enregistrements à récupérer. |
| Type | Description |
|---|---|
| nul |