Share via


조건부 기준 값 및 규칙 할당

WHEN, WHENNOT, WHENCHANGEDWHENNOTCHANGED 요소를 사용하여 조건부로 실행되는 규칙을 정의할 수 있습니다. 이 규칙을 사용하여 정의된 절이 True일 때 실행되는 요소를 정의합니다. 특정 필드에 할당된 값 또는 사용자가 특정 필드를 수정하는지 여부에 따른 조건을 정의할 수 있습니다. 예를 들어 자세한 보안 또는 사용자 지정 동작을 제공하는 종속적 선택 목록을 만들 수 있습니다.

필드 조건은 FIELD(정의) 요소 또는 FIELD(워크플로) 요소 안에 나열되는 추가 요소입니다. 이러한 요소에 대한 자세한 내용은 FIELD(정의) 요소 참조FIELD(워크플로) 요소를 참조하세요.

다음 코드는 WHEN 절의 간단한 예입니다.

<FIELD . . . >

    <WHEN field="referenceName" value="yyy">

</FIELD>

이 절은 refname 필드의 값이 "yyy"인 동안에 이 FIELD 요소 내의 모든 것이 적용됨을 의미합니다. 이 필드는 유효한 필드 참조 이름이어야 합니다. 자세한 내용은 작업 항목 추적 개체의 명명 규칙을 참조하십시오.

참고

값 특성은 대/소문자를 구분하지 않습니다.따라서 필드 참조 이름에 "YYY"가 있으면 "yyy" 및 "YYY" 값 모두와 일치합니다.

항목 내용

  • 조건 요소의 구문 구조

  • 종속적 필수 필드 정의

  • 조건부 선택 목록 정의

  • 사용자가 다른 필드를 변경할 때 필드 정의(WHENCHANGED)

  • 사용자가 필드를 수정하지 않을 때 필드 값 정의(WHENNOTCHANGED)

조건 요소의 구문 구조

다음 표에서는 FIELD(정의) 요소 또는 FIELD(워크플로) 요소의 자식 요소로 지정할 수 있는 조건부 규칙에 대해 설명합니다. 이 요소는 다음 특성 중에서 하나 이상을 수락합니다.

  • field: 필드를 설명하는 문자열입니다. 1~255자를 포함해야 합니다.

  • value: 지정된 필드에 이 값이 있으면 WHEN 및 WHENNOT 요소의 규칙이 현재 필드에 적용됩니다.

요소

구문

설명

WHEN

<WHEN field="fieldReferenceName" value="value">
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>
</WHEN>

다른 필드에 특정 값이 있는 경우 현재 필드에 적용할 하나 이상의 규칙을 지정합니다. 부모 요소가 현재 필드를 정의합니다.

지정된 필드에 지정된 값이 있으면 이 요소의 규칙이 현재 필드에 적용됩니다.

WHENNOT

<WHENNOT field="fieldReferenceName" value="value">
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>
</WHENNOT>

하나 이상의 규칙을 현재 필드에 적용할 조건을 지정합니다. 다른 필드의 값이 변경될 때 규칙이 현재 필드에 적용됩니다. 부모 요소가 현재 필드를 정의합니다.

지정된 필드에 지정된 값이 포함되어 있지 않으면 이 요소의 규칙이 현재 필드에 적용됩니다.

WHENCHANGED

<WHENCHANGED field="fieldReferenceName" >
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>      
</WHENCHANGED>

하나 이상의 규칙을 현재 필드에 적용할 조건을 지정합니다. 작업 항목의 수정 버전에서 다른 필드의 값이 변경될 때 규칙이 현재 필드에 적용됩니다. 부모 요소가 현재 필드를 정의합니다.

WHENNOTCHANGED

<WHENNOTCHANGED field="fieldReferenceName">
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>
</WHENNOTCHANGED>

하나 이상의 규칙을 현재 필드에 적용할 조건을 지정합니다. 작업 항목의 수정 버전에서 다른 필드의 값이 변경되지 않을 때 규칙이 현재 필드에 적용됩니다. 부모 요소가 현재 필드를 정의합니다.

다음 표에서는 WHEN, WHENNOT, WHENCHANGED 또는 WHENNOTCHANGED 요소를 사용하여 지정한 조건절이 true일 때 각각의 선택적 조건부 기반 규칙이 부모 필드에 어떻게 적용되는지를 설명합니다. 자세한 내용은 작업 항목 필드에 규칙 적용을 참조하십시오.

요소

설명

ALLOWEDVALUES

부모 필드에는 지정된 값 목록에서 가져온 값이 있어야 합니다.

ALLOWEXISTINGVALUE

부모 필드에 이미 있는 값은 다른 규칙을 위반하더라도 허용됩니다. 이 요소는 부모 필드의 값이 변경될 경우에는 적용될 수 없습니다.

CANNOTLOSEVALUE

사용자가 부모 필드의 값을 NULL로 변경할 수 있지만 다른 값으로 변경할 수는 없습니다.

COPY

세 번째 필드의 값이 부모 필드에 자동으로 복사됩니다. COPY 요소에서 세 번째 필드를 지정합니다.

DEFAULT

이 요소는 부모 필드의 기본값을 지정합니다.

EMPTY

부모 필드에 값이 포함되어서는 안 됩니다.

FROZEN

부모 필드가 고정 필드입니다. 고정 필드의 경우에는 해당 값을 NULL로 변경할 수 있지만 다른 값으로 변경할 수는 없습니다.

MATCH

부모 필드의 값이 지정한 패턴과 일치해야 합니다.

NOTSAMEAS

부모 필드의 값이 세 번째 필드의 값과 일치할 수 없습니다. NOTSAMEAS 요소에서 세 번째 필드를 지정합니다.

PROHIBITEDVALUES

열거된 목록에 있는 값이 부모 필드에 포함될 수 없습니다.

READONLY

부모 필드가 읽기 전용입니다.

REQUIRED

부모 필드에 NULL이 아닌 값이 포함되어서는 안 됩니다.

SERVERDEFAULT

부모 필드가 지정된 서버 구성 요소로부터 값을 가져옵니다. 유효한 서버 구성 요소는 작업 항목이 업데이트되는 때인 clock, 그리고 작업 항목을 업데이트한 사용자의 ID인 currentuser입니다.

SUGGESTEDVALUES

열거된 목록에는 부모 필드에 대해 제안된 값이 포함되어 있습니다.

VALIDUSER

지정된 사용자만 부모 필드를 수정할 수 있습니다.

맨 위로 이동

종속적 필수 필드 정의

다른 필드에 특정 값이 포함되어 있을 때만 필수 필드를 지정할 수 있습니다. 다음 예제에서는 고객이 버그를 보고할 때 고객 심각도를 지정해야 합니다. 고객이 버그를 보고하지 않은 경우에는 고객 심각도가 필요하지 않습니다.

<FIELD refname="MyCorp.Severity" name="Customer Severity" type="String">
    <ALLOWEDVALUES>
        <LISTITEM value="Blocking" />
        <LISTITEM value="Major" />
        <LISTITEM value="Minor" />
    </ALLOWEDVALUES>
    <WHEN field="MyCorp.CustomerReported" value="true">
        <REQUIRED />
    </WHEN>
</FIELD>

조건부 선택 목록 정의

다음 예제에서는 ProblemCharacteristic 필드의 값이 Documentation으로 설정되었는지 여부에 따라 Problem Type 필드에 대해 허용되는 값이 제한되는 조건부 선택 목록을 보여 줍니다.

<FIELD refname="MyCorp.ProblemType" name="Problem Type" type="String">
    <WHEN field="MyCorp.ProblemCharacteristic" value="Documentation">
        <ALLOWEDVALUES>
            <LISTITEM value="Spelling Error" />
            <LISTITEM value="Bad Format" />
            <LISTITEM value="Missing Info" />
        </ALLOWEDVALUES>
    </WHEN>
</FIELD>

사용자가 다른 필드를 변경할 때 필드 정의(WHENCHANGED)

다음 예제에서는 사용자가 MyCorp.State 필드의 값을 변경할 때 MyCorp.StateDate 필드가 서버 클록에 표시된 현재 날짜 및 시간으로 설정됩니다.

<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
    <WHENCHANGED field="MyCorp.State">
        <COPY from="clock" />
    </WHENCHANGED>
</FIELD>

다음 예제에서는 사용자가 MyCorp.State 필드의 값을 변경할 때 MyCorp.Status 필드의 값이 지워집니다.

<!-- Clear the status field whenever someone changes the state -->
<FIELD refname="MyCorp.Status" name="Status" type="String">
    <WHENCHANGED field="MyCorp.State">
        <COPY from="value" value="">
    </WHENCHANGED>
</FIELD>

사용자가 필드를 수정하지 않을 때 필드 값 정의(WHENNOTCHANGED)

다음 예제에서는 사용자가 MyCorp.State 필드의 값을 변경하지 않을 때 MyCorp.StateDate 필드가 읽기 전용이 됩니다.

<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<!-- Make the StateDate field read-only when the State field is not changed -->
    <WHENNOTCHANGED field="MyCorp.State">
        <READONLY />
    </WHENNOTCHANGED>
</FIELD>

참고 항목

기타 리소스

작업 항목 필드에 규칙 적용

작업 항목 필드에 규칙 적용