조건부 기준 값 및 규칙 할당
WHEN, WHENNOT, WHENCHANGED 및 WHENNOTCHANGED 요소를 사용하여 조건부로 실행되는 규칙을 정의할 수 있습니다. 이 규칙을 사용하여 정의된 절이 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 |
|
다른 필드에 특정 값이 있는 경우 현재 필드에 적용할 하나 이상의 규칙을 지정합니다. 부모 요소가 현재 필드를 정의합니다. 지정된 필드에 지정된 값이 있으면 이 요소의 규칙이 현재 필드에 적용됩니다. |
WHENNOT |
|
하나 이상의 규칙을 현재 필드에 적용할 조건을 지정합니다. 다른 필드의 값이 변경될 때 규칙이 현재 필드에 적용됩니다. 부모 요소가 현재 필드를 정의합니다. 지정된 필드에 지정된 값이 포함되어 있지 않으면 이 요소의 규칙이 현재 필드에 적용됩니다. |
WHENCHANGED |
|
하나 이상의 규칙을 현재 필드에 적용할 조건을 지정합니다. 작업 항목의 수정 버전에서 다른 필드의 값이 변경될 때 규칙이 현재 필드에 적용됩니다. 부모 요소가 현재 필드를 정의합니다. |
WHENNOTCHANGED |
|
하나 이상의 규칙을 현재 필드에 적용할 조건을 지정합니다. 작업 항목의 수정 버전에서 다른 필드의 값이 변경되지 않을 때 규칙이 현재 필드에 적용됩니다. 부모 요소가 현재 필드를 정의합니다. |
다음 표에서는 WHEN, WHENNOT, WHENCHANGED 또는 WHENNOTCHANGED 요소를 사용하여 지정한 조건절이 true일 때 각각의 선택적 조건부 기반 규칙이 부모 필드에 어떻게 적용되는지를 설명합니다. 자세한 내용은 작업 항목 필드에 규칙 적용을 참조하십시오.
요소 |
설명 |
---|---|
부모 필드에는 지정된 값 목록에서 가져온 값이 있어야 합니다. |
|
부모 필드에 이미 있는 값은 다른 규칙을 위반하더라도 허용됩니다. 이 요소는 부모 필드의 값이 변경될 경우에는 적용될 수 없습니다. |
|
사용자가 부모 필드의 값을 NULL로 변경할 수 있지만 다른 값으로 변경할 수는 없습니다. |
|
세 번째 필드의 값이 부모 필드에 자동으로 복사됩니다. COPY 요소에서 세 번째 필드를 지정합니다. |
|
이 요소는 부모 필드의 기본값을 지정합니다. |
|
부모 필드에 값이 포함되어서는 안 됩니다. |
|
부모 필드가 고정 필드입니다. 고정 필드의 경우에는 해당 값을 NULL로 변경할 수 있지만 다른 값으로 변경할 수는 없습니다. |
|
부모 필드의 값이 지정한 패턴과 일치해야 합니다. |
|
부모 필드의 값이 세 번째 필드의 값과 일치할 수 없습니다. NOTSAMEAS 요소에서 세 번째 필드를 지정합니다. |
|
열거된 목록에 있는 값이 부모 필드에 포함될 수 없습니다. |
|
부모 필드가 읽기 전용입니다. |
|
부모 필드에 NULL이 아닌 값이 포함되어서는 안 됩니다. |
|
부모 필드가 지정된 서버 구성 요소로부터 값을 가져옵니다. 유효한 서버 구성 요소는 작업 항목이 업데이트되는 때인 clock, 그리고 작업 항목을 업데이트한 사용자의 ID인 currentuser입니다. |
|
열거된 목록에는 부모 필드에 대해 제안된 값이 포함되어 있습니다. |
|
지정된 사용자만 부모 필드를 수정할 수 있습니다. |
맨 위로 이동
종속적 필수 필드 정의
다른 필드에 특정 값이 포함되어 있을 때만 필수 필드를 지정할 수 있습니다. 다음 예제에서는 고객이 버그를 보고할 때 고객 심각도를 지정해야 합니다. 고객이 버그를 보고하지 않은 경우에는 고객 심각도가 필요하지 않습니다.
<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>