Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Azra [Florent Santin]

.Net, X'Net, aucun lien de parenté V2.0

Actualités

  • MSN Alerts
    View Florent Santin's profile on LinkedIn
     Cet été j’en ai rien à coder : le retour
Team System events notification services


Cela fait un moment que je n'ai pas blogué, beaucoup de travail (une préparation de site 100% AtlasToolKits, l'ajout de contenu sur Workflow Foundation et 3 mois à plein temps sur Team System!), mais, tandis que certains se la coulent douce, me revoilà :)
Ce matin, j'ai voulu préparer une toute petite démonstration sur l'events notification services de Team Foundation server ou j'ai misérablement perdu une heure sur une erreur stupide!
 
Mais qu'est ce que l'events notification services?
Ce service permet, via un exécutable fournit avec TFS, de s'abonner à des événements lancés par Team System: Checkin, ajout/modification d'un WorkItem, Compilation, création de projets...
 
Les évènements suivant sont fournis en standard:
  • AclChangedEvent
  • BranchMovedEvent
  • BuildCompletionEvent
  • BuildStatusChangeEvent
  • CheckinEvent
  • CommonStructureChangedEvent
  • DataChangedEvent
  • IdentityCreatedEvent
  • IdentityDeletedEvent
  • MembershipChangedEvent
  • NodeCreatedEvent
  • NodePropertiesChangedEvent
  • NodeRenamedEvent
  • NodesDeletedEvent
  • ProjectCreatedEvent
  • ProjectDeletedEvent
  • WorkItemChangedEvent
Deux types d'abonnement sont possibles :
  • Le premier, banal, en spécifiant une adresse Email qui recevra une alerte à chaque levée d'événement
  • Le deuxième, plus intéressant, en spécifiant l’ URL d'un Web service (SOAP) qui sera appelé et qui effectuera l'action que vous désirez (et pourquoi pas le déclenchement d'un workflow?)
Au niveau du fonctionnement, l'exécutable qui permet de s'abonner aux événements se nomme BisSubscribe.exe et se situe dans le répertoire "C:\Program Files\Microsoft Visual Studio 2005 Team Foundation Server\TF Setup"
 
Sa syntaxe de fonctionnement est la suivante pour la RTM de TFS (petite modification par rapport à la version précédante)
 
Usage:
BisSubscribe /eventType <eventType> /address <emailOrSoapAddress>
[/deliveryType EmailHtml|EmailPlaintext|Soap] [/server <servername>]
[/filter <filterString>][/tag <tag>]
 
BisSubscribe /unsubscribe /id <id> [/server <servername>]
 
where:
eventType:    The name of the event.  Case sensitive.
filter:       (default none) A filter expression.
address:      The email address or webmethod URL for the subscriber.
server:       The Team Foundation Server name.
tag:          (default none) A field to later use to identify this subscription.
deliveryType: (default Soap) EmailHtml|EmailPlaintext|Soap indicating the preferred format.
id:           The integer id for the subscription to be deleted when unsubscribing.
 
Donc par exemple, pour souscrire à une modification de WorkItem via Email:
 
BisSubscribe.exe /eventType WorkItemChangedEvent /address toto@toto.org /deliveryType EmailHtml /server TF-WK
 
Ou pour déclencher un Web Service lors d'un checkIn:
 
BisSubscribe.exe /eventType CheckinEvent /address http://localhost:8080/Test/WebService.asmx /deliveryType Soap /server TF-WK
 
ou WebService.asmx ressemblera par exemple à ceci:

Imports
System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:=
"http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<
Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class WebService
     Inherits System.Web.Services.WebService

       <SoapDocumentMethod(Action:=
"http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify",  RequestNamespace:="http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03"), WebMethod()> _
       Public Sub Notify(ByVal eventXml As String)

            Dim sFileName As String = "c:\test.xml"
            Dim fs As New System.IO.FileStream(sFileName, IO.FileMode.OpenOrCreate, IO.FileAccess.Write)
            Dim sw As New System.IO.StreamWriter(fs)
           sw.WriteLine(eventXml)
           sw.WriteLine(Now)
           sw.Flush()
           sw.Close()
           fs.Close()

     
End Sub
End Class

Si vous voulez éviter de perdre une heure comme moi, c'est donc ici qu'il faut faire attention, au niveau des schémas, de bien spécifier "[...]/Notification/03/Notify" et non "[...]/Notification/02/Notify" comme dans les versions pré-RTM.
 
La chaine de caractères eventXML contiendra toute les informations relatives au contexte de déclenchement de l'évènement, vous pouvez donc imaginer n'importe quel type de traitement de ces informations (par exemple créer et assigner un workItem pour notifier un testeur qu'une compilation a eut lieu et qu'il faut qu'il vérifie les logs des tests unitaires)
Il est possible, avec BisSuscribe.exe d'affiner avec des filtres le déclenchement d'événements, par exemple déclencher un événement uniquement sur la modification de WorkItems de type "bug".
 
Voila, have fun :)
Posted: mardi 16 mai 2006 13:44 par azra
Classé sous :
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

themit a dit :

On se la coule douce, on profite a mort et en plus on voit plein de trucs de folie !!!!

Et le pire, c'est qu'on pense bien a toi avec stephane entre 2 beef burger de compet

C'est cool non ?
¨
:D
# mai 16, 2006 18:18
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [WPF] Nouvel article sur c2i.fr par Richard Clark le il y a 15 heures et 50 minutes

- F# nouvelle CTP 1.9.6.2 (update) par Pierrick's Blog le il y a 19 heures et 55 minutes

- La suite ...Proposition de collaboration rédactionnelle entre les communautés de développeurs et Microsoft France par LucasR le 09-05-2008, 17:45

- [Fun] Votre simulateur de vol avec Microsoft ESP par Julien Chable le 09-05-2008, 12:02

- [Best Practices] Customisation du My Site : Comment le modifier en amont et en aval par The Mit's Blog le 09-05-2008, 10:47

- Patrick Tisseghem s'en est allé ... par The Mit's Blog le 09-05-2008, 10:04

- MS AutoCollage par alex# le 09-05-2008, 09:18

- Un grand SharePointeur nous a quitte : Patrick Tisseghem manquera à la communauté ! par RedoBlog - The .NET Gentleman !!! le 09-05-2008, 08:52

- [WPF] Comment charger dynamiquement un fichier XAML qui définit des eventhandler ? par Thomas Lebrun le 09-04-2008, 10:56

- Article sur le filtrage des modèles de site SharePoint par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 09-04-2008, 00:11