如何根据另一个字段的值禁止状态从TFS要求工作项中的建议变为活动状态?

时间:2011-06-29 23:41:03

标签: tfs field state tfs-workitem tfs-process-template

我已将部门批准添加到标准CMMI-Template Requirement工作项。我想限制System.State字段,以便在所有部门批准设置为“是”时,只能将其从建议更改为活动
Requirement Work-Item with Approvals

我已尝试对Requirement.xml进行以下更改

<FIELD name="State" refname="System.State" type="String" reportable="dimension">
  <WHEN field="Approval.Marketing" value="No">
    <READONLY />
  </WHEN>
  <WHEN field="Approval.Quality" value="No">
    <READONLY />
  </WHEN>
  <WHEN field="Approval.RD" value="No">
    <READONLY />
   </WHEN>
   <WHEN field="Approval.System" value="No">
     <READONLY />
   </WHEN>
   <WHEN field="Approval.ProgManagement" value="No">
     <READONLY />
   </WHEN>
</FIELD>

如果任何批准字段设置为“No”,这会导致State字段变为READONLY,这就是我想要的。但是,在创建新要求时会导致问题,因为最初的批准都是“否”,因此状态的初始“建议”默认值由于READONLY条件而未设置。我想要做的是将上面WHEN条件的逻辑添加到 AND 它们,条件为System.State =“Proposed”。我尝试嵌套WHEN子句,如

<FIELD name="State" refname="System.State" type="String" reportable="dimension">
  <WHEN field="System.State" value="Proposed">
    <WHEN field="Approval.Marketing" value="No">
      <READONLY />
    </WHEN>
         . . .
  </WHEN>
</FIELD>

但是导入错误 WHEN 子句不能包含 WHEN 。当任何审批字段设置为“否”时,如何禁止状态从建议更改为活动

1 个答案:

答案 0 :(得分:0)

我花了一些时间弄清楚我是否能想出一个可行的变体,因为你不能像其他字段一样设置System.State的默认值。在我想出一些有效的东西之前,我可能经历了50次左右的变化。当然,它并不理想,但它会在最初创建后解决您的问题。

您可以在每个过渡状态中添加when子句。对于我的例子,我使用优先级字段并执行以下操作:

<State value="Proposed">
  <FIELDS>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
      <EMPTY />
    </FIELD>
    ...
    <FIELD refname="System.State">
      <WHEN field="Microsoft.VSTS.Common.Priority" value="2">
        <READONLY />
      </WHEN>
    </FIELD>
  </FIELDS>
</State>

您必须将您的子句添加到其他状态:active,closed和Resolved。

完成后,请创建新的要求。创建新需求时,您有两个选择:

您可以将所有选项设置为yes,将状态设置为建议并保存。然后返回并将它们设置为no并保存。

或者

将自定义字段全部更改为默认值为yes。 创建需求并保存。编辑它,将所有值切换为no,保存。

一旦这个初始障碍结束并且需求创建,你可以选择去。它会按你想要的方式行事。换句话说,如果任何值为no,那么它将使状态为readonly。

鉴于System.State字段的限制,这是我能想到的最好的结果。