2012-05-25 11 views
11

का उपयोग कर एक ही प्रश्न में कार्य आइटम और उनके लिंक किए गए कार्य आइटमों को पुनर्प्राप्त करना क्या किसी को पता है कि कार्य आइटमों की सूची पुनर्प्राप्त करना संभव है और उनके लिंक किए गए कार्य आइटम टीएफएस एपीआई वेब का उपयोग कर टीएफएस से एक यात्रा में सेवाओं?टीएफएस एपीआई

फिलहाल, हमें पहली कॉल के दौरान किए गए प्रत्येक कार्य आइटम के लिए दूसरी कॉल करना होगा, और एक प्रदर्शन समस्या पेश कर रही है।

यदि यह संभव नहीं है, तो उन्हें पुनर्प्राप्त किए बिना लिंक किए गए कार्य आइटम के प्रकार पर देखने का कोई तरीका है (उदा। देखें कि यह कोई कार्य या समस्या है)?

उत्तर

9

इस समस्या के बारे में article मिला।

यह आपको एक वृक्ष क्वेरी का उपयोग करने की अनुमति देता है, जहां आप एक प्रश्न में मूल आइटम आईडी और उसके लिंक किए गए आइटम आईडी प्राप्त कर सकते हैं। इसका उपयोग करके, वास्तविक विस्तृत कार्य आइटम ऑब्जेक्ट्स प्राप्त करने के लिए दूसरी क्वेरी का उपयोग किया जा सकता है। इस मुद्दे को हल करने के लिए दो प्रश्न।

संपादित करें: मैंने अपने ब्लॉग पर इस बारे में post भी लिखा है।

16

articleWIQL का उपयोग करके आप जो भी कर रहे हैं, उसके लिए एक विधि के साथ आप अपने उत्तर प्रस्तुत करने का जिक्र कर रहे हैं। निश्चित रूप से, एक बुरा विकल्प नहीं है।

मेरी राय में, एक और तरीका, ग्राफिकल रूप से क्वेरी उत्पन्न करना है जो आपके द्वारा किए गए परिणामों को उत्पन्न करता है। आप शायद एक सरल "काम आइटम और डायरेक्ट लिंक" की जरूरत है:
enter image description here

एक बार जब आप 've बचाया है कि आप' कर सकेंगे:

  1. ओपन वी.एस. & टीम वेब एक्सेस में क्वेरी
  2. टाई एक्सेल & के साथ क्वेरी एक्सेल
  3. के भीतर से WIs पर काम TFS-API के साथ क्वेरी परिणाम पकड़ें।

उत्तरार्द्ध के लिए, आपकी क्वेरी मान "MyLinkedQuery" नाम दिया गया है और यह TeamProject की "टीम प्रश्नों" "MyProj" के तहत रहता है, तो आप कुछ इस तरह कर सकते हैं:

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

हैं प्रश्न सहेजने के लिए कोई प्रदर्शन लाभ है? मेरे पास एक 'तीसरी' परत पर आइटम भी हैं जिन्हें मुझे पुनर्प्राप्त करने की आवश्यकता है, जिसे मैं अभी भी समझने में सक्षम नहीं हूं। यही है, बग टेस्ट केस से जुड़े हुए हैं, जो आवश्यकता कार्य आइटम से जुड़े हुए हैं। –

+0

टीएफएस से क्वेरी को पुनर्प्राप्त करना वास्तव में एक प्रदर्शन जुर्माना होना चाहिए था। हालांकि यह न्यूनतम होगा। मुख्य लाभ यह है कि आप परिणामों में वीएस में कल्पना कर सकते हैं और इसे आसानी से और लगातार बनाए रख सकते हैं। दूसरा विकल्प (आपके कंसोल ऐप के भीतर हार्ड-कोडित WIQL स्ट्रिंग होने) कम रखरखाव के लिए लंबे समय तक साबित हो सकता है। – pantelif

+0

आपके द्वारा उल्लेख किया गया 'तीसरा' स्तर वीएस में दृष्टि से उत्पन्न प्रश्नों से पहुंच योग्य नहीं है, लेकिन आप निश्चित रूप से इसे C# के साथ कर सकते हैं। – pantelif