Aujourd'hui un post sur un problème récurrent rencontré par les utilisateurs d'InfoPath et plus généralement InfoPath Forms Services : La gestion des pièces jointes.
Nativement, les pièces jointes téléchargées via le formulaire sont stockées dans le XML de l'instance.
Cela implique généralement une quadruple problématique pour les utilisateurs :
- Le formulaire est alourdi par cette pièce jointe encodée dans le XML,
- Le temps de chargement du formulaire est grandement dégradé,
- La gestion de la sécurité du document (droit de modification, lecture ou confidentiel) ne peut pas être décorrélée de celle du formulaire,
- Les pièces jointes insérées dans le formulaire ne sont pas indexées via le moteur de recherche.
Note : Les formulaires de "liste" modifiés via InfoPath ne sont pas concernés par le sujet car ils héritent du fonctionnement natif des listes SharePoint.
En tant que solution de contournement à ces problématiques, je conseille généralement (lorsque le besoin s'y prête) de réaliser un peu de code managé permettant de changer légèrement le fonctionnement du contrôle.
Le fonctionnement devient ainsi le suivant:
- La pièce jointe est téléchargée dans le formulaire,
- L'évènement "Changed" est déclenché dans le code managé dès l'ajout du fichier dans le contrôle,
- Le code associé à cet évènement dépose la pièce jointe dans une bibliothèque de document SharePoint (possibilité de stocker dans un fichier dédié, nettoyage du nom de fichier, gestion des autorisations,...),
- Alimentation d'une section extensible pour afficher la liste des fichiers associés à l'intérieur du formulaire,
- Suppression du fichier dans le contrôle de pièce jointe du formulaire.
Voici le rendu:
Nous pouvons voir que :
- Le contrôle des pièces jointes reste vide. Le données ne sont pas stockées dans l'instance de formulaire elle-même => Optimisation du temps d'ouverture et de traitement,
- Les fichiers sont ajoutés dans une bibliothèque SharePoint (ce qui permet de les regrouper, gérer leur sécurité, les rendre indexable,...) => Plus grande flexibilité sur les règles de gestion métier,
- La suppression de fichiers depuis le formulaire via le petit bouton rouge (nécessitant quelques lignes de code managé sur le clic du bouton) est aussi prévue.
N'hésitez pas à me contacter si besoin.