Bonjour à tous.
Voici une petite page genre didacticiel, mais c'est un bien grand mot pour une astuce que je n'ai pas validée en grand (vous pouvez m'aider à le faire ) et je n'ai pas vu de rubrique didacticiel Infopath sur ce site. Donc je la pose ici.


Gestion de rôles avec IPH forms services.
  • Rappel sur les rôles :
Une des fonctions natives d’InfoPath est l’attribution de rôles à des personnes ou groupes.
Le rôle n’est pas une structure organisationnelle générale, comme un groupe AD ou SharePoint, mais une dimension fonctionnelle limitée au modèle. Une fois le rôle attribué, l’utilisateur peut bénéficier de fonctionnalités supplémentaires, qui sont construites par les règles, masquages, changement de vues, et tout traitement particulier puisqu’il suffit de tester si l’utilisateur actif possède ce rôle ou non.
Les rôles sont attribués soit de façon statique à un groupe AD, soit dynamiquement à des individus référencés par le créateur du document, et stocké dans un champ :

exemple : je remplis ma demande de congés, je saisis dans le champ ResponsableHierarchique le nom de mon chef, ou de son remplaçant, et à l’étape suivante seule la personne définie dans ce champ aura le rôle Approbateur permettant d’accéder à la vue ou à la section Approbation.

On peut avoir plusieurs rôles à la fois (Rôle Approbateur + Rôle Ressources Humaines). On peut obtenir un rôle dans le même formulaire par appartenance statique à un groupe ou par décision dynamique, selon l’analyse fonctionnelle.

  • Simuler la gestion de rôles avec IPH forms services.

Les rôles sont très utiles pour les workflows (Lotus Notes exploite ça depuis dix ans, pour le bonheur de ses développeurs), mais InfoPath forms services ne sait pas le gérer. Voici une méthode pour gérer les rôles définis en statiques (groupes permanents) avec SharePoint.

Dans Sharepoint :
• Faire une liste SharePoint pour chaque modèle de formulaire,
- masquée dans le navigateur
- désactiver l’héritage des droits ; par défaut : accès seulement au groupe admin
• créer une ligne par rôle
- colonne titre (title) = nom du rôle
- désactiver l’héritage des droits ; accès lecture au groupe qui possède ce rôle

Dans Infopath :
• Ajouter une connexion de données réception sur la liste, nommée Roles_Shp
• Test d’un rôle spécifique dans une formule = (Insérer un champ > Connexion secondaire Roles_Shp > Groupe DataFields > Champ = Title) ;
- formule exemple : Title = "Directeur Prod"
- utiliser le Egal pour tester sur toutes les occurrences, ne pas utiliser Contient qui ne marche que sur la première.
Exploitation : par exemple pour un masquage, ou un changement de vue à l’ouverture
- Si Roles_Shp = {le rôle cherché}

Un utilisateur a ou n’a pas le rôle, mais il peut en avoir plusieurs, comme dans les rôles d’InfoPath Filler.

Déploiement : Si on veut gérer des rôles spécifiques par modèle, il faudrait gérer une liste SharePoint distincte par modèle… Pour alléger, on peut soit essayer de regrouper des rôles un peu généraux (DEViph, Admin, Compta, PDG …) soit nommer les rôles avec un préfixe par modèle DemConges_Approbateurs. Du coup on peut mettre ça dans une bib de connexion de données.
Plus lourd que la gestion des rôles standard, c’est imparfait, ça ne règle pas le besoin de rôle dynamique qui doit être traité autrement, mais ça peut servir de base à d’autres approches. .