사용자가 수행할 수 없는 조치 숨기기

스키마 디자이너는 조치를 수행할 권한이 없는 사용자에게서 조치를 숨길 수 있습니다.
사용자에게 모든 조치를 수행할 권한이 없는 경우에도 스키마의 조치가 ClearQuest®에 표시될 수 있습니다. 스키마 디자이너는 조치 액세스 제어 후크가 제어하는 조치를 숨길 수 있습니다. 사용자에게서 숨겨진 조치는 ClearQuest 클라이언트의 수정, 상태 변경 또는 유틸리티 메뉴에서 표시되지 않습니다. 조치가 숨겨지는지 여부는 액세스 제어에서 지정된 값으로 판별됩니다.

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® 지원 유튜브 채널을 시청하여 조치 숨기기에 대해 추가로 학습하십시오.


피드백