22 octobre 2008

mon ami Word

Mon projet actuel utilise activement la modélisation UML pour sa conception. Nous avons donc une panoplie complète de diagrammes, et bien sur des documents au format Word à produire, respectant le formalisme maison et une structure stricte.

L'outil de modélisation UML utilisé n'ayant pas le bon goût de supporter notre format de sortie, nous sommes passé par une solution (si on peut dire) d'une simplicité impressionnante :
  • export du modèle UML en XMI (compter 30 minutes)
  • lancement d'une transformation XSL:FO pour produire les documents en RTF (compter 15 bonnes minutes)
  • utilisation d'une macro word pour la mise en forme (compter 15 bonnes minutes par document)
Des optimisations sont très probablement possibles, mais dans tous les cas c'est très long...

Comment automatiser tout ça, pour éviter de passer des heures devant son PC à attendre l'étape suivante ?

Pour la transformation XSL, j'ai crée un petit plugin maven basé sur FOP. Ce n'était pas le plus difficile

Pour le reste ... je suis tombé sur le projet JACOB, qui permet de manipuler en Java l'API COM de Windows, et donc de faire de l' "automation" d'applications sous Windows. J'ai donc réussi à :
  • lancer word,
  • ouvrir le fichier RTF,
  • copier/coller son contenu dans le document contenant les macros,
  • ... qui sont ensuite exécutées
  • et enfin sauvegarder le résultat dans le répertorie cible (ouf!).
Il faut encore que j'essaie d'utiliser le même mécanisme pour piloter l'extraction XMI, qui n'est pas "légère" elle non plus.

Comme quoi, l'automatisation de la chaîne de production n'est pas impossible (parfois juste un peu délicate). Et au final, on pourra avoir une version complète des docs en cohérence avec le modèle UML deux fois par jour.