Azure DevOps脚本添加工作项为PBI子项失败,显示为Successor关系
问题原因及修复方法
问题原因
你脚本里用的System.LinkTypes.Dependency-Forward是依赖关系的正向链接,默认显示为“Successor(后继)”,和父/子对应的**层级(Hierarchy)**链接类型完全无关。仅靠attributes.name设置"Child"改不了链接类型的本质,所以关系会显示成Successor。
修复方法
要建立PBI(父)和目标工作项(子)的层级关系,必须把链接类型换成System.LinkTypes.Hierarchy-Forward,同时保留attributes.name为"Child"即可。
修改后的核心脚本片段:
# Define the JSON body for the PATCH request $jsonBody = @( @{ op = "test" path = "/rev" value = 46 }, @{ op= "add" path= "/relations/-" value= @{ rel= "System.LinkTypes.Hierarchy-Forward" url= "https://dev.azure.com/$organization/$projectName/_apis/wit/workItems/16170" attributes= @{ isLocked = $false name = "Child" } } } )
额外提示
脚本里硬编码的rev值(46)存在并发风险:如果目标PBI在脚本执行前被其他操作修改过,这个修订号会失效,导致test操作失败。建议先通过GET请求获取当前PBI的修订号,再动态填入test的value中,示例代码如下:
# 获取当前工作项的修订号 $getWorkItemUrl = "$organizationUrl/$projectName/_apis/wit/workitems/$workItemId?api-version=7.0&fields=System.Rev" $currentWorkItem = Invoke-RestMethod -Uri $getWorkItemUrl -Headers $headers -Method Get $currentRev = $currentWorkItem.fields.'System.Rev' # 后续在jsonBody的test操作中使用$currentRev $jsonBody = @( @{ op = "test" path = "/rev" value = $currentRev }, # ... 其他操作 )
内容的提问来源于stack exchange,提问作者Minh Nguyễn Lê
相关产品推荐
相关产品推荐

