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.

Notifica via mail dell’override di una check-in policy

Per notificare tramite una mail l’override di una check-in policy è sufficiente sottoscrivere l’evento CheckinEvent.

Vediamo come fare:

  1. Scarichiamo da codeplex  Team Foundation Server Event Subscription Tool un programma che consente di sottoscrivere degli eventi in maniera visuale, richiamando dietro le quinte bissubscribe.exe.
  2. Una volta connessi al server TFS
  3. Compiliamo la query XPath "TeamProject" = 'NomeProgetto' AND "PolicyOverrideComment" <> '' dove indichiamo per quale team project dobbiamo notificare e che la mail verrà inviata solo se il campo PolicyOverrideComment è valorizzato.
  4. Impostiamo l’evento a CheckinEvent.
  5. Indichiamo la mail a cui deve essere notificato.
  6. Specifichiamo che dovrà essere inviata una mail.
  7. Se non si è configurato il server SMTP durante l’installazione di TFS questi sono i passi per farlo
    How to: Configure SMTP Server and E-mail Notification Settings in the Services Web.Config File

 Event Subscription

«maggio»
domlunmarmergiovensab
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456