Acceleo 2.0.0 - Aperçu des nouveautés


Acceleo évolue et passe en version 2.0.0 ! Cette livraison apporte de nombreux changements mais toujours avec une vision efficace et pragmatique de l'ingénierie des modèles.

La ferme de modules

Le projet Acceleo héberge désormais un ensemble de générateurs open-source pour différentes technologies: JEE, CSharp, Php ou encore Python.


Une syntaxe améliorée

Acceleo supporte désormais directement les prédicats de sélection, sans passer par le service select(..). Les prédicats sont entourés de crochets [..] à la manière d'XPath.

Selection avec Acceleo 1
Figure :Sélection avec Acceleo 1

Selection avec Acceleo 2
Figure :Sélection avec Acceleo 2


Pour expliciter certains cas où les scripts-services-éléments du méta-modèle ont le même nom un préfix optionnel a été ajouté.

Ce dernier peut prendre les valeurs script, metamodel ou service.

Préfixe
Figure :Utilisation du préfix service


Les services système Java peuvent désormais être marqués comme "dépréciés".

Services dépréciés
Figure :Services dépréciés


Le service current peut désormais prendre des paramètres pour naviguer dans l'arbre d'exécution de la transformation . Ce cas d'utilisation très frèquent est désormais traité de manière élégante.

Utilisation de current() paramétré
Figure :Utilisation de current( une valeur)
Code généré
Figure :Code généré


Les services ont été remaniés pour une plus grande cohérence, ainsi un certain nombre d'entre eux sont désormais dépréciés :

  • cast() qui avait le même comportement que filter()
  • nPut() remplacé par put()
  • nGet() remplacé par get()
  • nPop() remplacé par pop()
  • nPeek() remplacé par peek()
  • minimize() remplacé par nMinimize()
  • sort() remplacé par nSort()
  • until()
  • sepStr()
  • select() et delete() remplacés par les prédicats [..]

De manière générale les services s'appliquant sur une liste ou une collection sont désormais tous préfixés d'un n.

La compatibilité ascendante est garantie, les services sont marqués comme dépréciés mais ne seront réellement abandonnés que dans la prochaine version majeure : Acceleo 3


Quelques nouveaux services :

  • nReverse() inverse une liste
  • adapt("..") force la conversion d'un type de base vers un type primitif d'Acceleo. Il peut prendre pour valeur "String","int","boolean","double","List","EObject","ENode" et "ENodeList".
  • nGet() peut désormais avoir 2 paramètres pour sélectionner une sous-liste

Amélioration de l'environnement d'édition

Bien qu'Acceleo ai subit de nombreux changements de fond l'expérience utilisateur n'est pas en reste, en particulier par l'ajout de raccourcis claviers:

  • F5 : rechargement du template dans l'éditeur reflectif.
  • F3 : ouverture de la déclaration d'un script dans l'éditeur de template.
  • CTRL+MAJ+C : commenter/décommenter le bloc dans l'éditeur de template.

Les temps de compilation des templates ont été largement réduits.

La complétion syntaxique est désormais insensible à la casse .

Completion insensible à la casse
Figure :Completion insensible à la casse

Compatibilité XML

Via le composant XSD Acceleo peut directement exploiter les fichiers XML et générer du texte comme avec n'importe quel modèle.

Génération depuis un fichier XML
Figure :Génération depuis un fichier XML

Évolution des fichiers de lancement

Les fichiers .chain qui permettent le paramétrage et le lancement des générations ont évolués pour offrir de nouvelles possibilités.

Évolutions du fichier .chain
Figure :Évolutions du fichier .chain

Plus particulièrement :

  • La possibilité de spécifier un ensemble de modèles via l'entité ModelSet. Ceci est particulièrement utile lorsque l'on souhaite générer du texte depuis un grand nombre de fichiers XML
  • Un nouvel attribut chainPath dans l'appel d'une sous-chaîne. Ainsi la chaîne appelée peut se trouver indifférement dans le workspace ou dans l'environnement en tant que plugin
  • La possibilité de définir des actions personnalisées appelées pendant le processus de génération (par exemple compresser un ensemble de fichiers, lancer un déploiement...)
  • Un nouveau type de fichier CustomFile permettant de paramétrer les CustomActions

Export en tant que plugin

Les modules de génération Acceleo peuvent désormais être déployés sous la forme de Plug-in Eclipse. Ainsi il est possible de gérer les dépendances des modules et leur mise à jour de la même façon que pour les Plug-in.

Export d'un générateur en tant que plugin
Figure :Il est désormais possible d'exporter un générateur en tant que Plug-in Eclipse

Appel d'un .chain se trouvant dans un plugin
Figure :Appel d'un .chain se trouvant dans un plugin

Moyennant un léger paramétrage Acceleo peut désormais initialiser un projet de génération dédié à une technologie.

Sélection d'un module de génération
Figure :Sélection d'un module de génération

Paramétrage du module de génération
Figure :Paramétrage du module de génération

Améliorations diverses

Un travail important a été effectué sur les performances permettant d'accelérer le processus de génération d'au moins 30%.

Acceleo 2.0.0 corrige un certain nombre d'anomalies et répond à certaines demandes de fonctionnalités, notamment :

306665Exception with "Resource /hometu does not exist." occurs when convert ArgoUML / UML 1.415/02/2007
306841Unable to acces uml13 multiplicities ranges 27/03/2007
306780sort doesn't minimize its output14/03/2007
306572Generation stops when two resource have the same name with a different case17/01/2007
306607problems with imports and script included into a select29/01/2007
306821Problem of slowness in the templates compilation22/03/2007
306568problems with Acceleo 1.2 and Java 1.415/01/2007
306700ClassCastException with the ENode class23/02/2007
306720Reflective editor on Ecore model require a .genmodel file01/03/2007
306710Java services don't work with List as owner28/02/2007
306571UML 1.4 : problem accessing the parent of a Generalization17/01/2007
306883Build as plugin 03/04/2007
306884XML/XSD minimal compatibility 03/04/2007
306885Completion and compilation with 'select' service 03/04/2007
306596EMF conversion ignores special characters25/01/2007