1

有没有办法按特定顺序应用规则?

仅当从另一个字段中选择两个特定值时,我才想提供 YesNo ...我在 XML 中的规则如下所示:

  <WHEN field="xxx.yyy.FoundInVersion" value="xxx">
    <ALLOWEXISTINGVALUE />
    <ALLOWEDVALUES not="[project]\xxx" expanditems="true">
      <LISTITEM value="No" />
      <LISTITEM value="Yes" />
    </ALLOWEDVALUES>
  </WHEN>
  <WHEN field="xxx.yyy.FoundInVersion" value="yyy">
    <ALLOWEXISTINGVALUE />
    <ALLOWEDVALUES not="[project]\xxx" expanditems="true">
      <LISTITEM value="No" />
      <LISTITEM value="Yes" />
    </ALLOWEDVALUES>
  </WHEN>
  <ALLOWEDVALUES not="[project]\MigrationAccounts" expanditems="true">
    <LISTITEM value="No" />
  </ALLOWEDVALUES>

这行得通。如果两个 WHEN 中的任何一个都正确,则允许 Yes 和 No。

但是 TFS 以某种方式自动(在不同/目标实例上)将最后一个 ALLOWEDVALUES 规则移动到顶部,并且只有 No 是允许和可选择的,即使我在另一个字段中选择了值“yyy”或“xxx”之一。

它似乎缓存在某个地方,或者尝试变得聪明或某事。

如何根据自己的订单强制/解决规则?

4

1 回答 1

1

规则通常按它们列出的顺序进行处理。但是,当您使用WHEN*DEFAULTCOPY元素时,可能会应用其他行为。

当您将多个规则应用于一个字段时,您可以了解如何评估规则。如何评估规则并不是完全确定的。本节介绍使用WHEN*DEFAULTCOPY规则时的预期行为和交互。

以下步骤以正确的顺序显示了 TFS 执行的交互以及工作项表单的用户执行的交互。用户只执行步骤 1、8 和 13。

1.从 Team Foundation 客户端——例如 Visual Studio、Team Explorer、Team Web Access 或 Team Explorer Everywhere——,用户创建新的工作项或编辑现有的工作项。

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

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

4.对于所有符合WHEN规则的字段,先做DEFAULT,再COPY里面的规则。

5.对于WHENNOT规则匹配的所有字段,先做DEFAULT,再COPY里面的规则。

TFS 总是在 WHENNOT 规则之前处理 WHEN 规则。

6.对于自第 1 步以来其值已更改且包含 WHENCHANGED 规则的所有字段,首先执行 DEFAULT,然后在内部执行 COPY 规则。

7.允许用户开始编辑。

8.用户更改字段值,然后将焦点从该字段移开。

9. 为该字段提出与新值匹配的任何 WHEN 规则。

10.为该字段提出任何与新值匹配的 WHENNOT 规则。

11. 为该字段提出与新值匹配的任何 WHENCHANGED 规则。

12.返回编辑能力给用户。

13.用户将更改保存到数据库。

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

于 2016-07-05T10:01:40.333 回答