다음을 통해 공유


조건부 기준 값 및 규칙 할당

업데이트: 2011년 1월

WHEN, WHENNOT, WHENCHANGEDWHENNOTCHANGED 요소를 사용하여 조건에 따라 실행되는 규칙을 정의할 수 있습니다. 이러한 규칙은 정의된 절이 True인 경우 실행되는 요소를 정의하는 데 사용됩니다. 특정 필드에 할당된 값이나 사용자가 특정 필드를 수정하는지 여부를 기준으로 하는 조건을 정의할 수 있습니다. 예를 들어 자세한 보안 또는 사용자 지정 동작을 제공하기 위해 종속 선택 목록을 만들 수 있습니다.

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

다음 코드는 WHEN 절을 사용하는 간단한 예제입니다.

<FIELD . . . >

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

</FIELD>

이 절은 refname 필드의 값이 "yyy"인 경우 이 FIELD 요소 내의 내용이 모두 적용됨을 나타냅니다. 필드는 올바른 필드 참조 이름이어야 합니다. 자세한 내용은 작업 항목 추적 개체의 명명 규칙을 참조하십시오.

참고

value 특성은 대/소문자를 구분하지 않습니다. 따라서 필드 참조 이름에 '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>

조건부 선택 목록 정의

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

<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>

참고 항목

개념

모든 FIELD XML 요소 참조

기타 리소스

작업 항목 필드에 대한 조건 설정

필드 규칙 작업

변경 기록

날짜

변경 내용

이유

2011년 1월

모든 조건부 요소에 대한 구문 구조가 추가되고 예제를 강조하기 위해 내용이 다시 구성되었습니다.

향상된 기능 관련 정보