역할에 따라 할당 대상 필드 제한

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기2분
  • 이 예는 JavaScript와 비즈니스 규칙을 사용하여 인시던트 할당 대상 필드 선택 사항을 itil_admin 역할이 있는 사용자로만 제한하는 방법을 보여줍니다.

    시작하기 전에

    필요한 역할: personalize_dictionary 또는 admin

    이 태스크 정보

    사용자 [sys_user] 테이블을 참조하는 참조 필드의 다른 역할로 itil_admin 변경할 수도 있습니다.

    프로시저

    1. 인시던트를 엽니다.
    2. 화면의 왼쪽 위 모서리에서 양식 상황에 맞는 메뉴를 클릭한 후 구성 > 딕셔너리레이블이 표시됩니다.
    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;
      }