如何计算规则

您可以获得关于在向字段应用多个规则时计算规则的一些思路。 如何计算规则不是完全确定的。 本节描述使用 <WHEN*>、<DEFAULT> 和 <COPY> 规则时的预期行为和交互。

下列步骤以正确的顺序演示由 Team Foundation Server 和工作项窗体用户执行的交互。 只有步骤 1、8 和 13 是由用户执行的。

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

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

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

  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>

请参见

概念

All FIELD XML 元素引用

分配基于条件的值和规则