I've added department approvals to the standard CMMI-Template Requirement work-item. I'd like to limit the System.State field such that it can only be changed from Proposed to Active when all department approvals are set to "Yes".
我尝试对 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>
如果任何批准字段设置为“否”,这将导致“状态”字段变为“只读”,这正是我想要的。然而,在创建新需求时,它会导致问题,因为最初的批准全部为“否”,因此由于 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。我怎样才能禁止状态改变Proposed to Active当任何批准字段设置为“否”时
我花了一些时间弄清楚是否可以想出一个可行的变体,因为您无法像其他字段那样为 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>
当然,您必须将您的条款添加到其他状态:有效、已关闭和已解决。
完成此操作后,创建一个新的需求。当您创建新需求时,您有两个选择:
您可以将所有选项设置为“是”,将状态设置为“建议”并保存。然后返回并将它们设置为否并保存。
Or
将您的自定义字段全部更改为默认值“是”。
创建需求并保存。编辑它,将所有值切换为否,保存。
无论您选择哪种方式,一旦随着需求创建克服了最初的障碍。它会按照您想要的方式行事。换句话说,如果任何值是 no,那么它将使状态变为只读。
考虑到 System.State 字段的限制,这是我能想到的最好的办法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)