2012-05-25 33 views
11

Có ai biết nếu có thể truy xuất danh sách các mục công việc và các mục công việc được liên kết của mình trong một chuyến đi từ TFS bằng cách sử dụng web API TFS của họ dịch vụ?Lấy ra các mục công việc và các mục công việc được liên kết trong một truy vấn bằng cách sử dụng các API TFS

Hiện tại, chúng tôi đang thực hiện cuộc gọi thứ hai cho từng mục công việc được thực hiện trong cuộc gọi đầu tiên và giới thiệu một vấn đề về hiệu suất.

Nếu điều đó không có khả năng, có cách nào để xem nhanh loại mục công việc được liên kết mà không truy xuất chúng (ví dụ: Xem đó là tác vụ hay vấn đề) không?

Trả lời

9

Tìm thấy một article liên quan đến vấn đề này.

Nó cho phép bạn sử dụng truy vấn cây, nơi bạn có thể nhận id mục cha và các id mục được liên kết trong một truy vấn. Sử dụng điều này, một truy vấn thứ hai có thể được sử dụng để lấy các đối tượng mục công việc chi tiết thực tế. Hai truy vấn để giải quyết vấn đề.

Chỉnh sửa: Tôi cũng đã viết một post về điều này trên blog của mình.

16

article bạn đang đề cập đến trong câu trả lời của bạn trình bày với một phương pháp để làm những gì bạn đang làm sau, sử dụng WIQL. Chắc chắn, không phải là một lựa chọn tồi.

Một cách khác, theo ý kiến ​​của tôi tốt hơn, là chỉ đơn giản là tạo ra các truy vấn đồ họa mà mang lại kết quả bạn đang sau. Bạn có lẽ cần một đơn giản "hạng mục công trình và Chuyển liên kết":
enter image description here

Một khi bạn đã lưu mà bạn sẽ có thể:

  1. Mở truy vấn trong VS & Đội Web Access
  2. Tie truy vấn với Excel & hoạt động trên WIs từ bên trong Excel
  3. Ghi lại kết quả truy vấn bằng TFS-API.

Đối với phần sau, giả truy vấn của bạn được đặt tên là "MyLinkedQuery" và nó cư trú dưới "Đội Truy vấn" của TeamProject "MyProj", bạn có thể làm một cái gì đó như thế này:

using System; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.WorkItemTracking.Client; 

namespace LinkedQueryResults 
{ 
    class Program 
    { 
     static void Main() 
     { 
      TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://TFSURL")); 

      var workItemStore = (WorkItemStore)teamProjectCollection.GetService(typeof(WorkItemStore)); 

      var project = workItemStore.Projects["MyProj"]; 
      QueryHierarchy queryHierarchy = project.QueryHierarchy; 
      var queryFolder = queryHierarchy as QueryFolder; 
      QueryItem queryItem = queryFolder["Team Queries"]; 
      queryFolder = queryItem as QueryFolder; 

      if (queryFolder != null) 
      { 
       var myQuery = queryFolder["MyLinkedQuery"] as QueryDefinition; 
       if (myQuery != null) 
       { 
        var wiCollection = workItemStore.Query(myQuery.QueryText); 
        foreach (WorkItem workItem in wiCollection) 
        { 
         Console.WriteLine(workItem.Title); 
        } 
       } 
      }  
     } 
    } 
} 
+0

Are có bất kỳ lợi thế hiệu suất nào để truy vấn được lưu không? Tôi cũng có các mục trên lớp 'thứ ba' mà tôi cần truy xuất, mà tôi vẫn chưa thể tìm ra cách. Tức là, các lỗi liên quan đến các trường hợp thử nghiệm, được liên kết với mục công việc yêu cầu. –

+0

Truy vấn truy vấn từ TFS phải có, trên thực tế, một hình phạt hiệu suất. Điều này sẽ là tối thiểu mặc dù. Lợi ích chính là bạn có thể hình dung trong kết quả VS & duy trì nó một cách dễ dàng và nhất quán. Các tùy chọn khác (có một chuỗi WIQL cứng mã trong ứng dụng giao diện điều khiển của bạn) có thể chứng minh về lâu dài để được ít bảo trì. – pantelif

+0

Mức 'thứ ba' mà bạn đề cập không thể truy cập được từ các truy vấn được tạo trực quan trong VS, nhưng bạn chắc chắn có thể làm điều đó với C#. – pantelif

Các vấn đề liên quan