【问题标题】:Validate TFS 2017 Boolean field验证 TFS 2017 布尔字段
【发布时间】:2017-10-26 15:04:21
【问题描述】:

我正在尝试编辑工作项模板以利用 TFS 2017 中的新布尔字段,并希望在更改状态之前将特定字段设置为 true。有没有办法做到这一点?似乎不支持 ALLOWEDVALUES 和 MATCH,这可能会有所帮助

【问题讨论】:

  • 我想您是在谈论 TFS 2017 中的团队构建而不是 XAML 构建?我解决此问题的方法是使用验证输入字段的内联 Powershell 任务
  • 我说的是工作项模板字段,抱歉。我将进行编辑以明确说明
  • 知道了!你可以做你想做的唯一方法是创建一个条件规则。查看条件规则docs.microsoft.com/en-us/vsts/work/customize/reference/…
  • 这就是我尝试过的,如原始帖子中所述。不幸的是,似乎适合的那些不适用于布尔字段

标签: tfs


【解决方案1】:

您可以通过根据您的要求应用条件规则来做到这一点,就像上面提到的 Hamid 一样。

Boolean只是一个数据类型,我们可以添加一个自定义的布尔字段并为其添加一个复选框。

  1. 使用以下语法在 FIELDS 中添加布尔字段 WIT 定义的一部分。

    <FIELD name="Triagelc" refname="lc.Triage" type="Boolean" > <DEFAULT from="value" value="True" /> <HELPTEXT>Triage work item</HELPTEXT> </FIELD>

  2. 然后在 FORM 部分中添加以下语法以具有 该字段出现在表单上。

    &lt;Control Label="Triagelc" Type="FieldControl" FieldName="lc.Triage" /&gt;

    该字段将在表单上显示为复选框。

  3. 然后对目标字段应用When 规则,因此当指定 布尔字段具有指定值,When 规则适用于 目标字段。

eg1:

为任务工作项类型中的Description 字段应用“何时”规则:

<FieldDefinition name="Description" refname="System.Description" type="HTML">
  <WHEN field="lc.Triage" value="True">
    <REQUIRED />
  </WHEN>
</FieldDefinition>

那么当设置值为True时,Description区域为必填,不能为空。

eg2:

您也可以使用READONLY规则来限制其他区域:

<FieldDefinition name="Assigned To" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
  <WHEN field="lc.Triage" value="True">
    <READONLY />
  </WHEN>
  <ALLOWEXISTINGVALUE />
  <HELPTEXT>The person currently owning this task</HELPTEXT>
</FieldDefinition>

因此,当布尔字段值为True时,Assigned To字段为只读,否则可以分配给现有用户。


更新:

eg3:

我们不能直接使用布尔数据类型来实现。作为一种解决方法,您可以尝试以下方法:

  • 应用When 规则并嵌入Copy 规则(复制True 作为 此示例中的“Triagelc”布尔字段的值)。因此当 状态为 Done,Triagelc 可以将值设置为“True” 自动,然后保存。但这样一来,价值还是可以的 修改为假。参考下面的截图1:

    <FieldDefinition name="Triagelc" refname="lc.Triage" type="Boolean"> <WHEN field="System.State" value="Done"> <COPY from="value" value="True" /> </WHEN> <HELPTEXT>Triage work item</HELPTEXT> </FieldDefinition>

  • 将布尔字段的默认值设置为 True (Triagelc 本例中的字段),然后应用 When 规则和 READONLY 规则 嵌入。这种方式应该可以满足您的要求(一旦完成,值就不能再更改了)。参考下面的截图2:

    <FieldDefinition name="Triagelc" refname="lc.Triage" type="Boolean"> <DEFAULT from="value" value="True" /> <WHEN field="System.State" value="Done"> <READONLY /> </WHEN> <HELPTEXT>Triage work item</HELPTEXT> </FieldDefinition>

请注意:

布尔数据类型字段仅支持 VSTS 和 TFS 2017.2 和更高版本。

屏幕截图 1:

屏幕截图 2:

【讨论】:

  • 我的问题略有不同。我的问题不是当布尔字段为真时需要另一个字段,而是布尔字段必须为真才能改变状态
  • @StevenBrookes 让我很困惑,这是否与上述答案中提到的示例 2 相似?你能举个例子吗?
  • 您的示例 2 说当 Triagelc 为真时,将描述设置为只读。我想要这样当状态为 Done 时,Triagelc 不能为假
  • @StevenBrookes 根据规则,我们似乎无法做到这一点。
  • 真可惜。我可以通过恢复为是/否下拉菜单来解决它,但我期待使用专用字段类型来控制它。这是否可以在未来的版本中解决?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多