使用 <WHEN>、<WHENNOT> 和 <WHENCHANGED> 條件
更新:2007 年 11 月
您可以使用 WHEN、WHENNOT、WHENCHANGED 和 WHENNOTCHANGED 項目來定義依條件而執行的規則。當所定義的子句為 True 時,這些規則會定義要執行哪些項目。例如,您可以建立相依選擇清單,以提供詳細的安全性或自訂行為。下列是 WHEN 子句的簡單範例:
<FIELD . . . >
<WHEN field="refname" value="yyy">
</FIELD>
這個子句是表示只要欄位 refname 具有 yyy 的值,這個 FIELD 項目中可以是任何內容。field 必須是有效的欄位參考名稱。如需詳細資訊,請參閱 欄位參考名稱。
注意事項: |
---|
值的屬性是沒有區分大小寫,因此,如果欄位 refname 的內容是 'YYY',那麼相符的值就包括 value = "yyy" 或 "YYY"。 |
範例
相依選擇清單
下面範例示範相依選擇清單,依據 ProblemCharacteristic 的值,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>
必要欄位
下面範例示範必要欄位中的變更。在這個情節中,當客戶報告 Bug 時,必須輸入客戶嚴重性。如果客戶沒有報告 Bug,就不需要輸入客戶嚴重性。
WHEN
<WHEN>
範例
<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>
條件:只要欄位 Customer Reported 具有某個值,而那個值是 true,則這個項目中可以是任何內容。
WHENNOT
<WHENNOT>
範例
<WHENNOT field="refname" value="yyy">
</WHENNOT>
條件:只要欄位 refname 具有某個值,但那個值不是 yyy,則這個項目中可以是任何內容。
WHENCHANGED
<WHENCHANGED>
範例
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<WHENCHANGED field="MyCorp.State">
<COPY from="clock" />
</WHENCHANGED>
</FIELD>
<!-- 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>
條件:當欄位 refname 經過使用者修改後,這個項目中可以是任何內容。
WHENNOTCHANGED
<WHENNOTCHANGED>
範例
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<!-- Make the State field readonly when the StateDate field is not changed -->
<WHENNOTCHANGED field="MyCorp.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
條件:只要 refname 欄位尚未變更,則這個項目中可以是任何內容。