Je vous propose de partir d'un modèle simplifié de gestion commerciale d'une entreprise comprenant en particulier les classes Commande
, Facture
, Article
, Contact
, Adresse
, et Utilisateur
.
Ces classes sont réparties dans 4 paquetages différents : Client
, Contrat
, Catalogue
et Sécurité
, correspondant chacun à un domaine métier ou technique particulier.
Ils sont eux-mêmes regroupés dans un paquetage parent nommé Modèle par domaine
(voir écran 1).
Les classes sont reliées entre-elles par des relations 1 - *
ou * - *
et sont de type association, agrégation, composition et d'héritage.
Le modèle de classes techniques PSM obtenu après transformation MDA est quant à lui généré dans le paquetage Modèle du système
.
Le fichier de l'exemple est téléchargeable en cliquant sur ce lien : exemple-mda.zip
Les classes d'un modèle doivent être préalablement sélectionnées pour être transformées.
Cette sélection est réalisée directement sur les classes contenues dans un diagramme de classes ou bien par l'intermédiaire du paquetage qui les contient.
Je souhaite dans mon cas transformer en une seule fois toutes les classes que j'ai modélisées.
Modèle par domaineregroupant toutes les classes évoquées précédemment.
Project | Transformations | Transform Current Package...
ou en passant par le raccourci clavier Ctrl + Maj + H
.
Java
dans la liste Transformations comme langage cible de la transformation et je renseigne le paquetage Modèle du systèmecomme paquetage cible (Target package à l'écran 2) destinataire des classes transformées.
Do Tranform
.Sachez qu'il est possible de produire un fichier intermédiaire contenant le code utilisé pour générer le modèle PSM. Son contenu présente un grand intérêt, à la fois pour comprendre la logique de transformation de chaque template mis en jeu, et pour les déboguer une fois personnalisés (voir le paragraphe Les templates de transformation).
Une fois la transformation terminée, la fenêtre Model Transformation se referme et l'on peut constater qu'un paquetage nommé Java Model
a été créé sous le paquetage cible Modèle du système
, dont j'avais précisé le nom pour le langage Java.
Sous Java Model, l'arborescence complète du paquetage Modèle par domaine
a été recréée et les classes Java générées par le processus de transformation .
Il n'est pas très élégant d'avoir le paquetage Modèle par domaine
sous Java Model. Les paquetages de chaque domaine peuvent être créés directement sous Java Model
en définissant le paquetage Modèle par domaine
comme espace de noms racine (voir la procédure dans la Foire aux Questions EA).
A ce stade, la transformation du modèle métier PIM en modèle de classes Java intermédiaire PSM a consisté dans les grandes lignes à :
Les résultats obtenus après transformation sont commentés en détail au chapitre suivant intitulé Résultats obtenus passés au crible.
La génération du code Java s'effectue soit de manière globale en sélectionnant le paquetage contenant les classes Java, ou bien de manière unitaire en sélectionnant la classe Java pour laquelle le code est à générer.
Pour l'exemple courant, je retiendrai la première solution afin de générer en une seule fois le code Java de toutes les classes de mon modèle.
Je procède pour cela de la façon suivante :
Java Modeldepuis la fenêtre Project Browser
Project | Source Code Engineering | Generate Package Source Code...
(le raccourci clavier équivalent est Ctrl + Alt + K
),
Java Model,
...
à droite du champ Root Directory.Generate
: la fenêtre Batch generation s'ouvre et affiche les actions réalisées pour chaque Classe. La génération est terminée après affichage du message Generation complete!.
Vous pouvez dès à présent constater que EA a créé pour vous, dans le dossier windows renseigné pour la génération, le sous-dossier Modèle par domaine
, contenant lui-même 4 sous-dossiers reprenant le nom des packages Catalogue
, Client
, Contrat
et Securite
.
Chacun d'eux contient les fichiers d'extension .java
de chacune des classes de notre modèle PSM ayant servi de modèle de référence pour la génération du code.
Pour être complet dans cette rubrique, sachez que lors de la génération de code pour une seule classe, en la sélectionnant depuis un diagramme de classe et en sélectionnant Generate Code...
dans le menu contextuel (raccourci clavier F11
), il est possible de spécifier une liste de classes à importer en renseignant les champs Import(s) / Header(s)
de la fenêtre Generate Code. Cette possibilité d'import de classes n'est possible que lors de la génération de code d'une seule classe.
Il est temps à présent de découvrir plus en détails le résultat obtenu au chapitre suivant Résultats obtenus passés au crible.