Azure DevOps规则设置:按Severity自动配置截止日期求助
解决Azure DevOps规则中@Today + N日期计算的报错问题
我之前配置Azure DevOps规则时也踩过一模一样的坑!你用的@Today +28是Work Item查询里的语法,但规则引擎根本不认这套,所以才会抛出VS402809的错误。别慌,换用Azure DevOps规则专属的表达式语法就能搞定,具体方案如下:
方法1:给规则的「设置字段值」用日期计算表达式
这是最直接的解决方案,能针对不同Severity配置不同的天数偏移:
- 打开项目的Project Settings → Boards → Process,找到你要修改的工作项类型(比如Bug、User Story)。
- 进入该类型的Rules标签,点击New rule新建规则。
- 先设置触发条件:比如「当Severity字段被设置为Critical」(你可以给每个Severity值单独建规则,或者用分支条件一次性处理所有情况)。
- 添加动作:选择Set field value,目标字段选「截止日期」,然后一定要点击Use a value from an expression(别直接在文本框里输入内容)。
- 在表达式框里输入对应的日期计算:
- 如果是基于规则触发时的当前时间加28天:
addDays(utcNow(), 28) - 如果是基于工作项的创建日期加28天:
addDays(createdDate(), 28) - 要是需要区分Severity等级,比如Critical加7天、High加14天,你可以用多分支的
iif表达式:iif(eq(field('Severity'), 'Critical'), addDays(utcNow(),7), iif(eq(field('Severity'), 'High'), addDays(utcNow(),14), addDays(utcNow(),28)))
- 如果是基于规则触发时的当前时间加28天:
- 保存规则后,测试一下:修改Severity值,看看截止日期是不是自动按预期生成了。
方法2:用计算字段实现全局自动计算
如果你的截止日期完全由Severity决定,也可以创建一个自定义的计算字段:
- 在Process设置的工作项类型页面,进入Fields标签,点击Add custom field。
- 字段类型选DateTime,勾选「This is a calculated field」。
- 在计算表达式里写好逻辑,比如:
iif(eq(field('Severity'), 'Critical'), addDays(utcNow(),7), iif(eq(field('Severity'), 'High'), addDays(utcNow(),14), addDays(utcNow(),28))) - 把这个计算字段添加到工作项的布局里,或者直接替换原有的截止日期字段(如果允许的话),这样只要Severity变化,截止日期就会自动更新。
几个关键提醒
- 规则里的表达式用的是Azure DevOps的Workflow Functions,常用的日期函数有:
utcNow():获取当前UTC时间createdDate():获取工作项的创建时间addDays(date, days):给指定日期加N天addWorkDays(date, workDays):只加工作日(自动排除周末和设定的节假日)
- 千万别再把查询里的
@Today语法用到规则里了,这俩是完全不同的语法体系!
内容的提问来源于stack exchange,提问作者C. Molendijk
相关产品推荐
相关产品推荐

