1. Fonctionnalités apportées par le composant « SharePoint Designer Custom Workflow Activities »

Le composant dont l'article a pour objet est disponible sous CodePlex ( http://www.codeplex.com ).


Les « nouveautés » mises en œuvre dans le composant sélectionné sont les suivantes :

  • envoi d'un e-mail avec pièce jointe;
  • envoi d'un e-mail avec les informations d'un item comme pièce jointe;
  • démarrer un Workflow (dit secondaire) sur une autre liste;
  • permettre la gestion des permissions sur les éléments;
  • suppression des permissions sur les éléments pour un utilisateur donné;
  • suppression de toutes les permissions assignées à un item;
  • contrôle l'appartenance d'un utilisateur à un groupe SharePoint;
  • contrôle si un utilisateur a des droits sur l'item en cours;
  • permettre d'aller récupérer des informations d'un utilisateur;
  • copie d'un item d'une liste vers une liste en dehors du site courant.

2. Installation du composant

2-A. Récupération du composant

Le composant se trouve dans une solution prête à être déployée sur la plateforme SharePoint à l'adresse suivante : http://www.codeplex.com/SPDActivities.


Le fichier à télécharger est : UsefulSPDWorkflowActivities_0.5.0.zip (version fin 2009).

image


Sélectionner « download Now » pour télécharger le composant.

2-B. Extraction du fichier téléchargé

Capture-20-


Le fichier compressé contient :

  • le fichier de solution de déploiement : DP.Sharepoint.Workflow.wsp;
  • un fichier texte d'installation, accompagné des commentaires de release;
  • le fichier d'installation (déploiement de la solution sur la ferme).

2-C. Déploiement de la solution

Lancer le fichier setup.exe :

Capt-1728021


Exécuter le programme, puis sélectionner « Next ».

L'installation contrôle ensuite l'ensemble de la configuration de la plateforme :

Capt-1728023


Une fois ce contrôle effectué, l'installation se propose de déployer le composant sur l'ensemble de la ferme, à savoir sur les « applications Web » [Web App] désirées, y compris sur la Web App dédiée à la console d'administration (décocher celle-ci, afin de ne pas l'altérer).


Lancer ensuite le déploiement sur la plateforme SharePoint :

Capt-1728025
Capt-1728026


Enfin, l'installation résume le déploiement du composant sur l'ensemble des « Applications Web » préalablement sélectionnées :

Capt-1728027

2-D. Activation de la solution

À partir de la console d'administration, vous devez activer la solution « Useful SharePoint Designer Activities 0.5.0 Alpha » sur l'application Web de votre choix :

  • Aller dans la console d'administration :
Capt-1734218
  • Aller dans « Gestion des applications » (ou « Application Management » pour une version US).
  • Dans la rubrique « gestion des applications Web SharePoint », sélectionner « Gérer les fonctionnalités des applications Web » (ou, pour une version US : « Manage Web Application Features ») :
Capt-17342210
  • Sélectionner l'application Web désirée à partir de laquelle vous voulez activer la fonctionnalité :
Capture-202
Capt-17401012
  • Et enfin, activer la fonctionnalité : «  Useful SharePoint Designer Activities 0.5.0 Alpha  » :
Copie de Capt-1734219

2-E. Commentaire d'environnement de plateforme

Dans le cas où la plateforme est sur une installation non US, vous aurez à dupliquer le fichier «  DPWorkflow.ACTIONS ».


À partir du répertoire « 12 » (Pour une installation SharePoint « standard » : [C:\Program Files\Fichiers communs\Microsoft Shared\web server extensions\12]

.\12\TEMPLATE\1033\Workflow

vers

.\12\TEMPLATE\1036\Workflow [1036], selon votre LCID


Enfin, un iisreset ( recycle de pool ) est ensuite nécessaire.

2-F. Lancement de SharePoint Designer 2007

Une fois toutes ces étapes effectuées :

  • Lancer SPD 2007 en ouvrant un site appartenant à la Web App où a été activée la fonctionnalité.
  • Lancer la création d'un nouveau flux de travail.
  • L'ensemble des nouvelles fonctionnalités apparaît, sur la sélection de « toutes les actions » :
Capture-203

3. Utilisation des fonctionnalités du composant « SPD Custom Workflow Activities »

Nous allons maintenant mettre en oeuvre chacune des nouvelles fonctionnalités proposées par le composant et détailler chacun des paramètres qui y sont liés.

3-A. Envoi d'un e-mail avec pièce jointe

Cette fonctionnalité permet de transmettre par mail une pièce jointe à partir de son URL. En plus des options de base de l'envoi du mail, ce dernier apporte quelques évolutions, décrites ci-dessous.


Sélectionner l'action « Send Email with http file attachment » :

Capt-1210244


La nouvelle activité apparaît comme suit :

Capt-1210255
Capt-1210256

Les options disponibles avec cette fonctionnalité sont les suivantes :

  • Qualifier la priorité du message : urgent, ou pas.
  • Sélectionner la pièce jointe (vue comme une URL, c'est-à-dire le chemin d'accès à un document dans un espace documentaire, pouvant être filtrée selon une information de l'élément en cours).
  • Définir l'adresse de l'expéditeur (évitant ainsi la configuration de base du genre SharePointAdmin@MaSociete.com ).
  • Rendre impersonnel l'accès au fichier.

Rappel : les workflows écrits avec SPD s'exécutent dans le contexte de l'utilisateur qui l'a initié. Rendre impersonnel le compte permet donc de s'affranchir de cette forte contrainte (utilisation d'un compte système ou assimilé), notamment pour l'accès au fichier lié.

3-B. Envoi d'un e-mail avec les informations d'un item comme pièce jointe

Cette fonctionnalité permet de transmettre par mail, en pièce jointe des éléments d'une liste.


Sélectionner l'action « Send Email with http file attachment » :

Capture-207


La nouvelle activité apparaît comme suit :

Capt-1413188
Capt-1413189

L'option disponible avec cette fonctionnalité, en plus des options complémentaires vues pour l'envoi de fichiers, est la suivante :

  • Sélection d'un item : soit l'item courant, soit à un élément lié (rechercher la fiche cliente pour le client associé à l'item en cours)

3-C. Démarrer un Workflow sur une autre liste

Cette fonctionnalité permet de démarrer un Workflow (dit secondaire) existant sur une liste du site courant. Très utile donc sur des workflows que l'on peut mettre en œuvre et donc lancer directement (sans être contraint d'un démarrage sous un événement de création ou de modification d'un élément).


Sélectionner l'action « Start Another Workflow » :

Capt-1146181


La nouvelle activité apparaît comme suit :

J:\Work\SPD - Custom Workflow\end-screen\Capt-1433441.jpg


Les actions à mener sont les suivantes :

  • Sélection de la liste SharePoint où se trouve le workflow.
  • Saisie du nom du Workflow (attention, si le nom du Workflow est modifié, la mise à jour n'est pas répercutée). Sachant qu'un workflow génère un nom de colonne associé, il est possible d'aller sélectionner le « nom de la colonne » dans la liste des propriétés de la liste sélectionnée.

Note : le Workflow secondaire se déclenche avec les « droits » de l'utilisateur courant. Ses accès sur la liste où se déclenche le 2nd Workflow doivent aussi être pris en compte.

3-D. Gestion des permissions sur les éléments

Cette fonctionnalité permet de modifier la permission sur l'item courant pour un utilisateur.

Attention : cette action peut « casser » l'héritage des accès sur la liste.


Sélectionner l'action « Grant permission on Item » :

Capt-1146182


La nouvelle activité apparaît comme suit :

J:\Work\SPD - Custom Workflow\end-screen\Capt-1433445.jpg


Les autorisations possibles sont :

  • Contrôle total [Full Control].
  • Conception [Design].
  • Contribution [Contribute].
  • Lecture [Read].


Elles sont à saisir 'textuellement'.

L'assignation s'effectue ensuite sur un élément (item) pour un utilisateur donné.

3-E. Suppression des permissions sur les éléments

Cette fonctionnalité propose, à l'inverse de précédemment, de supprimer les accès à l'item courant pour un utilisateur.

Note : comme précédemment, cette action peut « casser » l'héritage des accès sur la liste.


Sélectionner l'action « Delete List Item permission assigment» :

Capt-1146183


La nouvelle activité apparaît comme suit :

J:\Work\SPD - Custom Workflow\end-screen\Capt-1433446.jpg


La suppression des droits se fait donc :

  • Sur un élément (item courant).
  • Pour un utilisateur donné.

3-F. Suppression de toutes permissions uniques assignées

Cette fonctionnalité annule toutes les mises à jour « manuelles » qui auraient pu être effectuées sur un ou des items par rapport aux droits de base de la liste.

L'item hérite donc (de nouveau, si les mises à jour ont été effectuées par le Workflow) de ses droits d'origine (l'héritage des droits de la liste est ici rétabli).


Sélectionner l'action « Reset List Permission inheritance» :

Capt-1146184


La nouvelle activité apparaît comme suit :

J:\Work\SPD - Custom Workflow\end-screen\Capt-1433447.jpg


Sélectionner la liste où l'héritage doit, à nouveau, être rétabli.

3-G. Contrôle l'appartenance d'un utilisateur à un groupe SharePoint

Cette fonctionnalité permet avant de lancer une action de valider qu'un utilisateur appartient à un groupe SharePoint.


Sélectionner la condition « Is user a member of a SharePoint group » :

Capt-1146188


La nouvelle condition apparaît comme suit :

J:\Work\SPD - Custom Workflow\end-screen\Capt-14334410.jpg


La condition s'effectue en sélectionnant :

  • Un utilisateur.
  • Un groupe de sécurité SharePoint.

3-H. Contrôle si un utilisateur a des droits sur l'item en cours

Cette fonctionnalité permet, avant de lancer une action, de valider quels sont les accès sur l'item courant pour un utilisateur.


Sélectionner la condition « Is role assigned to user » :

Capt-1146187

Seuls les droits de base pour l'utilisateur sont testés, à savoir :

  • control total [Full Control]
  • Conception [Design]
  • Contribution [Contribute]
  • Lecture [Read]


Sont donc exclus les « profils » créés spécifiquement pour un site donné.


La nouvelle condition apparaît comme suit :

J:\Work\SPD - Custom Workflow\end-screen\Capt-1433449.jpg


La condition s'effectue sur :

  • Un rôle, à saisir (textuellement).
  • Un utilisateur donné.

3-I. Permettre d'aller récupérer des informations d'un utilisateur

Cette fonctionnalité permet d'aller charger une information relative à un utilisateur. Elle peut être très utile dans le cas d'un routage de workflow selon un département, un pays...lié à l'utilisateur.


Sélectionner l'action « Lookup iste user property» :

Capt-1146185


La nouvelle activité apparaît comme suit :

J:\Work\SPD - Custom Workflow\end-screen\Capt-14334411.jpg


La recherche s'effectue à partir d'un utilisateur et d'une de ses « propriétés » (saisie texte). La valeur trouvée est stockée dans la variable définie.


Pour information, cette fonctionnalité ne s'appuie pas sur « UserProfileManager », mais sur l'objet « SiteUserInfoList » (ce qui signifie que les champs autorisés sont différents que ceux du « UserProfile ».


Il sera possible par exemple possible d'utiliser (propriétés les plus courantes) :

  • Name (compte utilisateur)
  • Work e-mail.
  • Department.
  • Title.
  • First name.
  • Last name.
  • Responsibilities.
  • Etc...

3-J. Copie d'un item d'une liste vers une liste en dehors du site courant

Cette fonctionnalité permet de dupliquer un item vers un site qui peut appartenir à une collection de sites. La saisie dans ce contexte se fera par l'intermédiaire de la saisie « libre » de l'URL de la liste cible. C'est LA fonctionnalité qui manque le plus aujourd'hui à SharePoint Designer...


Sélectionner l'action « copy list item extended » :

Capt-1146189


La nouvelle activité apparaît comme suit :

J:\Work\SPD - Custom Workflow\end-screen\Capt-14334413.jpg


Il est possible de Copier/Déplacer un élément ou une liste :

J:\Work\SPD - Custom Workflow\end-screen\Capt-14334415 - Copie.jpg


Les options disponibles sont décrites dans le tableau ci-dessous :

Fonctionnalité Feature Eléments de liste Fichiers
Copie/Déplacement en remplaçant l'élément (cible) existant Overwrite Item on Destination   X
Définir le répertoire cible Specify Destination Subfolders   X
Copie/Déplacement des propriétés d'un fichier Copy/Move File Attributes   X
Copie/Déplacement de l'historique d'un élément Copy/Move Item History   X
Copie/Déplacement d'une pièce jointe d'un élément Copy/Move Item Attachments X  
Copie/Déplacement d'un élément à travers la ferme Copy/Move Item Cross Site X X
Copie/Déplacement d'un élément à travers la ferme avec les propriétés de l'utilisateur Copy/Move Item with Person Fields Cross Site X X


Attention : cette action peut présenter un risque potentiel de sécurité. En effet, l'action de « copy » s'effectue dans un contexte d'administration. S'exécutant sous le compte SharePoint\system, l'action peut donc copier des éléments du site source vers n'importe quel autre site de la ferme.

3-K. Synthèse

Dans cet article, nous avons donc retenu un composant « incontournable » de CodePlex pour qui veut utiliser SharePoint Designer, sans pour autant effectuer un développement spécifique.


Ce composant reste un composant « externe » et doit être validé sur une plateforme de pré-production avant tout installation en production. La pré-production doit être identique en tout point avec la production (versions OS, SharePoint et Service packs) avant tout déploiement de workflow customisé.

Remerciements : J'adresse ici tous mes remerciements à Paul Kotlyar, coordinateur du composant CodePlex, à l'équipe de rédaction de "developpez.com" pour le temps qu'ils ont bien voulu passer à la correction et à l'amélioration de cet article (en détails: furr, jacques jean, La Zélie, et une dédicace toute particulière à Caro-Line...)