Notificare ad un WebService la modifica di un workitem

In un articolo precedente abbiamo visto come notificare via mail quando una check-in policy viene aggirata, oggi vediamo come notificare ad un webservice quando un workitem viene modificato.

  1. Partiamo creando un progetto di tipo Applicazione servizio Web Asp.Net.
     image
  2. Creiamo un file asmx con il nome che preferiamo e inseriamo il metodo Notify che deve avere la stessa firma.
    (Attenzione all’attributo SoapDocumentMethod che mi ha fatto perdere un sacco di tempo, perché  in qualche post è riportato uno 02 invece dello 03, forse dovuto alle differenti versioni di TFS 2005 TFS 2008)
    [WebMethod]
    [SoapDocumentMethod(Action = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify",
     RequestNamespace = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03")]
    public void Notify(string eventXml, string tfsIdentityXml)
    {
    }

  3. Registriamo attraverso EventSubscriptionTool la notifica all’enveto WorkItemChangedEvent inviando nel formato Soap all’indirizzo del web service.
    Event Subscription
  4. A questo punto ad ogni modifica dei work item che appartengono al progetto MyTeamproject verrà richiamato il metodo Notify del webservice Sercice.asmx.

 

Quando con TFS si notificano gli eventi attraverso Soap i parametri che vengono passati sono stringhe xml.
Esiste un progetto su codeplex che permette di deserializzare questi oggetti per gestirli in maniera più intuitiva.

«maggio»
domlunmarmergiovensab
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456