Loupe

[SharePoint] Développer son premier workflow sous Workflow Manager

Développer un workflow, c’était difficile… avant ! En effet, nous avons désormais la possibilité d’utiliser Workflow Manager 1.0 conjointement à SharePoint. Attention cependant, celui-ci n’est pas automatiquement installé par défaut, il vous faudra donc le faire vous même. Heureusement, cela n’est pas difficile, il vous suffira de suivre la procédure de TechNet : http://technet.microsoft.com/fr-fr/library/jj658588.aspx.

Nous allons donc créer notre premier workflow, en commençant simple. Ce sera un workflow d’approbation qui va assigner une tâche de validation à une personne, puis nous enverrons un mail à l’initiateur du workflow pour l’informer du résultat.

Etape 1 : Initialisation du projet

Commencez par créer un projet SharePoint 2013 vide :

Workflow01

Et sélectionnez un déploiement en mode sandbox. Et oui, vous le verrez ensuite, mais un des gros changements c’est que l’on ne code plus dans son workflow : ce n’est que du déclaratif !

Workflow02

Puis ajoutez un élément de type workflow :

Workflow03

Ce sera un workflow de liste :

Workflow04

Nous sélectionnons dès maintenant la bibliothèque d’où partira le workflow (il faudra le faire sinon depuis SharePoint) et laissons le workflow créer les listes pour l’historique et les tâches :

Workflow05

Enfin, nous choisissons le mode de démarrage :

Workflow06

Et voici pour la partie ultra facile, et finalement très classique des workflows dans SharePoint.

Votre projet comporte maintenant 2 fonctionnalités de scope Web: l’une contenant votre définition de workflow, l’autre les instances de liste.

Workflow07

Etape 2 : Construction du workflow

Nous disposons maintenant d’une surface d’édition de notre workflow, ainsi que d’une boite à outils contenant les diverses activités disponibles (activités génériques + activités spécifiques à SharePoint).

Workflow08

Nous pouvons déclarer des variables dans la zone en dessous de l’éditeur : ajoutons une variable “Approver” de type chaine avec comme valeur le login de l’approbateur au format Claims (un très article sur le sujet : http://www.wictorwilen.se/Post/How-Claims-encoding-works-in-SharePoint-2010.aspx), dans mon cas ce sera “i:0#.w|spdev\manager”. A noter que les variables sont à déclarer en C#.

Workflow09

Remarque: les variables sont créées pour un scope particulier: par exemple la séquence générale, mais potentiellement disponible uniquement dans une activité de plus petit niveau. Attention donc à les déclarer au bon endroit selon son utilisation.

Ajoutons une activité de type “SingleTask” (dans “SP – Task”) puis les activités “WriteToHistory” et “Email” (dans “SP - Utilities”) ensuite :

Workflow10

Cliquons sur “Configure” pour configurer la tâche : nous atterrissons sur un assistant qui nous permet facilement de personnaliser la tâche. Nous pouvons ainsi spécifier le nom de l’approbateur, modifier le texte de la tâche qui sera assignée ainsi que sa description et sa date d’échéance comme suit :

Workflow11

Dans les options vous pourrez déterminer si la tâche est bloquante ou non, si une (ou plusieurs) notification sera envoyée si la tâche arrive à échéance (si une date a été définie), et les options de sortie (type de contenu de la tâche, le champ contenant la valeur et son statut par défaut) :

Workflow12

Nous laissons tout par défaut. Cependant, cet assistant ne vous propose qu’une partie de la configuration. En effet, si vous accédez aux propriétés de l’activité, vous pouvez voir qu’il est possible de changer beaucoup de paramètres, comme le titre et le contenu des emails d’assignation ou de relance :

Workflow13

Il nous reste maintenant à écrire dans l’historique un petit message indiquant l’état de l’approbation, puis envoyer un mail à l’initiateur du workflow. Pour connaitre l’état de la tâche, il suffit de regarder la valeur de la variable “outcome_0” (cette variable est automatiquement créée pour chaque tâche). Si sa valeur est à 0 c’est qu’elle a été approuvée, à 1 si elle a été rejetée.

Ce qui nous donne ceci pour le message :

Workflow14

Concernant l’email en revanche, il nous manque quelque chose : l’information sur l’initiateur du workflow.

Pour cela, ajoutons l’activité “LookupWorkflowContextProperty” (dans “SP – Current Context”) au début du workflow, déclarons une variable de type string “InitiatorWf”  et utilisons la pour stocker la valeur de la propriété Initiator (j’ai pris choisi un nom de variable ne prêtant pas à confusion Clignement d'œil) :

Workflow15

L’activité “Email” demande une variable de type System.Collection.ObjectModel.Collection. Déclarons en une qui s’appellera “EmailTo” et choisissons cette fois-ci un autre type que ceux proposés directement :

Workflow16

Et en sélectionnant le bon (il est possible de faire une recherche, nettement plus simple !) :

Workflow17

Maintenant que nous avons la variable qui va bien, il faut lui ajouter la valeur récupérer depuis le contexte. Il faut pour cela utiliser l’activité “BuildCollection<T>” dans la catégorie “Collection” et la placer juste avant la tâche. Sélectionnez le type “string” :

Workflow18

Dans ses propriétés, assignez “EmailTo” en tant que résultat et dans les valeurs ajoutons notre variable InitiatorWf :

Workflow19

Il nous reste à mettre un sujet et un petit message pour l’email, définir le “TO” avec EmailTo et le workflow est terminé !

Workflow20

Etape 3 : Test du workflow

Nous pouvons maintenant tester le workflow. Vous pouvez ajouter un point d’arrêt sur la tâche et lancer le workflow en debug via F5.

Workflow22

En démarrant le workflow, nous arrivons sur le point d’arrêt :

Workflow24

Et nous pouvons inspecter les variables locales, voire faire du pas à pas :

Workflow25

 

Conclusion

Voici donc un aperçu du développement de workflow pour SharePoint 2013 à l’aide de Workflow Manager. Le plus compliqué est surtout de se faire à la déclaration et assignation des variables à utiliser, et tout spécifiquement aux variables plus complexes (tout est relatif Sourire) comme les collections. Nous verrons dans un prochain billet la manipulation d’une machine à état car les workflows séquentiels c’est bien, les machines à état, c’est mieux !

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus