Quantcast
Channel: Team Foundation Server - General forum
Viewing all articles
Browse latest Browse all 6687

TFS Web Services

$
0
0

Hi everyone,

I need to develop an SSIS package to integrate our TFS server to other legacy systems. To do it, I have to use the ClientService3SoapClient web service. Unfortunately, I cannot find any documentation about this web service and I'm writing code by trial and error. 

I wrote the following piece of code as example, but the problem is that I cannot even define the variables that  I have to pass to WS. Defining variables that just compile my code, a lot of exception occurs (such as "metadata" definition or TF51313: The request ID is incorrect or not recognized).

Anyone has an idea about this WS(documentation should be the best)?

Plus, the query that I wrote in the code is in this format 

 query = GetElement(@"<Group GroupOperator='And'><Expression Column='System.WorkItemType' FieldType='16' Operator='equals'><String>Bug</String></Expression></Group>");


, but I would like to use the wiql format 

<?xml version="1.0" encoding="utf-8"?><WorkItemQuery Version="1"><TeamFoundationServer>http://[serveraddress]:8080/tfs/defaultcollection</TeamFoundationServer><TeamProject>Project_1</TeamProject><Wiql>SELECT [System.Id], [System.WorkItemType], [System.Title] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' ORDER BY [System.Id] </Wiql></WorkItemQuery>

Does it possible?

using System;
using System.Data;
using System.Text;
using System.Net;
using MyDemoWebService.WebReference4;
using System.Xml;
//using Microsoft.Teamfoundation.Client;

namespace MyDemoWebService
{
    class Program
    {
        static void Main(string[] args)
        {
            WCFCall(args);
            // ASMXCall(args);
        }

        public static void ASMXCall(string[] args)
        {
            ClientService3 service = new ClientService3();
            DateTime d = new DateTime();
            string dbStamp = "";
            DataSet ds = new DataSet();
            service.QueryWorkitems(null, null, false, null, out d, out dbStamp, out ds);
        }
        static void WCFCall(string[] args)
        {


            ServiceReference.ClientService3SoapClient client = new ServiceReference.ClientService3SoapClient();

            client.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;

            Guid guid = new Guid();
            ServiceReference.RequestHeader ReqHeader = new ServiceReference.RequestHeader();
            System.Xml.XmlElement  query ; //= new System.Xml.XmlElement();
            ServiceReference.QuerySortOrderEntry singlesort = new ServiceReference.QuerySortOrderEntry();
            ServiceReference.QuerySortOrderEntry[] sort = new ServiceReference.QuerySortOrderEntry[1];

            bool useMaster = false ;
            ServiceReference.MetadataTableHaveEntry singlemetadataHave = new ServiceReference.MetadataTableHaveEntry();
            ServiceReference.MetadataTableHaveEntry[] metadataHave = new ServiceReference.MetadataTableHaveEntry[1];
            DateTime data = new DateTime();
            String dbStamp; // new String();
            System.Data.DataSet metadata = new System.Data.DataSet();

            //sort[0].Ascending = true;
            System.Xml.XmlDocument myquery = new System.Xml.XmlDocument();
            // myquery.Load("<TeamFoundationServer>http://[serveraddress]:8080/tfs/defaultcollection</TeamFoundationServer><TeamProject>ALM</TeamProject>	<Wiql>SELECT [System.Id] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' </Wiql>");
            string xml = "";
            ReqHeader.Id = "1";
            singlesort.ColumnName = "Id";
            sort[0] = singlesort;

            query = GetElement(@"<Group GroupOperator='And'><Expression Column='System.WorkItemType' FieldType='16' Operator='equals'><String>Bug</String></Expression></Group>");

            singlemetadataHave.TableName = "WorkItems";
            metadataHave[0] = singlemetadataHave;


            client.QueryWorkitems(ReqHeader, query, sort, useMaster, metadataHave, out data, out dbStamp, out metadata);


        }

        private static XmlElement GetElement(string xml)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);
            return doc.DocumentElement;
        }
    }
}

Thanks in advance for any suggestion that you can provide me.

Regards,

Paolo




Viewing all articles
Browse latest Browse all 6687

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>