使用 <WHEN*>、<DEFAULT> 和 <COPY> 规则

更新:2007 年 11 月

本节描述使用 <DEFAULT>、<COPY> 和 <WHEN*> 规则时预期的行为和交互。下列步骤以正确的顺序显示由 Team Foundation Server 执行的交互和由工作项表单用户执行的交互。只有步骤 1、8 和 13 是由用户执行的。

  1. 通过使用 Visual Studio 用户界面,用户可以采取操作以创建新的工作项或编辑现有的工作项。

  2. 填写字段默认值。对于所有字段,使用 <WHEN*> 规则外部的任何 <DEFAULT> 规则。

  3. 复制字段值。对于所有字段,使用 <WHEN*> 子句外部的任何 <COPY> 规则。

  4. 对于具有匹配的 <WHEN> 规则的所有字段,首先执行 <DEFAULT>,然后在内部执行 <COPY> 规则。

  5. 对于具有匹配的 <WHENNOT> 规则的所有字段,首先执行 <DEFAULT>,然后在内部执行 <COPY> 规则。

    说明:

    Team Foundation Server 始终在处理 <WHENNOT> 规则之前处理 <WHEN> 规则。

  6. 对于其值在步骤 1 之后已更改以及包含 <WHENCHANGED> 规则的所有字段,首先执行 <DEFAULT>,然后在内部执行 <COPY> 规则。

  7. 允许用户开始编辑。

  8. 用户更改某个字段值,然后将焦点从字段中移出。

  9. 引发该字段的与新值匹配的任何 <WHEN> 规则。

  10. 引发该字段的与新值匹配的任何 <WHENNOT> 规则。

  11. 引发该字段的与新值匹配的任何 <WHENCHANGED> 规则

  12. 使用户可以重新使用编辑功能。

  13. 用户采取操作将更改保存到数据库。

  14. 对于所有字段,执行在 <WHEN> 或 <WHENNOT> 规则下为字段直接或间接定义的 <SERVERDEFAULT> 操作。

击键处理

用户使用图形用户界面来编辑工作项表单时,每次为字段输入一个击键时,会设置一个新规则。这意味着只要满足规则的必备条件,就会意外地发生 <WHEN*> 规则。

在下面的 XML 示例中,当您在“状态”字段中键入“Approved Again”时,将清空 SubStatus,因为在用户键入 Approved 的字母“e”时,立即发生了 <WHEN*> 规则,即使预期的最终值并不是“Approve”。出于此原因,当使用条件规则时,应慎重考虑。

<FIELD refname="MyCorp.SubStatus" />
<WHEN field="MyCorp.Status" value="Approve" >
<EMPTY />
</WHEN>
</FIELD>

请参见

概念

可用的字段规则

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