如何在Azure DevOps流程XML的WHEN元素中添加多个条件?
Azure DevOps 流程XML多条件WHEN元素配置指南
在Azure DevOps的流程XML中,要实现多条件组合的规则,需通过<AND>和<OR>逻辑元素嵌套在<WHEN>中来定义复合条件。以下是针对你需求的具体实现示例:
1. 工作项处于Active状态或为Bug类型时,字段必填
两个条件满足任一即可,用<OR>包裹子条件:
<FIELD refname="Custom.TargetField" name="目标字段" type="String"> <REQUIRED> <WHEN> <OR> <WHEN field="System.State" value="Active" /> <WHEN field="System.WorkItemType" value="Bug" /> </OR> </WHEN> </REQUIRED> </FIELD>
2. 字段分配给特定用户时,设置为只读
单条件直接使用<WHEN>:
<FIELD refname="Custom.TargetField" name="目标字段" type="String"> <READONLY> <WHEN field="System.AssignedTo" value="特定用户的邮箱或显示名" /> </READONLY> </FIELD>
3. State为Active且Custom.field值为'a'时,设置Custom.Abc为只读
两个条件需同时满足,用<AND>包裹子条件:
<FIELD refname="Custom.Abc" name="ABC字段" type="String"> <READONLY> <WHEN> <AND> <WHEN field="System.State" value="Active" /> <WHEN field="Custom.field" value="a" /> </AND> </WHEN> </READONLY> </FIELD>
完整整合示例
将上述规则整合到流程XML的<FIELDS>节点下:
<FIELDS> <!-- 目标字段的必填与只读规则 --> <FIELD refname="Custom.TargetField" name="目标字段" type="String"> <!-- 需求1、2:Active状态或Bug类型时必填 --> <REQUIRED> <WHEN> <OR> <WHEN field="System.State" value="Active" /> <WHEN field="System.WorkItemType" value="Bug" /> </OR> </WHEN> </REQUIRED> <!-- 需求3:分配给特定用户时只读 --> <READONLY> <WHEN field="System.AssignedTo" value="user@example.com" /> </READONLY> </FIELD> <!-- Custom.Abc字段的只读规则 --> <FIELD refname="Custom.Abc" name="ABC字段" type="String"> <!-- 需求4:Active状态且Custom.field为'a'时只读 --> <READONLY> <WHEN> <AND> <WHEN field="System.State" value="Active" /> <WHEN field="Custom.field" value="a" /> </AND> </WHEN> </READONLY> </FIELD> </FIELDS>
关键说明
<AND>:所有嵌套的<WHEN>条件必须同时满足才触发规则<OR>:任意一个嵌套的<WHEN>条件满足就触发规则- 逻辑元素支持多层嵌套(如
AND内嵌套OR),适配更复杂场景 - 确保字段引用名(
refname)和系统字段名(如System.State)拼写准确
内容的提问来源于stack exchange,提问作者Subrahmanya Bhat
相关产品推荐
相关产品推荐

