指派以條件為基礎的值和規則

您可以使用 WHENWHENNOTWHENCHANGEDWHENNOTCHANGED 項目,定義依條件執行的規則。 當定義的子句為 True 時,這些規則可用來定義所要執行的項目。 您可以根據指派給特定欄位的值,或使用者是否修改特定欄位來定義條件。 例如,您可以建立相依挑選清單,提供詳細的安全性或自訂行為。

欄位條件是列在 FIELD (定義) 項目或 FIELD (工作流程) 項目中的額外項目。 如需這些項目的詳細資訊,請參閱 FIELD (定義) 項目參考FIELD (工作流程) 項目

下列程式碼是 WHEN 子句的簡單範例:

<FIELD . . . >

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

</FIELD>

這個子句表示當欄位 refname 的值為 "yyy" 時,這個 FIELD 項目中可以是任何內容。 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>

指定將一或多個規則套用至目前欄位時所依據的條件。 當其他欄位的值因為工作項目有所修訂而未變更時,這些規則就會套用至目前的欄位。 父項目定義目前的欄位。

下表描述當透過 WHENWHENNOTWHENCHANGEDWHENNOTCHANGED 項目指定的條件式子句為 true 時,每個選擇性條件式規則如何套用至父欄位。 如需詳細資訊,請參閱將規則套用至工作項目欄位

項目

描述

ALLOWEDVALUES

父欄位必須具有指定值清單中的值。

ALLOWEXISTINGVALUE

即使父欄位的現有值違反了其他規則,也一律允許。 若父欄位的值有所變更,這個項目就不適用。

CANNOTLOSEVALUE

使用者可以將父欄位的值變更為 NULL,但無法變更為其他任何值。

COPY

第三個欄位的值會自動複製到父欄位。 您可以在 COPY 項目中指定第三個欄位。

DEFAULT

這個項目指定父欄位的預設值。

EMPTY

父欄位不得包含值。

FROZEN

父欄位已被凍結。 當欄位遭到凍結時,您可以將其值變更為 NULL,但無法變更為其他任何值。

MATCH

父欄位的值必須符合指定的模式。

NOTSAMEAS

父欄位的值與第三個欄位的值不得相同。 您可以在 NOTSAMEAS 項目中指定第三個欄位。

PROHIBITEDVALUES

父欄位不可包含列舉清單中的任何值。

READONLY

父欄位是唯讀的。

REQUIRED

父欄位必須包含非 NULL 值。

SERVERDEFAULT

父欄位會從指定的伺服器元件取得其值。 有效的伺服器元件為 clock (工作項目更新的時間) 和 currentuser (更新工作項目的使用者識別)。

SUGGESTEDVALUES

列舉清單包含父欄位的建議值。

VALIDUSER

只有指定的使用者才可修改父欄位。

回到頁首

定義相依必要欄位

您可以指定當其他欄位包含特定值時才需要欄位。 在下列範例中,當客戶回報 Bug 時,必須指定客戶嚴重性。 若客戶未回報 Bug,就不需要客戶嚴重性。

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

請參閱

其他資源

將規則套用至工作項目欄位

將規則套用至工作項目欄位