如何通过ADO REST API高效列出所有工作项类型状态?求最优方案
Azure DevOps工作项类型状态获取问题解答
为什么第一种方法无法获取完整状态?
- 流程接口返回的是基础流程模板的原始状态,而项目可以对关联流程的工作项类型做项目级自定义修改(比如添加新状态、移除默认状态、调整状态转换规则等)。这些自定义变更仅保存在项目对应的流程实例中,不会同步回基础流程模板,因此直接调用流程接口只能拿到模板的初始状态,看不到项目自定义后的状态。
- 每个项目确实关联一个流程,但这个关联的是流程的项目实例,而非原始模板。项目对流程的自定义是基于实例的独立修改,不会影响原始模板的内容。
更高效的获取方法
可以通过以下方式减少请求量,同时获取完整状态:
- 按流程分组项目,复用同流程的状态数据
- 先调用流程列表接口,获取所有流程ID与名称
- 调用项目列表接口,提取每个项目的
processId字段(项目与流程的关联ID) - 将项目按
processId分组,对每个流程组:- 优先选择一个项目调用项目工作项类型列表+状态接口,获取该流程在项目中的实际状态(包含自定义内容)
- 若组内其他项目未对流程做额外自定义,可直接复用该数据;若有项目做了单独自定义,再单独对该项目发起请求
- 使用批量API请求
Azure DevOps支持将多个REST API请求打包成一个HTTP请求发送,把多个项目的工作项类型/状态查询合并,减少网络请求次数,提升效率。
内容的提问来源于stack exchange,提问作者Jaroslav Ševčík
相关产品推荐
相关产品推荐

