Workflow Foundation > Tutoriaux > Création d'un workflow avec SharePoint Designer
       Accueil
       L'équipe


       Présentation
       Activités WF
       Articles
       Tutoriaux
       Trucs & Astuces


       Forum (MSDN)
       Téléchargements
       Ressources FR
       Annuaire des liens
       Formation (WW)


       Administration


 


Ne ratez pas le MSDN et TechNet Tour 2008 : votre nouveau rendez-vous Développeur dans votre région

Création d'un workflow avec SharePoint Designer

En complément de la récente sortie de la beta 2 de Microsoft Office SharePoint Server 2007 (MOSS 2007), Microsoft propose une nouvelle version de son bon vieux Front Page, renommé pour l'occasion Sharepoint Designer. En plus de son ancien rôle d'editeur de pages SharePoint, celui-ci offre maintenant la possibilité de créer un workflow entièrement en mode design en s’appuyant sur Windows Workflow Foundation. A noter que pour celui-ci utilise entierement et uniquement le modèle déclaratif de Workflow Foundation et se comporte donc, tout simplement, comme un générateur de XOML.

Nous allons donc voir dans ce tutorial, étape par étape, comment créer un workflow très simple qui se déclenchera automatiquement lors de la création ou de la modification d’un document dans une librairie SharePoint. Le rôle de celui-ci sera ainsi d’envoyer un Email aux utilisateurs concernés par le workflow et de leur assigner une tâche.

Pour réaliser ce tutorial vous devez posseder:

  • SharePoint Designer 2007 beta 2
  • Microsoft Office SharePoint Server 2007 beta 2 (et ainsi WinFX beta 2, qui est un pré-requis d'installation)
  • Un site WSS de test, nommé "Demo Workflow" (créé par exemple à partir d'un template blanksite).

Création d'une document librairie

La première étape consiste à créer une librairie de documents sur notre site SharePoint dont les événements déclencheront notre workflow.

Dans SharePoint, cliquez tout d'abord sur "document", "create" puis "document librairy".

Vous vous trouverez ainsi sur la page de création de la librairie. Donnez lui le nom "Ma lib workflow" et sans modifier les options par défaut. La librairie est ainsi prête.

Création du workflow

Executez maintenant SharePoint Designer (SPD) et ouvrez le site désiré (file -> open web site) en spécifiant l'url du site WSS contenant la librairie.

Allez sur file -> new -> workflow, afin d'ouvrir un assistant graphique.

Il est possible que l’option workflow soit grisée, dans ce cas-là pas de panique!
SDP permet de gérer des rôles sur les sites en donnant différents droits tels que "author" ou "designer". Cela correspond au contributors settings qui sont par default sur "author", ce qui limite énormément vos possibilités.
Pour les modifier, allez sur site -> contributor settings. Afin de gagner du temps vous pouvez les désactiver.
Une fois cette opération effectuée vous obtiendrez un écran comme celui présent ci-dessous:



Ici vous allez pouvoir définir les propriétés de votre workflow: son nom, la librairie de documents à laquelle il sera attaché ainsi que son mode de déclenchement. Pour ce dernier 3 options sont offertes :

  • déclenchement manuel (un utilisateur de SharePoint doit explicitement lancer le workflow)
  • déclenchement à la création (lorsque un document est ajouté ou créé, le workflow est executé)
  • déclenchement à la modification (à chaque modification du document, le workflow s'execute)

Cochez les 3 options et cliquez sur "next".

Un workflow est constitué d’étapes (step) chacune possédant des branches (if…else if…). Chaque branche permet de renseigner des conditions. Sur la capture d’écran précédente, on constate qu’il existe plusieurs conditions prédéfinies de bases telles que: "si un mot précis est dans le titre" ou "si la taille du fichier est supérieure à"... 

Definissez une "advanced condition" qui vous permettra de connaître l’état (created ou modified) d’un fichier, et donc la raison pour laquelle le workflow à été déclenché:

Vous allons maintenant définir la condition de déclenchement de votre workflow, les champs "value" et "equals" étant modifiables.

Cliquez sur "value", une "textbox" apparaît suivie d’un bouton "Fx", qui va vous permettre de faire du databinding: récupérer des propriétés issues du document et les assigner directement comme valeurs dans votre workflow.

Cliquez sur le bouton "Fx" afin d'ouvrir l'assistant de databinding.

Une boite de dialogue avec 2 listes déroulantes va ensuite vous permettre de récupérer la date de création de votre fichier.

Dans la première, 4 choix s'offre à vous:

  • Current Item: qui contient les informations du fichier traité.
  • Workflow Data: en bas de votre fenêtre, vous pouvez voir les boutons inititation et variables qui permettent de déclarer des variables globales à votre workflow et d’effectuer des initialisations avant le lancement sur celles-ci.
  • "Malibworkflow" (nom de votre lib) : qui contient les informations propres à la librairy.
  • Task : afin de récupèrer les informations des taches en cours.

Selectionnez "current item" dans le champ source, puis "created" dans l’autre, pour connaître la date de création du fichier.

Cliquez sur "equals" pour voir les différentes options possibles mais laissez la mention "equals" présente par défaut. 

Pour la deuxième valeur, répétez les étapes précédentes mais en choisissant "modified" à la place de "created". Cliquez sur "ok", vous devriez avoir une condition ressemblant à ceci.

Cliquez sur "action", un menu s’ouvre vous proposant différentes actions, afin de réaliser notre objectif, deux sont intéressantes à utiliser :

  • Send an email: qui permet d’envoyer un email
  • Assign a todo item: qui va rajouter une action dans notre liste de taches.

Cliquez sur "send an email", une action est rajoutée, cliquez sur "this message" pour configurer le contenu de votre Email.
Une fenêtre très simple va vous permettre de rédiger votre mail ainsi que de définir ses destinataires (utilisateurs ou groupes).

A côté de "subject", vous allez pouvons voir de nouveau, un bouton Fx qui, comme précédemment, va apporter des informations sur le fichier actuellement traité telles que son nom, la personne l’ayant édité... Seul petit bémol, vous ne pouvez pas construire un objet (mail) en utilisant le databinding. En effet, à partir du moment ou vous sélectionnez une propriété, la textbox passe en lecture seule.
Le bouton "add lookup to body" vous offre la même fonctionnalité mais dans le corps du message, vous pouvez ainsi y rajouter autant d’information que vous le souhaitez.

Ecrivez maintenant un petit texte tel que "Un document a été créé par : ", puis cliquez sur "add lookup to body". Choississez "current item" dans la première liste déroulante puis "created by" dans la deuxième afin d'assigner des valeurs.

Enfin, il serait intéressant d’ajouter un lien vers votre document afin de permettre une consultation rapide, par simple click de l’utilisateur.
Pour ceci, rajoutez un texte du style « Vous pourrez le consulter <a href= ""> ici</a>. Il est nécessaire d'écrire vous même votre message en html dans le but d'avoir un lien clickable.
Positionnez le curseur entre les guillemets de la balise "href", puis cliquez dans"add lookup to body". De nouveau sur "current item", choisissez "Encode absolute url".

Cliquez sur "ok" après avoir définit un destinataire, vous devriez obtenir un rendu comme ci-dessous.

Cliquez ensuite sur "action" puis "assign a todo item".
Cliquez sur "next", puis entrez un nom et une description à votre tâche avant de cliquez sur "finish".

Cliquez sur "these users" et selectionnez un ou plusieurs utililisateurs.

L’ajout d’un TODO item crée automatiquement une validation, c’est-à-dire que le workflow se bloquera tant que les utilisateurs n’auront pas marqué cette tâche comme terminée.

Vous allez maintenant définir le comportement en cas de modification du document.
Cliquez sur "add ’Else If’ condition branch" et répétez les actions précédentes en y apportant ces modifications :

  • La condition n’est plus "created equals modified" mais "modified equals modified" (ce qui est toujours vrai).
  • Changez le texte du mail pour bien voir la différence.

Au final, voilà à quoi devrait ressembler votre workflow.

Cliquez sur check workflow pour vérifier que tout est en ordre puis sur "finish", votre workflow s’ajoute directement dans la librairie que nous lui avons définit au début.

Il ne reste plus qu'à tester le tout: allez sur votre site SharePoint, créez un nouveau document dans votre librairy "ma lib workflow".

Vous devriez recevoir 2 mails :

  • celui que vous avez définit
  • un mail envoyé automatiquement par WSS pour vous spécifiez qu’une tâche vous a été attribuée ainsi qu’un lien pour l’éditer et la valider.

Avant de valider, vous pouvez constaster que dans la librairie, le workflow associé a votre document est actuellement en "in progress".

Validez le document, le workflow passe en "completed", ce qui confirme son bon fonctionnement

Comme vous pouvez ainsi le constater, il est trés simple de déclarer et de créer un workflow avec SharePoint designer: aucune connaissance en .NET n'est nécessaire!
SharePoint Designer reste cependant quelque peut limitatif lors de la création de workflow de grosse envergure, sortant du contexte de gestion de document. Dans ce cas, l’utilisation de Workflow Foundation sous visual studio 2005 sera vraiment préférable et permettra, grâce à de l'utilisation du langage .NET, un ajout de fonctionnalités quasiment illimité.
Dans tout les cas, SharePoint designer reste l'outil idéal pour créer des workflow simples, ce qui conviendra parfaitement à beaucoup d’utilisateurs de SharePoint 2007.

Pierre BOUILLIE