Includes de script

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 11 minutes de lecture
  • Les includes de script sont utilisés pour stocker le JavaScript qui s’exécute sur le serveur.

    Créez des includes de script pour stocker les fonctions et les classes JavaScript à utiliser par les scripts serveurs. Chaque include de script définit soit une classe d’objet, soit une fonction.

    Envisagez d’utiliser des includes de script au lieu de règles métier globales, car les includes de script ne sont chargés que sur demande. Voir Paramètres de confidentialité sur includes de script Glide AJAX activé et Includes de script de découverte pour plus d’informations.

    Pour obtenir d’autres exemples de scripts, reportez-vous à la section Scripts utiles.

    Formulaire d’inclusion de script

    Les includes de script ont un nom, une description et un script. Ils spécifient également s’ils sont actifs ou non, et s’ils peuvent être appelés à partir d’un script client. Affichez l’include de script existant ou créez-en un nouveau à l’aide du formulaire Include de script.

    Pour accéder aux includes de script, accédez à Tous > Définitions des systèmes > Inclusions de script.

    Tableau 1. Formulaire d’inclusion de script
    Champ Description
    Nom Nom de l’include de script. Si vous définissez une classe, celle-ci doit correspondre au nom de la classe, du prototype et du type. Si vous utilisez un include de script sans classe (à la demande), le nom doit correspondre au nom de la fonction.
    Nom de l'API Nom interne de l’include de script. Utilisé pour appeler l’include de script à partir d’applications hors du champ d’application.
    Glide AJAX activé (ou client appelable) L’include de script est disponible pour les scripts clients, les filtres de liste/de rapport, les qualificatifs de référence ou s’il est spécifié dans le cadre de l’URL. Les includes de script activés pour Glide AJAX sont invoqués à partir de GlideAjax et exigent que les utilisateurs satisfassent à une ACL associée à l’include de script. Lorsque cette option est sélectionnée, le lien connexe des contrôles d’accès est disponible. Consultez Paramètres de confidentialité sur includes de script Glide AJAX activé pour plus d'informations.
    Mobile joignable L’include de script est disponible pour les scripts clients appelés à partir d’équipements mobiles.
    Bac à sable activé L’include de script est disponible pour les scripts invoqués à partir du bac à sable de script, comme une condition de requête.
    Important :
    Les includes de script ne doivent être mis à la disposition du bac à sable de script que si nécessaire.

    Pour plus d’informations sur le bac à sable de script, reportez-vous à la section .

    Application Application dans laquelle réside l’include de script.
    Accessible depuis
    Définit les applications qui peuvent accéder à cette inclusion de script :
    Tous les périmètres de l'application
    Accessible à partir de n’importe quel périmètre de l’application.
    Ce périmètre de l'application uniquement
    Accessible uniquement à partir du périmètre de l’application actuel.
    Actives Active l’include de script si sélectionné. Désélectionnez le champ actif pour désactiver l’include de script.
    Description Fournit un contenu descriptif concernant l’include de script.
    Script Définit le script côté serveur à exécuter lorsqu’il est appelé à partir d’autres scripts.

    Le script doit définir une seule classe JavaScript ou une fonction globale. Le nom de la classe ou de la fonction doit correspondre au champ Name (Nom ).

    Package Package qui contient cet include de script.
    Créé par L’utilisateur qui a créé ce script include.
    Mis à jour par L’utilisateur qui a récemment mis à jour cet include de script.
    Politique de protection
    Définit le niveau de protection pour l’include de script :
    Néant
    Permet à quiconque de lire et de modifier cet include de script téléchargé ou installé.
    Lecture seule
    Permet à quiconque de lire les valeurs de cet include de script téléchargé ou installé. Personne ne peut changer les valeurs de script sur l’instance sur laquelle il télécharge ou installe l’include de script.
    Protégé
    Fournit une protection de la propriété intellectuelle aux développeurs d’applications. Les clients qui téléchargent l’include de script ne peuvent pas voir le contenu du champ de script. Le script est chiffré en mémoire pour empêcher les utilisateurs non autorisés de le voir en texte brut.
    Listes connexes sur la vue du formulaire :
    Versions Affiche toutes les versions de l’include de script. Utilisez cette liste pour comparer les versions ou pour revenir à une version précédente. Voir les versions.
    Contrôles des accès Devient disponible lorsque Glide AJAX activé est sélectionné et est masqué des includes de script standard. À utiliser pour protéger un include de script contre toute utilisation non autorisée lorsque l’accès public n’est pas accordé.

    Utiliser des includes de script

    Les script includes sont accessibles sous Définition du système ou Interface utilisateur du système. Vous pouvez appeler des includes de script existants à partir d’un script ou créer un nouvel include de script.

    Pour créer un include de script entièrement nouveau, vous pouvez suivre le format de n’importe lequel des includes de script existants. Dans cet exemple, le nom de votre include de script est NewInclude et il existe une seule fonction appelée myFunction. Il est important que le nom de l’include de script corresponde au nom de la classe, du prototype et du type. Lorsque vous créez un nouvel include de script et que vous lui donnez un nom, le système fournit un extrait de code avec la classe et le prototype correctement configurés.

    var NewInclude =Class.create();
     
    NewInclude.prototype={
      initialize :function(){},
     
      myFunction :function(){<Put function code here>},
     
      type :'NewInclude'};

    Vous pouvez alors utiliser la ligne myFunction comme ceci :

    var foo =new NewInclude();
    foo.myFunction();

    Includes de script compatibles Glide AJAX

    Les includes de script activés par Glide AJAX rendent l’include de script disponible pour les scripts clients, les filtres de liste/rapport, les qualificatifs de référence ou s’il est spécifié dans le cadre de l’URL.

    Avant de commencer

    Rôle requis : admin

    Procédure

    1. Accédez à la Définition du système > Inclusions de script.
    2. Sélectionnez Nouveau ou sélectionnez un include de script existant pour l’afficher ou le modifier.
      Voir Utiliser des includes de script pour plus d’informations sur l’écriture d’includes de script.
    3. Remplissez le formulaire et sélectionnez l’option Glide AJAX activé .
      Un sélecteur de rôle s’affiche pour sélectionner un rôle d’utilisateur et créer automatiquement une entrée de contrôle d’accès. Sélectionnez un rôle d’utilisateur et cliquez sur OK.Sélectionnez une fenêtre de rôle d’utilisateur.
      Remarque :
      Pour désactiver la fenêtre du sélecteur de rôle, définissez la glide.script.ccsi.enable_acl_create_ux sur false.

      Un enregistrement d’include de script avec un contrôle d’accès basé sur les rôles est créé. Le lien connexe du contrôle d’accès est disponible lorsque la case Glide AJAX est activée est cochée .

    Paramètres de confidentialité sur includes de script Glide AJAX activé

    Les paramètres de confidentialité des includes de script activés par Glide AJAX déterminent qui peut accéder à un include de script activé par Glide AJAX.

    Paramètre de confidentialité privée

    Le paramètre de confidentialité privée signifie que les invités qui accèdent aux pages publiques ne peuvent pas accéder à l’include de script activé par Glide AJAX. Un script privé ne peut pas être exécuté par un utilisateur non connecté.

    Paramètre de confidentialité publique

    Un paramètre de confidentialité public signifie que le script client peut être exécuté par des utilisateurs non connectés qui créent une requête HTTP appropriée. Cela peut créer un problème de sécurité si le script client fournit des informations confidentielles.

    Les includes de script suivants restent publics par défaut, car les pages de l’interface utilisateur doivent être rendues publiques ou privées pour y accéder :
    • GlideSystemAjax
    • SysMessageAjax
    • KnowledgeMessagingAjax
    • KnowledgeAjax
    • RéinitialisationMotDePasseAjax

    Définir la confidentialité sur tous les includes de script compatibles Glide AJAX

    Modifiez le paramètre de confidentialité sur tous les includes de script compatibles avec Glide AJAX.

    Pour fournir un contrôle supplémentaire sur tous les includes de script compatibles avec Glide AJAX, les administrateurs peuvent ajouter la propriété glide.script.ccsi.ispublic . Cette propriété modifie la visibilité des includes de script compatibles Glide AJAX en les rendant tous publics ou privés. Configurez la propriété comme suit :

    Tableau 2. Configurer la propriété
    Titre Propriété
    Nom glide.script.ccsi.ispublic
    Type Vrai|Faux
    Valeur Faux
    Remarque :
    Pour en savoir plus sur cette propriété, consultez Require authentication by default for client-callable script includes Paramètres de renforcement de la sécurité de l’instance.

    Modifier la confidentialité sur un seul include de script Glide AJAX activé

    Modifiez le paramètre de confidentialité d’un seul include de script Glide AJAX activé en ajoutant la fonction isPublic( ).

    Le paramètre isPublic() est prioritaire sur la glide.script.ccsi.ispublic propriété. Par exemple, si la propriété est définie sur false, ce qui rend privés tous les includes de script activés par Glide AJAX, et qu’un script définit isPublic() sur vrai, le script est public.

    Pour modifier la confidentialité d’un seul include de script activé par Glide AJAX, ajoutez-lui la méthode suivante :

    isPublic:function(){return[true/false];},
    Rendre privé le script client NewInclude.
    var NewInclude =Class.create();
     
    NewInclude.prototype={
       initialize:function(){},
     
       myFunction:function(){//Put function code here},
       isPublic:function(){return false;},
     
       type:'NewInclude'};

    Sécurité sur includes de script Glide AJAX activé

    Protégezvos includes de script compatibles Glide AJAX contre toute utilisation non autorisée. Pour tous les enregistrements qui sont créés dans une application cliente, des recommandations peuvent aider à réduire le risque de sécurité.

    Lors de la création d’un include de script activé par Glide AJAX, le système affiche les recommandations de sécurité suivantes si elles n’ont pas encore été configurées :

    • Ajoutez ou définissez un contrôle d’accès, sauf si l’include de script a un accès public.
    • Utilisez GlideRecordSecure au lieu de l’API GlideRecord pour une meilleure sécurité, si le script interroge la base de données.
      Remarque :
      Pour désactiver les messages de recommandations de sécurité, définissez la propriété glide.script.ccsi.customer_scoped.security_msgs_enabled sur faux dans la table sys_properties. La valeur par défaut est définie sur true.

    Consultez Paramètres de renforcement de la sécurité de l’instance pour plus d’informations sur la conformité de la sécurité.

    Includes de script de découverte

    Découverte Les includes de script définissent les classes JavaScript que vous pouvez utiliser pour accomplir Découverte des tâches.

    Remarque :
    Les utilisateurs disposant discovery_admin rôle peuvent écrire des includes de script. Suivez les meilleures pratiques en matière de scripting côté serveur et côté client afin d’éviter les problèmes de sécurité. Consultez l’article de la base de connaissances KB0550828 pour plus d’informations.

    Utilisation de GlideRecordUtil pour utiliser les GlideRecords

    GlideRecordUtil est une classe utilitaire qui fournit des méthodes utiles pour utiliser GlideRecords pendant Découverte. Consultez GlideRecordUtil pour obtenir une description des méthodes disponibles.

    Obtention d’une instance GlideRecord

    Pour obtenir une instance GlideRecord pour un élément de configuration donné, ainsi que de la classe et de la table correctes, utilisez la méthode getCIGR(sys_id ). Par exemple, le code suivant obtient le GlideRecord d’un CI avec la sys_id 2dfd7c8437201000deeabfc8bcbe5d56 :
    var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");
    Pour récupérer n’importe quelle table hiérarchique sans connaître son type de classe, utilisez la méthode getGR(base_table, sys_id ). Par exemple, pour obtenir un GlideRecord pour un CI de classe d’ordinateur, vous devrez peut-être distinguer s’il s’agit d’une classe d’ordinateur, Windows d’un serveur ou Linux d’une classe de serveur. L’utilisation de cette méthode garantit un GlideRecord avec la classe correcte. Différentes classes ont des attributs différents. Dans ce cas d’utilisation, un serveur possède des Windows attributs différents d’un Linux serveur. L’exemple suivant montre comment obtenir un GlideRecord dans la classe correcte avec ses attributs.
    var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");

    Obtention de tous les champs dans un GlideRecord

    La méthode getFields(now_GR) renvoie un objet JavaScript, tel qu’une carte de hachage, de tous les champs ou attributs qui existent dans un GlideRecord donné.
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
    var fields = new GlideRecordUtil().getFields(now_GR);
    gs.log(fields.join(" ")); // List all the fields that are in a computer CI

    Remplissage des champs d’objet GlideRecord

    La méthode populateFromGR(hashmap, gr, ignore) vous permet de prendre un objet GlideRecord et de renseigner ses champs et ses valeurs dans un objet JavaScript. Le troisième argument (ignorer) est un objet JavaScript facultatif qui vous permet d’exclure certains champs. Par exemple, vous ne vous intéressez peut-être pas aux sys_created_by champs ou sys_updated_by dans un GlideRecord.
    var objectToPopulate = { }; 
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56"); 
    var ignore = {"sys_created_on": true, "sys_updated_by": true}; 
    new GlideRecordUtil().populateFromGR(objectToPopulate, now_GR, ignore); 
    // Now the objectToPopulate contains field/value pairs from the computer GlideRecord
    La méthode mergeToGR(hashmap, gr, ignore) vous permet de renseigner un GlideRecord avec un objet apparié champ/valeur. L’argument Ignorer empêche la mise à jour des champs spécifiés. L’exemple de code suivant met à jour un enregistrement et os des name champs d’ordinateur, mais ne met pas à jour le sys_created_by champ :
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56"); 
    var obj = {"name": "xyz", "os": "windows 2000", "sys_created_by", "aleck.lin"};
    var ignore = {"sys_created_by": true}; 
    new GlideRecordUtil().mergeToGR(obj, gr, ignore);
    gr.update();

    Obtention des hiérarchies de tables

    La méthode getTables(table) renvoie une liste de hiérarchies de tables, comme illustré dans l’exemple suivant :
    var tables = new GlideRecordUtil().getTables("cmdb_ci_linux_server");
    gs.log(tables.join(",")); 
    // The result would be "cmdb_ci, cmdb_ci_computer, cmdb_ci_server, cmdb_ci_linux_server".

    Utilisation de DiscoveryException et AutomationException

    Lors de l’écriture Découverte de capteurs et de scripts liés aux capteurs, vous pouvez utiliser DiscoveryException ou AutomationException pour indiquer qu’une exception provient de Découverte.

    L’include de script DiscoveryException étend AutomationException, qui étend la classe GenericException . L’exemple suivant utilise DiscoveryException pour lever une exception :
    function foo() { 
      if(//condition matches) throw new DiscoveryException("The message", "The cause"); }
    Le premier argument prend le message de l’exception et le second argument (facultatif) prend la cause de l’exception. Vous pouvez également intercepter l’exception et la journaliser comme indiqué dans l’exemple ci-dessous :
    try {
      foo(); 
    } 
    catch(e) { 
       if(e instanceof DiscoveryException)
         gs.log("A DiscoveryException occurred. It is " + e. getMessage() + " caused by " + e.getCause()); }

    L’exemple ci-dessus s’applique également à AutomationException. DiscoveryException est généralement utilisé pour fournir un traitement d’exception spécifique à Discovery, tandis qu’AutomationException est utilisé pour le traitement des exceptions qui s’appliquent à la fois à Orchestration et Découverteà .