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.
- Partiamo creando un progetto di tipo Applicazione servizio Web Asp.Net.
- 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)
{
}
- Registriamo attraverso EventSubscriptionTool la notifica all’enveto WorkItemChangedEvent inviando nel formato Soap all’indirizzo del web service.
- 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.