【问题标题】:TFS Aggregator update parent field when a work item deleted删除工作项时 TFS 聚合器更新父字段
【发布时间】:2018-05-26 08:16:39
【问题描述】:

我使用 VSTS 和 tfs aggregator 在工作项发生一些更改时更新父字段,并且一切正常。现在我想在删除工作项时更新父字段。我得到了错误:

    Exception encountered processing notification: TF26198: 
The work item does not exist, or you do not have permission to access it. 
Stack Trace:   
at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem.LoadWorkItemFromRowSetInternal(Int32 rev, Nullable`1 asof, IWorkItemRowSets witem)
at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem..ctor(WorkItemStore store, Int32 id)
at Aggregator.Core.Facade.WorkItemRepository.GetWorkItem(Int32 workItemId)
at Aggregator.Core.EventProcessor.ProcessEvent(IRequestContext requestContext, INotification notification)
at Aggregator.WebHooks.Controllers.WorkItemController.Post(JObject payload)

当我删除 workItem 时,没有任何工作项可以通过它访问父级,但是有没有办法获取已删除的 workItem 的父级?有什么想法吗?

【问题讨论】:

    标签: tfs azure-devops tfs-aggregator


    【解决方案1】:

    对此没有简单的答案。

    我们在某个时候添加了对deleted 事件的支持,但是聚合器在 TFS 将工作项标记为已删除之后接收到该事件。我们使用的 API 过滤掉那些对象 IIRC。您拥有的唯一有用信息是已删除工作项的 ID。使用PreviousRevision 或许可以回到过去,但我没试过。

    源代码可用,随时欢迎 PR。

    【讨论】:

      【解决方案2】:

      更新: 你不能这样做。

      错误很明显:

      工作项不存在,或者您没有访问权限 它。

      当您通过命令删除工作项时,所有信息也将被删除。这会从数据存储中永久删除工作项。 永久删除意味着 WIT 数据存储中的所有信息都已删除,无法恢复或重新激活。您绝对无法查询和更新已删除工作项的父级。

      即使工作项存在于“某处”,您也无权打开该工作项,也无法查询有关它的信息。这是一点鸡肉/鸡蛋。看看这个类似的问题:TFS API: How to check if a work item has been deleted or is non existent on the TFS Server? (not if it is accessible)

      【讨论】:

      • 我不想恢复工作项,我想在工作项被删除时(或恰好在删除之前)更新父项
      • @Saeid 错误很明显,The work item does not exist, or you do not have permission to access it.,当你通过命令删除工作项时,所有信息都会被删除。即使工作项存在于某处,您也无权打开该工作项,也无法查询有关它的信息。这是一点鸡肉/鸡蛋。请参阅我的更新答案。也看看这个类似的问题:stackoverflow.com/questions/14302732/…
      • 我了解,Steel 我需要更新父级。我说删除时工作项不存在是有道理的,我在父项上有剩余工作,当工作项被删除时,我需要更新父项
      • @PatrickLu-MSFT 我认为当工作项被发送到回收站时,OP 指的是 软删除
      • 嗨@Saeid,首先这无法通过TFS 端的开箱即用功能来实现。而且即使是3方扩展,根据Giulio的回复,也不支持,可能需要自定义。如果您想这样做,请尝试按照 Giulio 的建议,使用 PreviousRevision 返回并获取父级,然后更新相关字段。
      猜你喜欢
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2017-12-05
      • 2017-10-22
      • 1970-01-01
      • 2020-07-22
      • 2012-04-28
      • 2013-04-02
      相关资源
      最近更新 更多