如何设置规则:关闭Story工作项必须关联父级Feature
解决Story关闭时必须关联父级Feature的自动检测方案
方案一:Azure DevOps原生工作项规则配置
这是最直接的官方解决方案,无需额外工具:
- 进入项目设置 → 工作项类型 → 选中「Story」工作项类型 → 打开「规则」标签页
- 点击「新建规则」,选择触发条件为当状态更改为Closed
- 添加「必填链接」规则,选择链接类型为「父级(Parent)」,并可进一步限制链接目标的工作项类型为「Feature」
- 保存规则后,用户尝试关闭未关联父级Feature的Story时,系统会直接拦截并提示必须添加父级链接
方案二:Pipeline自动校验与修正
如果需要批量检查或自定义处理逻辑,可以用Pipeline脚本实现:
- 创建定时触发或事件触发的Pipeline(比如监听工作项状态变更事件)
- 使用Azure DevOps REST API查询违规的Story,示例PowerShell脚本如下:
$orgUrl = "https://dev.azure.com/你的组织名" $projectName = "你的项目名" $pat = "你的个人访问令牌(PAT)" # 构造WIQL查询,筛选已关闭无父级的Story $queryBody = @{ query = @" SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.WorkItemType] = 'User Story' AND [System.State] = 'Closed' AND [System.Parent] = '' "@ } | ConvertTo-Json $headers = @{Authorization = "Basic $([Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat")))"} $response = Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/wit/wiql?api-version=7.1-preview.2" -Method Post -Headers $headers -Body $queryBody -ContentType "application/json" # 处理结果:输出违规项、自动改回状态或发送通知 if ($response.workItems.Count -gt 0) { Write-Host "违规Story列表(已关闭未关联父级Feature):" foreach ($item in $response.workItems) { Write-Host "ID: $($item.id) | 标题: $($item.fields.'System.Title')" # 可选:自动将状态恢复为Active # $updateBody = @{fields = @{"System.State" = "Active"}} | ConvertTo-Json # Invoke-RestMethod -Uri "$orgUrl/$projectName/_apis/wit/workitems/$($item.id)?api-version=7.1-preview.3" -Method Patch -Headers $headers -Body $updateBody -ContentType "application/json-patch+json" } }
方案三:Marketplace扩展辅助
如果不想手动配置规则或写脚本,可以在Azure DevOps Marketplace中搜索合规性类扩展(如「Work Item Validator」),这类工具支持可视化配置链接规则,自动校验工作项状态变更时的链接合规性
内容的提问来源于stack exchange,提问作者Rooz
相关产品推荐
相关产品推荐

