Azure DevOps卡片样式:为重新激活的工单设置颜色标识
问题描述
我们团队使用Azure DevOps卡片样式标识延迟任务,目前存在一个问题:当任务从Active状态转为New/Closed状态,再重新回到Active状态时,卡片颜色会被清除,颜色倒计时也会重置。我们希望能识别那些曾被激活、关闭后重新打开的卡片,而无需为所有从New状态转入Active状态的任务设置颜色。
当前使用的样式规则如下:
Activated Date <= @Today - 5Work Item Type = TaskState = Active
此前尝试过几种替代方案,但都存在问题:
- 用
Changed Date替代Activated Date:在工单中添加评论时计数器会重置 - 用
Closed Date:卡片回到Active状态时颜色会清除 - 用
Start Date:每次状态变更(包括转为Closed状态时)计数器都会重置,无法保留Closed前Active状态的累计计数
可行解决方案
方法1:新增自定义字段记录「首次激活时间」
这是最稳定可靠的方案,具体步骤:
- 进入Azure DevOps项目设置,为Task类型新增一个日期类型的自定义字段,例如命名为
First Activated Date - 创建工作项规则:当任务从非Active状态转为Active状态时,若
First Activated Date为空,则将当前时间赋值给该字段;若字段已有值,则保持不变 - 修改卡片样式规则,将原规则中的
Activated Date替换为First Activated Date,即:First Activated Date <= @Today - 5Work Item Type = TaskState = Active
通过这种方式,无论任务被关闭后重新打开多少次,首次激活的时间都不会改变,倒计时会基于首次激活时间持续累计。
方法2:利用工作项历史记录构建查询(无需新增字段)
如果不想新增自定义字段,可以通过查询工作项的状态变更历史来筛选目标任务:
- 创建新的工作项查询,设置以下筛选条件:
Work Item Type = TaskState = Active- 存在至少一次状态变更记录:
State从非Active变为Active,且该变更的时间<= @Today -5
- 将这个查询关联到卡片样式的规则中
注:这种方法需要依赖Azure DevOps的历史记录查询能力,部分场景下可能需要使用WIQL(工作项查询语言)编写查询,示例语句如下:
SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.WorkItemType] = 'Task' AND [System.State] = 'Active' AND EXISTS ( SELECT * FROM WorkItemHistory WHERE [System.FieldName] = 'System.State' AND [System.OldValue] <> 'Active' AND [System.NewValue] = 'Active' AND [System.ChangedDate] <= @Today - 5 )
方法3:借助自动化工具实现逻辑(Power Automate/Azure Functions)
如果需要更灵活的逻辑控制,可以使用自动化工具:
- 用Power Automate监听工作项的状态变更事件
- 当任务首次被激活时,将激活时间存入自定义字段或添加特定标签
- 后续任务状态变更时,不修改该激活时间,确保倒计时始终基于首次激活时间计算
内容的提问来源于stack exchange,提问作者Awie Swart
相关产品推荐
相关产品推荐

