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

TFS 2018工作项字段值变更时间捕获规则配置优化咨询

解决TFS工作项字段时间戳仅在特定变更时更新的问题

你已经搭建了基础的字段规则,但当前方案的核心问题在于:只要Blocked值是Yes,每次保存工作项都会触发<SERVERDEFAULT>更新时间戳,导致其他字段修改时时间被意外覆盖。我们需要调整规则逻辑,精准控制时间戳的记录和清空时机。

修正后的字段定义代码

<FIELD name="Blocked" refname="Microsoft.VSTS.CMMI.Blocked" type="String" reportable="dimension" >
  <ALLOWEDVALUES expanditems="true">
    <LISTITEM value="Yes" />
    <LISTITEM value="No" />
  </ALLOWEDVALUES>
  <DEFAULT from="value" value="No"/>
</FIELD>

<FIELD name="Date Blocked" refname="XXX.DateBlocked" type="DateTime" reportable="detail" >
  <!-- 仅当Blocked从非Yes改为Yes时,记录当前时间 -->
  <WHENCHANGED field="Microsoft.VSTS.CMMI.Blocked" value="Yes">
    <SERVERDEFAULT from="clock" />
  </WHENCHANGED>
  
  <!-- 当Blocked从Yes改为No时,清空时间字段 -->
  <WHENCHANGED field="Microsoft.VSTS.CMMI.Blocked" value="No">
    <EMPTY />
  </WHENCHANGED>
  
  <!-- Blocked保持Yes且未被修改时,时间字段设为只读,防止其他操作覆盖 -->
  <WHEN field="Microsoft.VSTS.CMMI.Blocked" value="Yes">
    <WHENNOTCHANGED field="Microsoft.VSTS.CMMI.Blocked">
      <READONLY />
    </WHENNOTCHANGED>
  </WHEN>
  
  <!-- Blocked为No时,字段保持只读且为空 -->
  <WHEN field="Microsoft.VSTS.CMMI.Blocked" value="No">
    <READONLY />
    <EMPTY />
  </WHEN>
  
  <HELPTEXT>The is the tooltip</HELPTEXT>
</FIELD>

关键规则说明

  • <WHENCHANGED> 触发精准时间记录:只有当Blocked字段的值被主动修改为Yes时,才会调用服务器时钟写入当前时间,彻底避免了其他字段更新导致的误覆盖。
  • 状态变更时自动清空:当Blocked从Yes切换到No时,自动清空Date Blocked字段,无需手动操作。
  • 只读保护已记录时间:如果Blocked已经是Yes且本次保存没有修改这个字段,Date Blocked会被设为只读,确保之前记录的时间不会被其他操作改动。
  • No状态下的字段锁定:当Blocked为No时,字段既只读又强制为空,防止无效数据录入。

调整后就能完全匹配你的需求:仅在Blocked设为Yes时记录时间,改回No时自动清空,其他字段更新不会影响已有的时间戳。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 07:47:44