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).
Sélectionner « download Now » pour télécharger le composant.
2-B. Extraction du fichier téléchargé▲
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 :
Exécuter le programme, puis sélectionner « Next ».
L'installation contrôle ensuite l'ensemble de la configuration de la plateforme :
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 :
Enfin, l'installation résume le déploiement du composant sur l'ensemble des
« Applications Web » préalablement sélectionnées :
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 :
- 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 ») :
- Sélectionner l'application Web désirée à partir de laquelle vous voulez activer la fonctionnalité :
- Et enfin, activer la fonctionnalité : « Useful SharePoint Designer Activities 0.5.0 Alpha » :
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 » :
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 » :
La nouvelle activité apparaît comme suit :
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 ).
- 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 » :
La nouvelle activité apparaît comme suit :
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 » :
La nouvelle activité apparaît comme suit :
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 » :
La nouvelle activité apparaît comme suit :
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» :
La nouvelle activité apparaît comme suit :
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» :
La nouvelle activité apparaît comme suit :
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 » :
La nouvelle condition apparaît comme suit :
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 » :
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 :
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» :
La nouvelle activité apparaît comme suit :
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 » :
La nouvelle activité apparaît comme suit :
Il est possible de Copier/Déplacer un élément ou une liste :
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...) |