使用 <WHEN>、<WHENNOT> 和 <WHENCHANGED> 条件

更新:2007 年 11 月

可以使用 WHEN、WHENNOT、WHENCHANGED 和 WHENNOTCHANGED 元素来定义按条件运行的规则。这些规则定义当所定义的子句为 True 时将运行哪些元素。例如,您可以创建相关选取列表以提供详细的安全性或自定义行为。下面是一个简单的 WHEN 子句示例:

<FIELD . . . >

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

</FIELD>

此子句表示,只要字段 refname 具有值“yyy”,则此 FIELD 元素中的任何内容都将适用。该字段必须为有效的字段引用名称。有关更多信息,请参见字段引用名

说明:

value 属性不区分大小写。所以,如果字段 refname 存储的值为“YYY”,则匹配将包括 value =“yyy”或“YYY”的所有项。

示例

相关选取列表

下面的示例演示一个相关选取列表,在该列表中 Problem Type 的允许值受 ProblemCharacteristic 的值的限制:

<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 不更改,此元素中的任何内容都将适用。

请参见

概念

可用的字段规则