Laurent Cotton
WSS 3.0 - Création et déploiement d'un EventHandler
Nous allons voir au travers d'un exemple complet comment créer et déployer un EventHandler dans Windows SharePoint Services 3.0. Les EventHandlers sont une nouveauté de WSS 3.0 et permettent d'être notifiés par WSS et d'agir sur certains évènements
Par Laurent Cotton publié le 21/05/2007 à 00:20, lu 7932 fois, 4 pages
 3 | Déploiement d'un EventHandler
Pour déployer notre EventHandler, nous allons utiliser une des autres nouveautés de WSS 3.0 : les features. Cette nouveauté permet de venir enrichir un site WSS avec de nouvelles fonctionnalités. Un prochain article sera dédié aux features. Nous allons pour le moment nous contenter de voir comment créer la feature permettant de déployer notre EventHandler dans note site WSS.
La feature permettant de déployer notre EventHandler se compose de 2 fichiers XML. Avant d'aller plus en avant, revenons dans notre projet et créons un dossier « FullNameContactFeature ». Ce répertoire contiendra les 2 fichiers xml qui composent notre feature.
Créons maintenant notre premier fichier xml et nommons-le « feature.xml » (attention, le nom est imposé). Ce premier fichier va nous permettre d'informer WSS qu'une nouvelle feature est disponible et de fournir à WSS les informations pour la charger.
Ce premier fichier est très simple (cf. code ci-dessous) :

< Feature  

      Scope ="Web" 

      Title ="Handler to standard contact list : compute full name" 

      Id ="E854E03E-BCDD-4a88-8C20-902BC21FBFB2" 

      xmlns ="http://schemas.microsoft.com/sharepoint/">

    < ElementManifests >

        < ElementManifest   Location ="Elements.xml"/>

    </ ElementManifests >

</ Feature >

 

  1. L'attribut Scope permet de spécifier la portée de notre feature (Farm, Web, ...),
  2. L'attribut Title contient le titre de notre feature tel qu'il sera affiché dans la collection des features du site,
  3. L'attribut Id correspond à un Guid qui va identifier votre feature de manière unique. Pour remplir cette valeur, générez à l'aide de Visual Studio 2005 un nouveau Guid (menu Tools / Create GUID), copiez le Guid généré et collez la valeur à l'attribut Id,
  4. L'attribut Location de la section ElementManifest permet de communiquer à WSS le nom du fichier dans lequel il va pouvoir trouver les informations détaillées de la feature. Dans mon Exemple, ce fichier se nomme Elements.xml.
Créons maintenant le second fichier .xml. Nous le nommerons donc Elements.xml. Ce fichier va donc décrire le type de feature, l'assembly contenant le code correspondant, .... Voici le contenu de notre fichier :

< Elements   xmlns ="http://schemas.microsoft.com/sharepoint/">

  < Receivers   ListTemplateId ="105">

    < Receiver >

      < Name >Full Name Handler for default contact on updating</Name>

      < Type >ItemUpdating</Type>

      < SequenceNumber >30001</SequenceNumber>

      < Assembly >Bewise.Wss3.Sample.EventHandler, Version=1.0.0.0,          Culture=neutral, PublicKeyToken=995401eda3d8bd0c</Assembly>         

  < Class >Bewise.Wss3.Sample.EventHandler.FullNameContactHandler</Class>

    </ Receiver >

    < Receiver >

      < Name >Full Name Handler for default contact on add</Name>

      < Type >ItemAdding</Type>

      < SequenceNumber >30002</SequenceNumber>

      < Assembly >Bewise.Wss3.Sample.EventHandler, Version=1.0.0.0,          Culture=neutral, PublicKeyToken=995401eda3d8bd0c</Assembly>         

  < Class >Bewise.Wss3.Sample.EventHandler.FullNameContactHandler</Class>

    </ Receiver >

  </ Receivers >

</ Elements >

 

  1. L'attribut ListTemplateId de la section Receivers correspond à la valeur du type de liste sur laquelle va porter l'EventHandler. Dans WSS, les listes de contacts ont l'Id 105,
  2. La section Receivers va ensuite contenir autant de section Receiver que d'évènement écouté. Dans notre exemple, notre handler réagit sur 2 évènements : l'ajout et la mise à jour. Nous allons donc créer 2 sections Receiver.
  3. Pour chacune des sections Receiver,
    1. L'attribut Name décrit l'action du handler sur l'évènement (enfin, vous y mettez ce que vous voulez !),
    2. L'attribut Type nomme l'évènement sur lequel doit réagir le handler. Dans notre exemple, le premier est ItemUpdating et le second ItemAdding (ou vice et versa),
    3. L'attribut SequenceNumber correspond à un numéro d'ordre unique pour les évènements,
    4. L'attribut Assembly donne le nom complet de l'assembly contenant le code du handler à exécuter,
    5. L'attribut Class donne le nom de la classe qui hérite de SPItemEventReceiver,
Pour plus d'informations sur les autres possibilités offertes pour configurer le déploiement du handler via les features, allez voir le site de Microsoft http://msdn2.microsoft.com/en-us/library/ms431081.aspx.
Pour finir notre feature, assurez-vous dans les propriétés des 2 fichiers xml qu'ils seront bien copiés dans le répertoire output. Compilez votre projet en release. Vous devriez tous obtenir :
  1. Une assembly Bewise.Wss3.Sample.EventHandler.dll,
  2. Un répertoire FullNameContactFeature contenant :
    1. Un fichier feature.xml,
    2. Un fichier elements.xml.
Copiez l'assembly dans le répertoire FullNameContactFeature et voilà, notre feature est prête à être déployée.
Notre feature est prête, reste plus qu'à la déployer dans WSS. Pour ce faire, copions le répertoire FullNameContactFeature créé ci-dessus dans le répertoire FEATURE de WSS. Dans une installation par défaut, ce répertoire se trouve ici : C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES.
Ensuite, il nous faut ajouter notre assemby dans le GAC. Pour cela, « drag and dropper » l'assembly Bewise.Wss3.Sample.EventHandler.dll dans le répertoire C:\WINDOWS\assembly.
Enfin, passons à la dernière étape pour que notre feature apparaisse dans notre site WSS. Ouvrez la console et déplacez-vous dans le répertoire bin de WSS (par défaut dans C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN) et exécutez la commande suivante :

stsadm.exe -o installfeature -filename FullNameContactFeature\feature.xml -force

  1. Le paramètre -filename correspond au chemin relatif d'accès à notre fichier feature.xml depuis le répertoire FEATURE de WSS,
  2. Le paramètre –force permet de forcer le redéploiement de la feature (notamment dans le cas d'une mise à jour).
Si la commande réussit, le message « Operation completed successfully » doit apparaître. Exécutez ensuite la commande IISRESET pour forcer un redémarrage du site WSS.
Il ne nous reste plus qu'à activer notre feature. Pour cela, 2 possibilités :
  1. En utilisant à nouveau la commande stsadm.exe avec l'option -o activatefeature,
  2. Directement depuis la liste des features disponibles dans notre site WSS (Paramètres du site).
Testons que tout fonctionne correctement. Pour cela, créez une nouvelle liste de contacts. Ajoutez un nouveau contact en remplissant uniquement le First Name et le Last Name puis validez. Editez à nouveau le contact : la colonne Full Name est bien remplie avec la concaténation des 2 valeurs précédentes.
 
» Démarrer une discussion
 
Discussion démarée par samwokw le 07/06/2009 à 12:54, 1 commentaire(s).
Discussion démarée par fibreoptique le 16/06/2009 à 11:43, 1 commentaire(s).
Discussion démarée par devileye le 24/08/2007 à 11:11, 1 commentaire(s).