共用方式為


使用 <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 欄位尚未變更,則這個項目中可以是任何內容。

請參閱

概念

可用的欄位規則