字段值更改时的 TFS 2018 捕获日期
TFS 2018 capture date when field value changed
我正在工作项中添加一个字段,我想在一个单独的字段中捕获更改该字段的日期和时间。我有它的工作,排序。当用户将下拉列表值更改为 Yes 时,下方会打开一个字段,用于记录值更改为 Yes 的时间。当用户保存工作时间时,系统会将保存时间添加到该字段。我可以回到那个工作项,我可以看到它的价值。但是,如果我更新任何其他信息并保存工作项,时间戳将再次更新为刚刚保存 WIT 的时间。我想要的工作流程是仅在设置该字段时设置时间。我还有一个规则,如果值从是更改为否,该字段将清空该字段。
这是相关字段的字段定义部分。
<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" >
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="Yes">
<SERVERDEFAULT from="clock" />
</WHEN>
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="No">
<READONLY/>
<EMPTY/>
</WHEN>
<HELPTEXT>The is the toole tip</HELPTEXT>
</FIELD>
But if I update any other information and save the workitem the time stamp is updated again to when the WIT was just saved
这是因为当您更新其他信息并保存工作项时。以下规则中的条件仍然是 true
。这样Date Blocked
字段会再次更新。
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="Yes">
<SERVERDEFAULT from="clock" />
</WHEN>
您可以通过添加另一个条件 WHENNOTCHANGED
来解决此问题。见下文:
<FIELD name="Date Blocked" refname="XXX.DateBlocked" type="DateTime" reportable="detail" >
<WHENNOTCHANGED field="Microsoft.VSTS.CMMI.Blocked">
<READONLY />
</WHENNOTCHANGED>
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="Yes">
<SERVERDEFAULT from="clock" />
</WHEN>
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="No">
<READONLY/>
<EMPTY/>
</WHEN>
<HELPTEXT>The is the toole tip</HELPTEXT>
</FIELD>
通过添加 <WHENNOTCHANGED field="Microsoft.VSTS.CMMI.Blocked">
,Date Blocked
将变为只读,并且如果在更新其他信息时未更新 Blocked 则无法更改
我正在工作项中添加一个字段,我想在一个单独的字段中捕获更改该字段的日期和时间。我有它的工作,排序。当用户将下拉列表值更改为 Yes 时,下方会打开一个字段,用于记录值更改为 Yes 的时间。当用户保存工作时间时,系统会将保存时间添加到该字段。我可以回到那个工作项,我可以看到它的价值。但是,如果我更新任何其他信息并保存工作项,时间戳将再次更新为刚刚保存 WIT 的时间。我想要的工作流程是仅在设置该字段时设置时间。我还有一个规则,如果值从是更改为否,该字段将清空该字段。
这是相关字段的字段定义部分。
<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" >
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="Yes">
<SERVERDEFAULT from="clock" />
</WHEN>
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="No">
<READONLY/>
<EMPTY/>
</WHEN>
<HELPTEXT>The is the toole tip</HELPTEXT>
</FIELD>
But if I update any other information and save the workitem the time stamp is updated again to when the WIT was just saved
这是因为当您更新其他信息并保存工作项时。以下规则中的条件仍然是 true
。这样Date Blocked
字段会再次更新。
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="Yes">
<SERVERDEFAULT from="clock" />
</WHEN>
您可以通过添加另一个条件 WHENNOTCHANGED
来解决此问题。见下文:
<FIELD name="Date Blocked" refname="XXX.DateBlocked" type="DateTime" reportable="detail" >
<WHENNOTCHANGED field="Microsoft.VSTS.CMMI.Blocked">
<READONLY />
</WHENNOTCHANGED>
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="Yes">
<SERVERDEFAULT from="clock" />
</WHEN>
<WHEN field="Microsoft.VSTS.CMMI.Blocked" value="No">
<READONLY/>
<EMPTY/>
</WHEN>
<HELPTEXT>The is the toole tip</HELPTEXT>
</FIELD>
通过添加 <WHENNOTCHANGED field="Microsoft.VSTS.CMMI.Blocked">
,Date Blocked
将变为只读,并且如果在更新其他信息时未更新 Blocked 则无法更改