如何通过Azure DevOps REST API使新建工作项排待办列表首位?
问题
我希望通过API创建特定工作项时,该工作项能直接处于Azure DevOps待办列表的第一位。请问此需求是否可以实现?我当前使用Python的requests库编写工作项创建代码,具体代码如下:
def create_inquiry(ticket_id,df): create_headers = { 'Content-Type': 'application/json-patch+json', 'Accept': 'application/json-patch+json', 'Authorization': 'Basic '+authorization } create_data = [ { "op":"add", "path": "/fields/System.Title", "from": None, "value": f"{df.loc[ticket_id, 'title']}" }, { "op":"add", "path": "/fields/Custom.Solving" , "from": None, "value": f"{df.loc[ticket_id,'description']}" }, { "op":"add", "path": "/fields/Custom.Tickets", "from": None, "value": f"{ticket_id}" }, { "op":"add", "path": "/fields/System.State", "from": None, "value": "To do" }, { "op":"add", "path": "/fields/System.AssignedTo", "from": None, "value": f"{df.loc[ticket_id,'collaborator']}" }, { "op":"add", "path": "/fields/Microsoft.VSTS.Common.Priority", "from": None, "value": f"{df.loc[ticket_id,'priority_id']}" } ] response = requests.post(create_url, headers=create_headers,json=create_data) # print(response.status_code) if response.status_code == 200: response = response.json() df.loc[ticket_id,"HasWI"] = True print(response['id']) df.loc[ticket_id,"WorkItem_Id"] = response['id'] # link_work_item(ticket_id,response['id']) else: print("error")
解答
可以实现,核心是控制工作项的排序字段,让它符合待办列表的排序规则,从而排在首位。Azure DevOps待办列表的排序逻辑通常依赖以下字段(取决于项目配置):
- Microsoft.VSTS.Common.Priority:数值越小优先级越高(1为最高级别)
- Microsoft.VSTS.Common.Rank:直接控制待办项顺序,值越小越靠前
- System.CreatedDate:部分配置会按最新创建时间排序,但这不是默认待办排序逻辑
具体实现方法
设置最高优先级
如果你的待办列表按优先级排序,确保将Microsoft.VSTS.Common.Priority设为1。手动指定Rank值
若待办列表按Rank排序,需要让新工作项的Rank值小于现有所有待办项的Rank:- 先调用Azure DevOps查询API,获取当前"To do"状态下所有工作项的最小Rank值
- 将新工作项的Rank设为该最小值减1,确保它排在第一位
修改后的代码示例
在create_data数组中添加或调整以下字段:
# 强制设置最高优先级 { "op":"add", "path": "/fields/Microsoft.VSTS.Common.Priority", "from": None, "value": 1 }, # 添加Rank字段控制排序(假设当前最小Rank为1000000000,设为更小的值) { "op":"add", "path": "/fields/Microsoft.VSTS.Common.Rank", "from": None, "value": 999999999 }
注意事项
- 先确认项目待办列表的排序规则:在Azure DevOps界面待办列表右上角点击「排序」查看当前依赖的字段
- 若无法修改Rank字段,检查项目工作项类型配置,确保该字段允许编辑
- 动态获取最小Rank值能避免硬编码带来的冲突,建议通过查询API实现这一步骤
内容的提问来源于stack exchange,提问作者Rafael Rubenstein
相关产品推荐
相关产品推荐

