이 예시에서는 JavaScript와 비즈니스 규칙을 사용하여 인시던트 할당 대상 필드 선택 항목을 itil_admin 역할이 있는 사용자만 선택할 수 있도록 제한하는 방법을 보여줍니다.
시작하기 전에
필요한 역할: personalize_dictionary 또는 admin
이 태스크 정보
사용자 [sys_user] 테이블을 참조하는 참조 필드에서 itil_admin 다른 역할로 변경할 수도 있습니다.
프로시저
-
인시던트를 엽니다.
-
화면의 왼쪽 위 모서리에서 양식 컨텍스트 메뉴를 클릭한 다음 .
-
참조 한정자 필드에 javascript:"sys_idIN"+getRoledUsers("itil_admin").join(",")을 입력합니다.
-
레코드를 저장합니다.
-
이 JavaScript 코드가 호출하는 기본 시스템 비즈니스 규칙을 보려면 .
-
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;
}