스키마 디자이너는 조치를 수행할 권한이 없는
사용자에게서 조치를 숨길 수 있습니다.
사용자에게 모든 조치를 수행할 권한이 없는 경우에도 스키마의 조치가
ClearQuest®에 표시될 수 있습니다. 스키마 디자이너는
조치 액세스 제어 후크가 제어하는 조치를 숨길 수 있습니다. 사용자에게서
숨겨진 조치는 ClearQuest 클라이언트의
수정, 상태 변경 또는 유틸리티 메뉴에서 표시되지 않습니다.
조치가 숨겨지는지 여부는
액세스 제어에서 지정된
값으로 판별됩니다.
- 액세스 제어가 모든 사용자로 설정되는 경우
모든 사용자가 조치에 액세스하도록 허용되므로
조치가 숨겨지지 않습니다.
- 액세스 제어가 사용자 그룹으로 설정되는 경우
조치는 지정된 그룹의 구성원인 사용자에게 표시됩니다.
- 액세스 제어가 스크립트로 설정되는 경우
조치는 HIDE_ACTIONS 스키마 특성의 값에 따라
사용자에게서 숨겨지거나 숨겨지지 않을 수 있습니다. 기본 동작은
조치를 표시하는 것입니다.
SCRIPTS 액세스 제어에 대한 조치 숨기기: HIDE_ACTIONS
스키마 특성
먼저, 스키마에서 조치를 숨길 수 있도록 설정해야 합니다.
packageutil 명령을 실행하여 HIDE_ACTIONS 스키마 특성을
1로 설정하십시오. HIDE_ACTIONS 스키마 특성은
최신 스키마 버전에서 설정됩니다. 명령의 형식은
다음과 같습니다.
packageutil setproperty –dbset <dbset> <user> <password> <schema>
HIDE_ACTIONS 1
조치를 숨기기 위한 기능을
사용 안함으로 설정하려면
HIDE_ACTIONS 스키마 특성을
0으로 설정하십시오.
참고: HIDE_ACTIONS 세션 변수 값을
1로 설정하여 레코드 양식 표시 성능에 영향을 줄 수 있습니다. 레코드의 모든 조치에 대한
액세스 제어 후크는 조치가 사용자에게 표시되어야 하는지 여부를
판별하기 위해 실행될 수 있습니다. 스키마에 다수의 조치가 있거나
액세스 제어 후크 스크립트가 느리게 처리되는 경우
사용자는 레코드 양식을 느리게 로드하는 중으로 인식할 수 있습니다.
ratl_GetLegalAction 세션 변수
HIDE_ACTIONS
스키마 특성이 조치를 숨기기 위해 1로 설정되고
액세스 제어가
스크립트로 설정되는 경우
조치 이름이 ClearQuest 클라이언트 메뉴에서 이 사용자에게
숨겨져야 하는지 여부를 판별하거나 사용자가 조치를 수행하도록 허용되는지 확인하기 위해
액세스 제어 후크가 호출될 수 있습니다. 스키마 디자이너는
후크를 사용자 정의하여 후크가 호출되는 이유를 표시하는
ratl_GetLegalAction 세션 변수의 값을 확인할 수 있습니다.
- ratl_GetLegalAction 값이
현재 레코드의 표시 이름과 일치하는 경우 조치가 숨겨져야 하는지
여부를 판별하기 위해 후크가 호출됩니다. 조치 이름이 숨겨져야 하는 경우
후크가 값 0을 리턴합니다. 조치 이름이
표시되어야 하는 경우 후크가 값 1을 리턴합니다.
- ratl_GetLegalAction의 값이
현재 레코드의 표시 이름과 일치하지 않는 경우 사용자가 이 조치를
실행하도록 허용되는지 여부를 판별하기 위해 후크가 호출됩니다. 액세스
제어 후크가 값 1을 리턴하는 경우 조치가 선택되고 실행됩니다.
ClearQuest 클라이언트 메뉴에서 이 사용자에게
조치 이름이 숨겨지는 경우에도 중첩 후크 또는 외부 스크립트가
조치를 호출할 수 있습니다.
조치 액세스 제어 후크가 0을 리턴하는 경우
ClearQuest 클라이언트는 이 조치가 허용되지 않음을 표시하는
일반 오류 메시지가 표시됩니다. 또는 후크는 정보를 Perl die() 함수 또는
VBScript Err.Raise() 메소드에 전달하여
더욱 구체적인 오류 메시지를 표시할 수 있습니다.
메시지는 사용자에게 조치를 실행할 권한이 없는 이유 또는 충족되지 않은
전제조건에 대한 정보를 포함할 수 있습니다.
예제
다음 Perl 예제는
후크를 사용자 정의하여 조치가 숨겨지는지 여부를 결정하는 방법을
표시합니다. 또한 VBScript로 액세스 제어 후크의 유형을 쓸 수 있습니다.
# 사용자 코드 시작
# 사용자에게 이를 수행할 권한이 있는 경우 $result를 1로 설정하십시오.
# 그렇지 않으면 이를 0으로 설정하십시오.
$result = 0;
if ($session->IsUserSuperUser()) {
# 수퍼유저는 항상 이 조치를 수행할 수 있습니다.
$result = 1;
}
else {
my $GLA = $session->GetNameValue("ratl_GetLegalAction");
my $myName = $entity->GetDisplayName();
if ($GLA eq $myName) {
# 숨기기 조치에 대해 이 후크가 호출됩니다.
# 조치를 숨기려면 다음 행을 주석 처리 해제하여 0을 리턴하십시오.
# $result = 0
# 그런 다음 아래의 $result = 1을 삭제하거나 주석 처리하십시오.
#
# 또는 이를 실행하려고 시도하는 경우 사용자에게
# 자세한 메시지가 표시되도록 항상 조치를 표시하십시오.
$result = 1;
}
else {
my $user = $session->GetUserLoginName();
my $owner = $entity->GetFieldStringValue("Owner");
if ($user ne $owner) {
die "소유자만 이 조치를 수행할 수 있습니다.";
}
$result = 1;
}
}
# 사용자 코드 종료
IBM® Rational® 지원 유튜브 채널을
시청하여 조치 숨기기에 대해 추가로 학습하십시오.