Limiter le champ Affecté à par rôle

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 1 minute de lecture
  • Cet exemple montre comment utiliser JavaScript et une règle métier pour restreindre les choix de champ Incident Affecté à aux seuls utilisateurs ayant le rôle itil_admin.

    Avant de commencer

    Rôle requis : personalize_dictionary ou admin

    Pourquoi et quand exécuter cette tâche

    Vous pouvez également modifier itil_admin pour n’importe quel autre rôle dans un champ de référence qui fait référence à la table Utilisateur [sys_user].

    Procédure

    1. Ouvrez un incident.
    2. Dans le coin supérieur gauche de l’écran, cliquez sur le menu contextuel du formulaire, puis sélectionnez Configurer > Dictionnaire.
    3. Dans le champ Qualificatif de référence , entrez javascript :"sys_idIN"+getRoledUsers(« itil_admin »).join(« ,").
    4. Enregistrez l'enregistrement.
    5. Pour afficher la règle métier du système de base appelée par ce code JavaScript, accédez à Définition du système > Règles métier.
    6. Ouvrez getRoledUsers.
      La règle métier utilise le code JavaScript suivant.
      // Return an array of sys_ids of the users that have at least one role
      // optional parameters allow the exclusion (NOT IN) of some roles or
      // look for specific roles (IN)
      //
      // optional: queryCondition - 'IN' or 'NOT IN'
      // optional: roleList - a comma separated list of role names
      //
      function getRoledUsers(queryCondition, roleList) {
         var roleListIds;
         if (queryCondition && roleList) {
            roleListIds = getRoleListIds(roleList);
         }
      
         var users = {};
         var now_GR = new GlideRecord('sys_user_has_role');
         if (roleListIds) {
            now_GR.addQuery('role', queryCondition, roleListIds);
         }
         now_GR.query();
         while (now_GR.next()) {
            users[now_GR.user.toString()] = true;
         }
         
         var ids = [];
         for (var id in users)
            ids.push(id);
            
         return ids;
      }
      
      // get sys_id's for the named roles
      function getRoleListIds(roleList) {
         var ids = [];
         var now_GR = new GlideRecord('sys_user_role');
         now_GR.addQuery('name','IN',roleList);
         now_GR.query();
         while (now_GR.next()) {
            ids.push(now_GR.sys_id.toString());
         }
         return ids;
      }