GlideRecord : client

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 9 minutes de lecture
  • 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.

    Tableau 1. Paramètres
    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.

    Tableau 2. Paramètres
    Nom Type Description
    colonne Chaîne La colonne par laquelle ordonner l’ensemble de résultats.
    Tableau 3. Renvoie
    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().

    Tableau 4. Paramètres
    Nom Type Description
    nom Chaîne Nom du champ à vérifier.
    valide Objet Valeur ou liste de valeurs à interroger.
    Tableau 5. Renvoie
    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().

    Tableau 6. Paramètres
    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) :
    • =
    • !=
    • DANS
    • PAS DANS
    • STARTSWITH
    • SE TERMINE PAR
    • CONTIENT
    • NE CONTIENT PAS
    • INSTANCEOF
    Remarque :
    N’utilisez pas l’opérateur LIKE. Utilisez CONTAINS à la place.
    valide Objet Valeur sur laquelle poser une question (non sensible à la casse).
    Tableau 7. Renvoie
    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é.

    Tableau 8. Paramètres
    Nom Type Description
    Fonction de réponse Fonction Fonction de réponse pour le rappel.
    Tableau 9. Renvoie
    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.

    Tableau 10. Paramètres
    Nom Type Description
    sys_id Chaîne Le sys_id de l’enregistrement à trouver.
    Tableau 11. Renvoie
    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.

    Tableau 12. Paramètres
    Nom Type Description
    Aucun
    Tableau 13. Renvoie
    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.

    Tableau 14. Paramètres
    Nom Type Description
    Aucun
    Tableau 15. Renvoie
    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.

    Tableau 16. Paramètres
    Nom Type Description
    Aucun
    Tableau 17. Renvoie
    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.

    Tableau 18. Paramètres
    Nom Type Description
    Aucun
    Tableau 19. Renvoie
    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.

    Tableau 20. Paramètres
    Nom Type Description
    Fonction de réponse Fonction Fonction à exécuter une fois l’enregistrement inséré.
    Tableau 21. Renvoie
    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.

    Tableau 22. Paramètres
    Nom Type Description
    Aucun
    Tableau 23. Renvoie
    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.

    Tableau 24. Paramètres
    Nom Type Description
    colonne Chaîne Nom de colonne à utiliser pour classer le jeu de résultats.
    Tableau 25. Renvoie
    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.

    Tableau 26. Paramètres
    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).
    Tableau 27. Renvoie
    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.

    Tableau 28. Paramètres
    Nom Type Description
    encodedQuery Chaîne Chaîne de requête codée à ajouter à la clause de requête actuelle.
    Tableau 29. Renvoie
    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.

    Tableau 30. Paramètres
    Nom Type Description
    maxQuery (Requête maximale) Numéro Limite du nombre d’enregistrements à extraire.
    Tableau 31. Renvoie
    Type Description
    nul