如何计算规则
您可以获得关于在向字段应用多个规则时计算规则的一些思路。 如何计算规则不是完全确定的。 本节描述使用 <WHEN*>、<DEFAULT> 和 <COPY> 规则时的预期行为和交互。
下列步骤以正确的顺序演示由 Team Foundation Server 和工作项窗体用户执行的交互。 只有步骤 1、8 和 13 是由用户执行的。
使用 Visual Studio 用户界面,用户可以创建新工作项或编辑现有工作项。
填写字段默认值。 对于所有字段,使用的任何 <DEFAULT> 规则应在 <WHEN*> 规则之外。
复制字段值。 对于所有字段,使用的任何 <COPY> 规则应在 <WHEN*> 子句之外。
对于具有匹配的 <WHEN> 规则的所有字段,首先执行 <DEFAULT>,然后在内部执行 <COPY> 规则。
对于具有匹配的 <WHENNOT> 规则的所有字段,首先执行 <DEFAULT>,然后在内部执行 <COPY> 规则。
备注
Team Foundation Server 始终在处理 <WHENNOT> 规则之前处理 <WHEN> 规则。
对于其值在步骤 1 之后已更改以及包含 <WHENCHANGED> 规则的所有字段,首先执行 <DEFAULT> 规则,然后在内部执行 <COPY> 规则。
允许用户开始编辑。
用户更改某个字段值,然后将焦点从字段中移出。
引发该字段的与新值匹配的任何 <WHEN> 规则。
引发该字段的与新值匹配的任何 <WHENNOT> 规则。
引发该字段的与新值匹配的任何 <WHENCHANGED> 规则。
使用户可以重新使用编辑功能。
用户将更改保存到数据库。
对于所有字段,执行在 <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>