Agile Brown Bag 22 mai: Solution de génération de document

Agile Brown Bag 22 mai: Solution de génération de document

agilebrownbag
1ère partie: Présentation d’une solution mise en place chez un client.
Nos deux consultants experts dans les solutions Microsoft .Net, Damien et Yoan, nous ont présenté la solution de génération de document Word Docx /Open XML  qu’ils ont mis en place dans une compagnie d’assurance vie.
La technique employée repose sur des modèles de document Word (templates), des sources de données XML ainsi qu’une application Microsoft .Net.
Le template Word est composé de parties statiques et de sections dynamiques qui varieront d’un document à l’autre. Ces dernières sont représentés par des “Fields”, de la même manière que dans le cas d’un document utilisant la technologie Word Mail-Merge.
Les “Fields” utilisent les champs disponibles fournis par une source de données XML en les récupérant avec une syntaxe XPath. Nous retrouvons ici le numéro du contrat d’assurance vie par exemple.
Les “Fields” offrent la possibilité d’inclure:
  • Du texte
  • Des images
  • Les parties en-tête et pied de page du document
  • Des instructions conditionnelles (If Then Else)
  • Des boucles (Foreach)
  • D’autres templates à l’intérieur du document. (Sous-templates)
Pour générer le document final, l’application va analyser les “Fields” et les remplacer par les éléments adéquats de la liste ci-dessus grâce notamment au SDK .Net OpenXML.
Cette solution à l’avantage de permettre aux utilisateurs finaux de réaliser leurs propres modèles de documents. Ils devront cependant travailler en collaboration avec l’équipe technique pour composer les parties dynamiques.
Pour leur faciliter la tâche il est possible de développer un plugin Word affichant les différents champs disponible et permettant de les glisser-déposer dans le document afin de créer les “Fields” automatiquement. Ce type de plugin a déjà été mis en place chez un autre de nos clients.
Le nombre de templates à gérer peut être très grand (environ 800 dans cette compagnie d’assurance vie). La maintenance et l’harmonisation de la mise en page dans les documents peut rapidement devenir impossible.
Pour éviter cela, une bonne stratégie est de réutiliser des parties standardisées (l’en-tête ou la signature du directeur par exemple) dans tous les templates grâce aux possibilités d’inclusion de sous-templates. Ainsi avec une bonne gestion de ces parties standardisées et réutilisées, il est assez aisé de maintenir la mise en page de tous les documents, puisque les modifications nécessaires sont limitées.
2ème partie: Echange avec d’autres consultants de l’équipe Agile Partner
La génération de documents étant une problématique récurrente chez moult de nos clients, un échange entre les membres d’Agile Partner s’est alors engagé pour établir une comparaison avec d’autres techniques utilisées.
Parmis les solutions citées on retiendra:
Les solutions utilisant un éditeur de texte de type Word pour les templates:
  • Word avec Mail-merge
  • Word Content Controls
  • Syntaxe Mustache
  • La solution décrite dans la première partie
Les générateurs de rapports WYSIWYG:
  • Microsoft Reporting Services
  • Component One
Les bibliothèques de programmation, générant les documents sans templates.
  • iTextSharp, PdfSharp
  • Aspose
Il est intéressant de remarquer que le choix de la solution à utiliser va être guidé par de nombreuses contraintes. On retiendra notamment:
  • Les personnes qui seront amener à créer et maintenir les templates (Utilisateurs “métier” / informaticiens)
  • Le type d’information présenté (document contractuel à en-tête, rapport statistique, graphiques, tableaux, etc..)
  • La nécessité de composer les documents (sous-template dans notre exemple)
  • Le nombre de tempates à gérer.
  • La nécessité ou non d’harmonisation des styles.
  • La machine qui devra généré le document (Client / Serveur)
  • Le format du document généré (docx, pdf, xps, xlsx…)
  • Les conversions possibles dans d’autres formats (HTML / Emails)
  • Les signatures électronique
Cécile Michel
No Comments

Post a Comment

Comment
Name
Email
Website