示例自定义规则方案
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
本文提供了自定义规则定义的示例。 所有自定义规则都是为工作项类型定义的。 为继承和本地 XML 进程模型提供了示例。
在添加自定义规则之前,请阅读规则和规则评估,并将规则添加到工作项类型(继承过程)。
定义依赖的必填字段
仅当另一个字段包含特定值时,才能指定字段是必需的。 在以下示例中,当客户报告问题时,自定义 “客户报告 ”字段设置为 True, “严重性 ”字段将变为必填字段。 如果客户未报告此问题,则不需要“严重性”字段的值。
为工作项类型定义节中的FIELDS
字段定义指定WHEN
规则语句。
<FIELDS>
...
<FIELD refname="MyCorp.Severity" name="Customer Severity" type="String">
<ALLOWEDVALUES>
<LISTITEM value="Blocking" />
<LISTITEM value="Major" />
<LISTITEM value="Minor" />
</ALLOWEDVALUES>
<WHEN field="MyCorp.CustomerReported" value="true">
<REQUIRED />
</WHEN>
</FIELD>
...
</FIELDS>
清除依赖字段的值
以下示例演示如何定义自定义规则,以便在对开始日期进行更改时清除故事点的值。
为工作项类型定义节中的FIELDS
字段定义指定WHENCHANGED
规则语句。
<FIELDS>
...
<FIELD name="Story Points" refname="Microsoft.VSTS.Scheduling.StoryPoints" type="Double" reportable="measure" formula="sum">
<HELPTEXT>The size of work estimated for implementing this user story</HELPTEXT>
<WHENCHANGED field="Microsoft.VSTS.Scheduling.StartDate">
<EMPTY />
</WHENCHANGED>
</FIELD>
...
</FIELDS>
设置依赖字段值
以下示例说明如何根据为自定义字段“Tee-Shirt Size”字段选择的值来映射 Size 字段的值。
Tee 恤大小选取列表由四个值组成:小、中、大和 X-Large。 当“Tee 恤大小”字段更改为特定值时,将定义四个自定义规则来分配“大小”字段。 为了简化使用,Tee 恤尺寸的默认值为 Small。
“Tee 恤大小”字段的“编辑字段”对话框
自定义规则
四个自定义规则
在工作项类型定义的节中FIELDS
指定 Size 字段的值。 使用一系列WHEN
规则语句进行映射,使用COPY value="value"
规则设置 Size 字段的值。
<FIELDS>
...
<FIELD name="Tee-Shirt Size" refname="Fabrikam.TShirt.Size" type="String">
<HELPTEXT>Estimate of overall size for work to be done; Small (2), Medium (6), Large (18), X-Large (30).</HELPTEXT>
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="Large" />
<LISTITEM value="Medium" />
<LISTITEM value="Small" />
<LISTITEM value="X-Large" />
</ALLOWEDVALUES>
</FIELD>
<FIELD name="Size" refname="Fabrikam.Size" type="Integer">
<HELPTEXT>Integer estimate of overall size for work to be done; Automatically fill in based on Tee-Shirt Size. Allow any value.</HELPTEXT>
<WHEN field="Fabrikam.TShirt.Size" value="Small">
<COPY value="2" />
</WHEN>
<WHEN field="Fabrikam.TShirt.Size" value="Medium">
<COPY value="6" />
</WHEN>
<WHEN field="Fabrikam.TShirt.Size" value="Large">
<COPY value="18" />
</WHEN>
<WHEN field="Fabrikam.TShirt.Size" value="X-Large">
<COPY value="30" />
</WHEN>
</FIELD>
...
</FIELDS>
状态更改时需要字段值
以下示例演示如何在任务工作流状态更改为“活动”时需要“剩余工时”域的规范。
当工作项的“状态”字段的值设置为“活动”并且工作项已保存时,“激活者”和“已分配的”字段的值将自动设置为当前用户的名称。 该用户必须是 Team Foundation Server 有效用户组的成员。 “激活日期”字段的值也会自动设置。 以下示例显示了强制实施此规则的元素:
<WORKFLOW>
. . .
<STATE value="Active">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Scheduling.RemainingWork">
<REQUIRED />
</FIELD>
</FIELDS>
</STATE>
. . .
</WORKFLOW>
关闭状态时清除字段的值
若要在关闭任务时自动清除 剩余工时 字段,请定义一个自定义规则,如下所示。
<WORKFLOW>
. . .
<STATE value="Closed">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Scheduling.RemainingWork">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
. . .
</WORKFLOW>
限制组创建工作项
一个自定义规则,用于限制转换为 工作项类型的“建议 ”状态类别,从而有效地禁止创建该类型的工作项。 通过将规则应用于特定组,可以有效地禁止该组创建该类型的工作项。
以下自定义规则限制项目团队创建工作项,因为 “建议 ”状态类别映射到 “新建 ”工作流状态。
以下自定义规则通过禁止转换到“新建”工作流状态来限制 Fabrikam 审阅团队(for attribute)创建工作项。
<WORKFLOW>
...
<TRANSITION from=" " to="New"
for="[Project]\Developers"
not="[Project]\Fabrikam Review Team"
. . .
</TRANSITION>
...
</WORKFLOW>
限制组修改工作项
对于继承过程,可以通过在区域路径上设置组的拒绝权限来阻止用户修改工作项。 对于本地 XML 进程,可以对阻止其在任何状态下保存工作项的组的每个工作流状态施加限制。
无法定义限制特定类型的工作项修改的自定义规则。 只能按状态指定限制。 如果用户不更改状态,则他们可以修改其他字段,除非对组进行所有字段都是只读的。
相反,如果要限制一组用户修改任何类型的选择工作项,可以将这些工作项分配给区域路径。 定义安全组,然后为该组编辑工作项设置限制,如下图所示。 有关详细信息,请参阅 设置工作跟踪的权限和访问权限、创建子节点和修改区域路径下的工作项
以下自定义规则通过禁止为用户情景工作项类型定义的所有工作流状态来限制 Fabrikam Review Team (for attribute)修改用户情景。 由于没有工作流状态对特定团队有效,因此阻止该团队的成员保存包含任何更改的工作项。
<WORKFLOW>
...
<STATE value="New">
not="[Project]\Fabrikam Review Team"
</STATE>
<STATE value="Active">
not="[Project]\Fabrikam Review Team"
</STATE>
<STATE value="Resolved">
not="[Project]\Fabrikam Review Team"
</STATE>
<STATE value="Closed">
not="[Project]\Fabrikam Review Team"
</STATE>
...
</WORKFLOW>
限制状态转换
对于继承的进程,会自动定义任意到任意状态转换。 这样,用户就可以将工作流状态从新状态提升到完成状态,但如果需要,也可以向后移动。 定义自定义规则以限制转换时,请记住,如果用户在更新工作流时犯了错误,他们可能无法更正它。 例如,他们可以通过将工作项卡移动到开发板上的后续阶段来更新状态,但不能将其移回。
提示
请考虑限制某些用户(而不是所有用户)的状态转换。 这样,如果用户犯了错误,他们可以要求另一个团队成员重置状态值以绕过限制。
在定义状态转换规则之前,请查看 规则和规则评估、自动生成的规则 以及 工作流状态和状态类别在积压工作和板中的使用方式。
限制对已关闭工作项的修改
根据业务流程,你可能希望阻止用户继续修改或更新已关闭或已完成的工作项。 可以将规则添加到工作项类型,以防止用户重新打开关闭的工作项。
对于继承的进程,可以添加限制状态转换的规则。 例如,以下规则限制从关闭到其他两个状态(“新建”和“活动”)的转换。
注意
该 A work item state moved from ...
条件适用于 Azure DevOps Server 2020 及更高版本。
注意
根据指定的规则操作, 可能会禁用工作项窗体上的“保存 ”按钮,或者在受限用户尝试修改工作项时显示错误消息。
对于本地部署,可以将规则添加到工作项类型,以防止在关闭工作项后重新打开。 例如,以下工作流转换规则允许测试人员重新打开工作项,但不允许开发人员组的成员。
<WORKFLOW>
. . .
<TRANSITION from="Closed" to="New"
for="[Project]\Testers"
not="[Project]\Developers"
. . .
</TRANSITION
<TRANSITION from="Closed" to="Active"
for="[Project]\Testers"
not="[Project]\Developers"
. . .
</TRANSITION
. . .
</WORKFLOW>
隐藏或限制基于用户或组的字段修改
选择或Current user is a member of group...
Current user is not a member of group...
时,可以隐藏字段、只读字段或使字段是必需的。
例如,以下条件指示“理由”字段对于不属于 Fabrikam Fiber\Voice 组的成员隐藏。
注意
工作项要遵守适用于它们的规则。 基于用户或组成员身份的条件规则会缓存在 Web 浏览器中。 如果你发现自己被限制更新某个工作项,可能是受制于以下规则之一。 如果你认为遇到的问题并不适用,请参阅工作项表单 IndexDB 缓存问题。
限制基于用户或组的选择字段修改
可以自定义工作项类型,以限制谁可以修改工作项类型的特定字段。
注意
对于 Azure DevOps Server 2019 和早期版本,只能基于具有本地 XML 进程模型的用户或组限制工作项的修改。
使用以下两个条件之一,可以为安全组的用户或不是安全组成员的用户选择字段。
current user is a member of a group...
current user is not a member of a group...
提示
若要避免可能出现的规则评估问题,请指定 Azure DevOps 安全组,而不是Microsoft Entra ID 或 Active Directory 安全组。 有关详细信息,请参阅 默认规则和规则引擎。
例如,可以为选择用户或组设置 “标题 ”或“ 状态 ”字段 只读 。
例如, “用户故事”工作项类型的“优先级 ”字段对于 Fabrikam Fiber\Voice 组的成员变为只读。 当此组的用户打开用户情景时,他们无法更改“优先级”字段中的值。
对于本地 XML 进程模型,可以自定义工作项类型以支持这些限制请求:
- 限制可创建或修改工作项的人员
- 限制谁可以创建特定的工作项类型,例如 Epics 或功能
例如,可以通过将规则添加到工作项类型(通常 位于 WORKFLOW 部分)来限制工作项的修改。
可通过以下两种方式之一限制对工作跟踪对象的访问:
相关文章