You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Logic App「When a work item is updated」触发器属性与条件设置问题

解决Azure Logic App「When a work item is updated」触发器获取先前属性值的问题

刚好我之前在项目里碰到过一模一样的情况!默认的「When a work item is updated」触发器确实不会直接返回工作项属性的先前值,得借助Azure DevOps的REST API来获取变更历史,下面分你的两个场景给你一步步说解决方案:

场景1:根据工作项先前状态执行响应操作

  1. 在触发器之后,添加一个HTTP动作,调用Azure DevOps的工作项更新历史API,请求URL格式如下:
    https://dev.azure.com/{你的组织名}/{你的项目名}/_apis/wit/workItems/{工作项ID}/updates?api-version=7.1-preview.3
    
    注意把{你的组织名}、{你的项目名}、{工作项ID}替换成实际值,{工作项ID}可以直接从触发器的输出里引用。
  2. 配置授权:选择「Azure Active Directory」,租户填你的AD租户ID,受众填https://dev.azure.com,然后选择有Azure DevOps项目访问权限的托管标识或服务主体。
  3. 添加Parse JSON动作,把HTTP动作返回的响应内容作为输入,点击「生成Schema」按钮,粘贴你手动调用API得到的返回结果,自动生成JSON Schema(这样后续就能方便地提取字段值了)。
  4. 从解析后的结果里提取先前的状态值,一般最新的更新在返回数组的第一个位置,所以可以引用value[0].fields.System.State.oldValue(如果有多轮更新,可能需要调整索引,或者用筛选动作找到状态变更的那条记录)。
  5. 最后添加条件动作,对比先前状态和触发器返回的当前状态(System.State),根据不同的变更情况执行对应的操作。

场景2:检测是否添加了已完成工作内容

同样依赖工作项更新历史API,步骤类似:

  1. 重复场景1的前3步,调用API并解析JSON。
  2. 在解析后的结果里,查找Microsoft.VSTS.Scheduling.CompletedWork字段的变更记录:
    • 如果该字段的oldValue为null且newValue大于0,说明是第一次添加已完成工作;
    • 如果oldValue存在且newValue大于oldValue,说明用户新增了已完成工作内容。
  3. 用条件动作判断上述逻辑,满足条件时执行后续操作。

一些额外注意事项

  • 确保Logic App使用的身份(托管标识/服务主体)拥有Azure DevOps项目的Work Item Read权限,否则API会返回权限错误。
  • 如果工作项更新非常频繁,API返回的结果可能分页,这时候需要添加循环动作处理分页,但一般最新的变更都会在第一页,大部分场景下不需要处理。
  • 可以用Compose动作把提取到的先前值临时存储起来,方便后续多个步骤引用,避免重复写复杂的表达式。

内容的提问来源于stack exchange,提问作者thejustv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:43:15