アサイン先フィールドをロールで制限する

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:2分
  • この例では、JavaScript とビジネスルールを使用して、インシデントの [アサイン先] フィールドの選択肢を itil_admin ロールを持つユーザーのみに制限する方法を示しています。

    始める前に

    必要なロール:personalize_dictionary または admin

    このタスクについて

    ユーザー [sys_user] テーブルを参照する参照フィールドで、itil_admin を他の任意のロールに変更することもできます。

    手順

    1. インシデントを開きます。
    2. 画面の左上隅にあるフォームのコンテキストメニューをクリックし、 Configure (構成) > ディクショナリ.
    3. [参照修飾子] フィールドに「javascript:"sys_idIN"+getRoledUsers("itil_admin").join(",")」と入力します。
    4. レコードを保存します。
    5. この JavaScript コードが呼び出すベースシステムビジネスルールを表示するには、 システム定義 > ビジネスルール.
    6. getRoledUsers を開きます。
      ビジネスルールでは、次の JavaScript コードを使用します。
      // 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;
      }