指派以條件為基礎的值和規則
您可以使用 WHEN、WHENNOT、WHENCHANGED 和 WHENNOTCHANGED 項目,定義依條件執行的規則。 當定義的子句為 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 |
|
當其他欄位擁有特定值時,指定要套用到目前欄位的一個或多個規則。 父項目定義目前的欄位。 當指定的欄位具有指定的值時,這個項目中的規則就會套用至目前的欄位。 |
WHENNOT |
|
指定將一或多個規則套用至目前欄位時所依據的條件。 當其他欄位的值變更時,這些規則就會套用至目前的欄位。 父項目定義目前的欄位。 當指定的欄位不含指定的值時,這個項目中的規則就會套用至目前的欄位。 |
WHENCHANGED |
|
指定將一或多個規則套用至目前欄位時所依據的條件。 當其他欄位的值因為工作項目有所修訂而變更時,這些規則就會套用至目前的欄位。 父項目定義目前的欄位。 |
WHENNOTCHANGED |
|
指定將一或多個規則套用至目前欄位時所依據的條件。 當其他欄位的值因為工作項目有所修訂而未變更時,這些規則就會套用至目前的欄位。 父項目定義目前的欄位。 |
下表描述當透過 WHEN、WHENNOT、WHENCHANGED 或 WHENNOTCHANGED 項目指定的條件式子句為 true 時,每個選擇性條件式規則如何套用至父欄位。 如需詳細資訊,請參閱將規則套用至工作項目欄位。
項目 |
描述 |
---|---|
父欄位必須具有指定值清單中的值。 |
|
即使父欄位的現有值違反了其他規則,也一律允許。 若父欄位的值有所變更,這個項目就不適用。 |
|
使用者可以將父欄位的值變更為 NULL,但無法變更為其他任何值。 |
|
第三個欄位的值會自動複製到父欄位。 您可以在 COPY 項目中指定第三個欄位。 |
|
這個項目指定父欄位的預設值。 |
|
父欄位不得包含值。 |
|
父欄位已被凍結。 當欄位遭到凍結時,您可以將其值變更為 NULL,但無法變更為其他任何值。 |
|
父欄位的值必須符合指定的模式。 |
|
父欄位的值與第三個欄位的值不得相同。 您可以在 NOTSAMEAS 項目中指定第三個欄位。 |
|
父欄位不可包含列舉清單中的任何值。 |
|
父欄位是唯讀的。 |
|
父欄位必須包含非 NULL 值。 |
|
父欄位會從指定的伺服器元件取得其值。 有效的伺服器元件為 clock (工作項目更新的時間) 和 currentuser (更新工作項目的使用者識別)。 |
|
列舉清單包含父欄位的建議值。 |
|
只有指定的使用者才可修改父欄位。 |
回到頁首
定義相依必要欄位
您可以指定當其他欄位包含特定值時才需要欄位。 在下列範例中,當客戶回報 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>