Feld „Zugewiesen an“ nach Rolle einschränken

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 1 Minute Lesedauer
  • Dieses Beispiel zeigt, wie JavaScript und eine Geschäftsregel verwendet werden, um die Auswahl des Felds „Incident zugewiesen an “ auf Benutzer mit der Rolle itil_admin zu beschränken.

    Vorbereitungen

    Erforderliche Rolle: personalize_dictionary or admin

    Warum und wann dieser Vorgang ausgeführt wird

    Sie können itil_admin auch in einer beliebigen anderen Rolle in einem Referenzfeld ändern, das sich auf die Tabelle „Benutzer“ [sys_user] bezieht.

    Prozedur

    1. Öffnen Sie einen Incident.
    2. Klicken Sie in der oberen linken Ecke des Bildschirms auf das Kontextmenü des Formulars, und wählen Sie dann aus Konfigurieren > Lexikonan.
    3. Geben Sie im Feld Referenzqual. den Wert javascript:"sys_idIN"+getRoledUsers("itil_admin").join(",") ein.
    4. Speichern Sie den Datensatz.
    5. Um die Geschäftsregel des Basissystems anzuzeigen, die dieser JavaScript-Code aufruft, navigieren Sie zu Systemdefinition > Business-Regelnan.
    6. Öffnen Sie getRoledUsers.
      Die Geschäftsregel verwendet den folgenden JavaScript-Code.
      // 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;
      }