2017-02-13 4 views
0

ССТ API реализует этот класс:WIQL Запрос на WorkItemLinks

enter image description here

Как я могу использовать запрос WIQL и API TFS, чтобы получить все элементы работы, которые добавили ссылку родитель/ребенок или изменено с определенной даты? Я подозреваю, что использование таблицы WorkItemLinks станет местом для начала, но я не нашел никакой документации по поставляемым полям. Кроме того, важно отметить, что изменение ссылки на рабочий элемент не влияет на поле даты изменения рабочего элемента. Я подозреваю, что это потому, что ссылки имеют свои собственные измененные/созданные поля даты. Я хочу, чтобы эти элементы отображались в плоском списке. Какие у меня варианты? **

+0

Я обновил свой ответ, пожалуйста, проверьте. –

ответ

0

Я нашел еще один способ помочь вам. Использование запроса workitem для поиска этих рабочих элементов, похоже, не может этого сделать. Но вы можете использовать этот метод: найдите каждый workitem workitemLinks, проверьте, является ли его тип ссылки «parent/child» и проверьте, добавлена ​​ли дата добавления/удаления в течение вашего периода времени.

var workItemStore = teamProjectCollection.GetService<WorkItemStore>(); 
var queryString = @"select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] 
        from WorkItemLinks 
        where (
          Source.[System.TeamProject] = 'Mtt-Scrum' 
          and Source.[System.WorkItemType] <> '' 
         ) and (
          [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' 
          or [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Reverse' 
         ) and (
          Target.[System.TeamProject] = 'Mtt-Scrum' 
          and Target.[System.WorkItemType] <> '' 
         ) 
        order by [System.Id] mode (MustContain)"; 

// Create and run the query. 
var query = new Query(workItemStore, queryString); 
WorkItemLinkInfo[] witLinkInfos = query.RunLinkQuery(); 

foreach (WorkItemLinkInfo witinfo in witLinkInfos) 
{ 
    if (witinfo.SourceId == 0) //find those workitems which are not at top-level 
    { 
     int targetWIid = witinfo.TargetId; 
     WorkItem workItem = workItemStore.GetWorkItem(targetWIid); //get the workitem 
     foreach (WorkItemLink wiLink in workItem.WorkItemLinks) 
     { 

      if (wiLink.LinkTypeEnd.Name.Equals("Parent") || wiLink.LinkTypeEnd.Name.Equals("Child")) 
      { 
       if (DateTime.Compare(wiLink.AddedDate, 'yourDate') < 0) 
       { 
        ...... 
       } 

      } 
     } 
    }   

} 
Смежные вопросы