IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

MDA par la pratique


précédentsommairesuivant

II. Présentation de l'application d'exemple et installation de l'environnement

II-A. L'application d'exemple : TimeTracker

Choisir un système de timetracking comme exemple est un peu délicat, parce que c'est une notion assez culturelle. Les pratiques de gestion des ressources humaines en termes de travail varient énormément en fonction des professions, des cultures d'entreprises et des pays. Pointeuse logicielle, TimeSheet, Timecard, ou parfois même pas de surveillance du tout. Alors pour ceux qui ne seraient pas familiers de ce concept, sachez qu'il est assez fréquent dans les métiers du développement logiciel (entre autres), les horaires de travail n'étant pas fixes, que les entreprises tiennent un décompte des heures de leurs employés. L'application d'exemple de ce tutoriel utilise justement le concept de fiche horaire hebdomadaire, l'employé remplissant chaque semaine une fiche qui indique de quelle heure à quelle heure il a travaillé et sur quelle(s) tâche(s). Moi-même, en tant que consultant, je dois remplir une timesheet papier (avec seulement un décompte des jours travaillés par client) tous les mois pour ma société, et une fiche horaire mensuelle pour mon client grâce à un logiciel interne. Tout ça pour vous dire que même si ça peut ne rien vous évoquer, c'est un exemple très concret. Et peut-être qu'un jour, la société qui vous emploie sera rachetée par un grand groupe américain qui décidera de mettre en place un tel système, et que vous pourrez alors brandir fièrement votre première application construite avec MDA :oP

La société « Tartempion SA » utilise un système papier pour la gestion du temps de travail de ses employés. Ce procédé est complètement inefficace et par conséquent, votre supérieur vous a demandé de créer un système de gestion du temps en ligne appelé TimeTracker. Malheureusement, il veut que le système lui soit livré avant la semaine prochaine et si vous ne pouvez pas remplir cet objectif, il confiera cette tâche à quelqu'un d'autre. Tout d'un coup vous vous souvenez d'une conversation avec un ami qui ne tarissait pas d'éloges à propos de cet outil, AndroMDA, capable de générer des parties importantes d'une application à partir des spécifications fonctionnelles. Alors là vous vous dites « Si c'est vrai, cela devrait m'aider à atteindre mes objectifs. Allez, faisons un essai avec AndroMDA. » Alors vous acceptez l'offre de votre directeur et vous mettez au travail.

Votre première étape consiste à rencontrer la directrice des ressources humaines. Vous lui demandez de vous décrire le procédé de gestion du temps actuel, et elle vous dit ceci :

« Au début de chaque semaine, chaque employé prend une nouvelle fiche dans la salle des fournitures. Comme ils travaillent sur des tâches différentes, ils marquent leurs heures de début et de fin de travail sur cette fiche. Chaque tâche est munie d'un identifiant unique répertorié dans le manuel de l'employé. À la fin de la semaine, les gens soumettent leur fiche à leur supérieur pour vérification et approbation. Un directeur peut soit approuver, soit rejeter la fiche. S’il choisit de la rejeter, il doit laisser un commentaire sur la fiche indiquant la raison de ce rejet. L'employé qui a soumis la fiche en question doit alors apporter les corrections nécessaires et la soumettre à nouveau. »

Vous demandez alors poliment à la directrice qu'elle vous fournisse une copie d'une fiche typique, et voici ce qu'elle vous remet :

Copie d'une fiche de pointage typique
Copie d'une fiche de pointage typique

Oui, je sais, là aussi ça fait un choc : travailler la nuit et enchaîner 19h avec simplement une pause d'une heure après 15 heures de travail acharné… ça fait réfléchir. J'ai pourtant recopié exactement la fiche du document original. Rappelons pour l'anecdote que le 20 janvier 2006 était un vendredi et que le sieur John Smith/Alain Durand aura eu une fin de projet mouvementée. Ce qui fait peur, c'est que vous avez demandé à votre DRH une « fiche typique »…

Armé de cette connaissance, vous avez hâte de vous atteler à la tâche alors vous vous précipitez à votre bureau : il est temps maintenant d'installer l'environnement de développement nécessaire.

II-B. Préparation de l'environnement de développement

Avant de pouvoir commencer à développer avec AndroMDA, il va vous falloir installer votre environnement de développement en suivant les instructions ci-dessous. Nous partons du principe que vous travaillez sur une plateforme Windows.

Si ce n'est pas le cas, les auteurs ont sans doute estimé qu'en tant qu'utilisateur de Linux, de MacOSX ou d'un autre système encore plus exotique, vous disposiez des connaissances suffisantes pour adapter ces instructions à votre environnement. Pour ma part, travaillant sur Windows principalement, ma connaissance des autres systèmes est relativement limitée. Néanmoins j'essaierai de vous donner des indications complémentaires lorsque je l'estimerai utile et que ça reste dans mes compétences.

II-B-1. Installation de Java

Téléchargez et installer le JDK 5.0 depuis cette adresse: http://java.sun.com/j2se/1.5.0/download.jsp. Il s'agit de la version recommandée, mais AndroMDA supporte également le JDK 1.4. Si vous préférez cette version, vous pouvez la télécharger à cette adresse: http://java.sun.com/j2se/1.4.2/download.html

Si vous n'avez aucune raison particulière pour vous limiter à la version 1.4 du JDK, je vous recommande vivement de vous lancer avec la version 5.0. Néanmoins, considérez bien l'ensemble de votre infrastructure de développement et posez-vous notamment les questions suivantes: est-ce que l'outil de modélisation que je compte utiliser est compatible avec le JDK5 (sachant que la plupart de ces outils sont eux-mêmes programmés en Java)? Est-ce que le serveur d'applications sur lequel vous comptez déployer votre application s'exécute sur une machine virtuelle Java 5 (qu'il s'agisse de JBoss, ou alors de Tomcat, sachant que Tomcat 5.5 par exemple est prévu pour Java 5 mais nécessite un plugin pour s'exécuter sur le JDK 1.4) ? Bien sûr, il est toujours possible de configurer tous ces outils pour s'accommoder des différentes versions, mais par expérience, il est préférable de choisir la configuration optimale pour assurer une bonne stabilité.

Une fois le JDK installé, assurez-vous que la variable d'environnement JAVA_HOME pointe bien vers le répertoire racine de votre installation du JDK. Il est possible que cette variable ait déjà été initialisée lors de l'installation du JDK. Mais voici comment vous assurer qu'elle l'est correctement :

  1. Rendez-vous dans le panneau de configuration et cliquez sur l'icône « Système ». Si vous utilisez Windows XP il est possible que vous ayez à cliquer sur l'icône « Performance et maintenance » avant de voir l'icône Système ;
  2. Cliquez sur l'onglet « Avancé » et cliquez sur le bouton « Variables d'environnement » ;
  3. Assurez-vous que la variable apparait bien dans la section « Variables utilisateur pour… » et qu'elle pointe bien vers le répertoire racine du JDK. Sinon, ajoutez ou modifiez la variable pour lui donner la bonne valeur. Par défaut, le JDK est installé dans « C:\Program Files\Java\jdk1.5.0 ». Vous pouvez ajouter la variable soit à la section utilisateur, soit aux variables système.

Par défaut MacOSX Tiger 10.4.X est livré avec la version 1.4.2 du JDK, mais le JDK 5 est disponible en téléchargement manuel à l'adresse suivante: http://www.apple.com/support/downloads/java2se50release3.html . Pour plus de détails concernant Java sur MacOSX, voici une adresse utile: http://developer.apple.com/java/ . Pour ce qui est de l'environnement Linux, il y a un guide d'installation complet à cette adresse: http://java.sun.com/j2se/1.5.0/install-linux.html . L'affectation de la variable d'environnement JAVA_HOME est semble-t-il spécifique à votre distribution et au shell que vous utilisez. Je vous laisse requérir à vous sources d'informations habituelles pour trouver cette information.

II-B-2. Installation de Maven

Maven est un outil de gestion et d'intégration de projets logiciels. Il s'appuie sur le concept de modèle objet de projet (POM) pour gérer la construction, les rapports et la documentation d'un projet à partir d'une source d'informations unique. Nous allons maintenant installer Maven et le configurer pour télécharger les dépendances depuis le serveur d'AndroMDA quand le moment sera venu.

Maven ( http://maven.apache.org/ ) traverse actuellement une période de transition très importante: la version 1.0.2 est la dernière version stable de Maven 1, qui a depuis été complètement réécrit pour donner naissance à Maven 2. Le problème, c'est que Maven 2 comporte des changements tellement importants (pour le meilleur, croyez-moi) qu'il n'est pas compatible avec les versions précédentes. En particulier, les plugins développés pour Maven 1 ne sont plus compatibles avec Maven 2 et doivent eux aussi être adaptés, voire réécrits. C'est notamment le cas des plugins AndroMDA pour Maven qui sont en cours d'adaptation pour Maven 2, et qui devraient être disponibles dans la version 3.2 d'AndroMDA. Dès que ce sera le cas, j'essaierai de mettre ce tutoriel à jour.

  1. Téléchargez Maven 1.0.2 depuis ce site: http://maven.apache.org/maven-1.x/start/download.html. Notez bien que les versions ultérieures de Maven ne sont pas encore supportées par AndroMDA.
  2. Installez la librairie téléchargée. Nous supposerons que vous l'avez installée dans « C:/Program Files/Apache Software Foundation/Maven 1.0.2 ».
  3. Si l'assistant d'installation se plaint que la variable d'environnement JAVA_HOME n'existe pas, alors assurez-vous que vous l'avez correctement initialisée.

Sur les machines Linux, ainsi que très vraisemblablement sur le système MacOSX, l'installation de Maven implique 3 étapes: d'abord il vous faudra extraire l'archive téléchargée dans le dossier d'installation de votre choix. Ensuite vous devrez initialiser la variable d'environnement MAVEN_HOME et la faire pointer sur ce dossier. Enfin, il vous faudra créer le référentiel local en exécutant la commande suivante: $MAVEN_HOME/bin/install_repo.sh $HOME/.maven/repository. Pour vérifier que l'installation de Maven fonctionne correctement, il vous suffit d'exécuter la commande suivante: maven -v

II-B-3. Bilan des variables d'environnement

À l'issue de l'installation de Java et de Maven, voici les variables d'environnement qui doivent être initialisées:

Propriété

Valeur

Requise?

JAVA_HOME

Répertoire d'installation de Java. Par exemple: C:\Program Files\Java\jdk1.5.0

Oui

MAVEN_HOME

Répertoire d'installation de Maven. Par défaut: C:\Program Files\Apache Software Foundation\Maven 1.0.2. Cette variable a pu être déjà initialisée par l'installeur.

Oui

MAVEN_OPTS

Paramètres à transmettre à la machine virtuelle Java lorsqu'il exécute Maven. Affectez la valeur suivante à cette variable: -XX:MaxPermSize=128m -Xmx512m (requis pour compiler les gros projets Maven et notamment AndroMDA)

Non

PATH

Nécessaire pour que le système retrouve les exécutables en ligne de commandes. Normalement, cette variable d'environnement système existe déjà et il vous suffit d'y ajouter ceci: %JAVA_HOME%/bin;%MAVEN_HOME%/bin;

Oui

II-B-4. Installation du plugin AndroMDA Application pour Maven

Nous allons maintenant télécharger et installer le plugin AndroMDA Application dans le référentiel local de Maven. Ce module permet la création de squelettes de projet Java utilisant AndroMDA. C'est le seul élément d'AndroMDA que nous aurons besoin d'installer explicitement. Tous les autres artefacts, comme les cartridges AndroMDA, seront automatiquement téléchargés grâce aux scripts Maven générés par ce plugin.

Avant de pouvoir installer les plugins Maven pour AndroMDA, nous devons lui indiquer où trouver le référentiel d'AndroMDA. Pour ce faire :

  • rendez-vous dans votre dossier personnel. Si votre nom d'utilisateur est « foo », ce dossier se trouve dans « C:\Documents and Settings\foo ».
  • créez-y un fichier appelé « build.properties » et ajoutez-y la ligne suivante. Cette ligne indique à Maven d'aller chercher les artefacts sur le serveur d'AndroMDA en plus du référentiel standard sur ibiblio:
 
Sélectionnez
                             maven.repo.remote=http://www.ibiblio.org/maven,http://team.andromda.org/maven

Pour installer le plugin AndroMDA Application, ouvrez une fenêtre de console et exécutez la commande suivante. Assurez-vous d'obtenir un message « BUILD SUCCESSFUL » à la fin de l'exécution.

 
Sélectionnez
                        maven plugin:download -DgroupId=andromda -DartifactId=maven-andromdapp-plugin -Dversion=3.2-RC1

Notez que maven-andromdapp-plugin-3.2-RC1.jar est maintenant installé dans MAVEN_HOME/plugins (C:\Program Files\Apache Software Foundation\Maven 1.0.2\plugins dans notre exemple).

Il est important de noter que le cycle de publication d'AndroMDA s'appuie sur le principe de distribution, c'est-à-dire que tous les composants d'AndroMDA évoluent en parallèle avec le même numéro de version. Il est d'ailleurs intéressant de faire tout de suite un point sur la politique de versions d'AndroMDA. Le numéro de version d'AndroMDA respecte un schéma à 2 chiffres séparés par un point: majeure.mineure. La dernière version stable publiée est la version 3.2-RC1, RC signifiant Release Candidate. La prochaine version publiée sera la version 3.2. Pendant la période de développement actif, ce numéro de version est complété par un SNAPSHOT signifiant que la distribution évolue de jour en jour. Vous vous rendrez vite compte qu'AndroMDA évolue de façon relativement dynamique, même s'il est vrai que la version 3.1 commence à prendre un peu d'âge. En ce moment, les défis sont nombreux pour l'équipe de développement, avec l'intégration du support des nouvelles versions d'UML (UML2), de Maven (Maven 2) et de Java (Java 5), sans parler du fait qu'AndroMDA 4.0 est déjà en cours de conception pour intégrer des nouveautés majeures telles que la modélisation agile ou encore les transformations de modèle à modèle. Pour finir, il est important de signaler que l'équipe de développement d'AndroMDA a adopté un processus d'intégration continue qui fait que toutes les versions SNAPSHOT sont testées et validées en permanence, ce qui les rend relativement stables et encourage de nombreux utilisateurs à travailler directement avec la dernière SNAPSHOT. Cependant, par expérience, j'ai tendance à éviter cette pratique dans la mesure où les soubresauts ne sont pas inexistants. Dans un cadre personnel, rien ne vous empêche d'utiliser la dernière SNAPSHOT, mais dans un cadre professionnel, je vous recommande de vous en tenir à la dernière version stable, d'autant que les nouvelles fonctionnalités de la SNAPSHOT ne sont pas toujours documentées au fur et à mesure.

II-B-5. Installation d'un éditeur UML

Nous allons maintenant installer un outil qui va nous permettre de modéliser nos applications en UML et d'exporter ces modèles dans un format qu'AndroMDA peut comprendre. AndroMDA supporte actuellement UML 1.4 et le format d'exportation XMI 1.2. Suivez les instructions d'un des paragraphes ci-dessous pour installer l'outil de votre choix. (Nous invitons les éditeurs d'outils et les projets Open Source à tester leurs outils avec AndroMDA et à fournir les instructions d'installation pour être incluses dans cette section).

À ce stade, vous vous demandez probablement quel outil installer. Dans les faits, AndroMDA travaille avec des modèle UML1.4 exportés en XMI 1.2 STANDARD. Je me permets d'insister sur le mot « STANDARD », car de nombreux outils de modélisation UML parmi les plus populaires proposent une option d'exportation en XMI, mais dans une version complètement non standard, faite pour vous obliger plus ou moins à ne pas pouvoir travailler sur votre modèle avec d'autres outils que le leur. Dans les faits donc, les éditeurs UML qui exportent en XMI standard sont assez rares. Dans la pratique, AndroMDA est développé avec MagicDraw, un produit commercial de la société No Magic. Pour en avoir testé de nombreux, je peux vous assurer que MagicDraw est de loin l'outil qui s'intègre A CE JOUR le plus harmonieusement avec AndroMDA, sans parler du fait qu'il propose une ergonomie relativement simple, mais redoutable pour être vraiment productif. Heureusement, dernièrement le projet Open Source ArgoUML a connu un regain d'activité, doublé d'un intérêt marqué pour une intégration poussée avec AndroMDA. ArgoUML pourrait donc devenir un jour l'outil Open Source qui manquait à la boîte à outils ouverts gravitant autour d'AndroMDA. Mais dans les faits, cette intégration n'est pas encore finalisée, ce qui me pousse à vous recommander fortement de préférer MagicDraw, au moins dans une première phase d'approche, d'autant que puisqu'une très large majorité de la communauté utilise cet outil, il vous sera plus facile d'obtenir du support concernant son utilisation avec AndroMDA.

À l'origine, le tutoriel prévoyait des explications sur la modélisation avec ArgoUML, une alternative Open Source à MagicDraw UML. Malheureusement, à un moment donné, un bug est notoire est apparu dans la dernière version stable pour l'ajout de valeurs balisées. Par conséquent, j'ai supprimé toutes les sections concernant ArgoUML pour l'instant. Je les réintègrerai dès qu'une nouvelle version d'ArgoUML aura résolu ce bug.

Installation de MagicDraw

Ce paragraphe vous indique comment télécharger et installer MagicDraw 9.5, un outil pour créer des modèles UML. n'oubliez pas que la version 10 de MagicDraw permet de créer des modèles respectant le standard UML 2.0 exportés en XMI2.1. Ces versions ne sont pas encore supportées par AndroMDA.

Veuillez noter que MagicDraw est un produit commercial, mais une édition gratuite « communauté » (Community Edition) est disponible. La version « communauté » n'est pas Open Source. Voici un extrait du fichier lisez-moi de la « community edition »: « MagicDraw édition communauté est une version gratuite pour les développeurs travaillant sur les projets non commerciaux. » À noter également que le projet AndroMDA n'est en aucun cas affilié avec MagicDraw.

Voici les instructions pour installer MagicDraw UML 9.5 Community Edition (avec Service Pack 1) :

  1. Rendez-vous sur le site FTP de MagicDraw: ftp://ftp.magicdraw.com/pub/MagicDraw/community_edition/9.5_sp1/ [ftp://ftp.magicdraw.com/pub/MagicDraw/community_edition/9.5_sp1/];
  2. Téléchargez et installez l'installeur qui convient à votre machine :

    1. MD_UML_95_sp1_CE_win.exe est destinée aux machines sous Windows.
    2. MD_UML_95_sp1_CE_unix.sh est la version recommandée pour une installation sur Unix et Linux,
    3. MD_UML_95_sp1_CE_mac.dmg est la version pour MacOS,
    4. MD_UML_95_sp1_CE_no_install.zip est adaptée à toutes les plateformes (il suffit de décompresser l'archive) ;
  3. Suivez simplement les instructions de l'installeur automatique.

MagicDraw a de nombreux avantages, comme le fait qu'il est traduit en Français, qu'il dispose d'une interface que je trouve personnellement très claire et efficace (mais bon en même temps les goûts et les couleurs) et ce malgré le fait qu'il implémente UML 1.4 avec une rigueur et un sens du détail qui pousse à l'insolence. Mais malheureusement c'est vrai, le version Communauté est assez limitée, notamment au niveau des diagrammes de cas d'utilisation et d'activité, utilisés abondamment par les cartridges BPM4Struts et JSF. Pour une utilisation avancée d'AndroMDA, vous vous rendrez donc vite compte que cette version est assez restreinte. Deux choix s'offriront alors à vous: soit vous migrez vers ArgoUML, complètement Open Source et donc illimité (malgré quelques maladresses dans l'implémentation d'UML), soit vous faites l'acquisition d'une licence personnelle pour la modique somme de 125€ pour l'Union européenne (ou alors même d'une licence académique pour 42€ si vous êtes étudiant). Entendons-nous bien, je ne fais absolument pas de publicité ici, je n'ai aucun intérêt chez No Magic et je ne touche pas de commission. Je vous donne uniquement ces informations à titre… informatif! Pour plus de détails, n'hésitez pas à consulter http://www.magicdraw.com .

II-B-6. Installation d'un système de gestion de bases de données

Nous allons maintenant installer un système de bases de données supporté par Hibernate. Pour connaître la liste des systèmes supportés, il suffit de vous rendre à cette adresse: http://www.hibernate.org/260.html. À partir de maintenant, nous partirons de l'hypothèse que vous avez installé un des systèmes suivants. Si ce n'est pas le cas, il vous faudra modifier les fichiers de configuration d'AndroMDA en fonction de votre installation.

  • MySQL 5.0 : MySQL est un système de gestion de bases de données (SGBD) Open Source. Vous pouvez le télécharger à l'adresse suivante: http://dev.mysql.com/downloads/mysql/5.0.html. Nous vous recommandons de télécharger la version intégrale, et pas seulement les « Essentials ». Par la même occasion, n'hésitez pas à télécharger et à installer MySQL Administrator (http://dev.mysql.com/downloads/administrator/1.1.html) et MySQL Query Browser (http://dev.mysql.com/downloads/query-browser/1.1.html). Il s'agit d'interfaces graphiques qui vous faciliteront grandement la gestion de vos bases de données. Enfin téléchargez et décompressez MySQL Connector/J (le pilote JDBC pour MySQL, disponible ici: http://dev.mysql.com/downloads/connector/j/3.1.html). Dans le répertoire de votre choix. Dans la suite, nous supposerons que vous avez installé ce pilote dans C:\Program Files\MySQL\mysql-connector-java-3.1.12
  • PostgreSQL 8.1 : PostgreSQL est un SGBD Open Source. Vous pouvez le télécharger à cette adresse: http://www.postgresql.org/ftp/binary/v8.1.2/win32/. L'installation de Postgres comprend une interface graphique d'administration appelée pgAdmin III. Les pilotes JDBC font également partie de l'installation.
  • Oracle 9i : Oracle 9i est un SGBD commercial de la société Oracle. Nous supposons que vous disposez des supports de distributions nécessaires à son installation. Oracle 9i intègre un outil administratif graphique appelé Enterprise Manager. Les pilotes JDBC sont également inclus dans l'installation.

Pour ma part, et puisque je me suis donné comme mission de vous aider à choisir, je ne peux que vous recommander de choisir entre les deux options suivantes: si vous avez l'intention de travailler sur des projets Open Source en priorité, vous serez très satisfait par MySQL 5 qui rattrape définitivement son retard par rapport à ses concurrents commerciaux et qui est très facile à utiliser. Si vous envisagez d'utiliser AndroMDA dans un cadre plus professionnel, la très grande pénétration d'Oracle dans ce domaine me pousse à vous orienter vers un système Oracle. Malheureusement, Oracle 9i est un enfer à installer (et encore bien pire à désinstaller), et se trouve être d'une lourdeur qui mettront vite à genoux votre petit portable. Heureusement, Oracle a lui aussi cherché à combler son retard dans le domaine des bases de données faciles à installer et à utiliser, en proposant Oracle 10i Express Edition. Pour la télécharger, rendez-vous à cette adresse http://www.oracle.com/technology/software/products/database/oracle10g/index.html et téléchargez puis installer « Oracle Database 10g Express Edition ». Cette version d'Oracle est beaucoup plus simple à installer et à utiliser que les versions professionnelles, sans vraiment sacrifier les fonctionnalités. De plus, elle est livrée avec une interface web d'administration très efficace. Et combinée avec l'excellent client graphique SQLDeveloper ( http://www.oracle.com/technology/software/products/sql/index.html ), vous obtenez un excellent environnement de travail qui vous permettra de vous familiariser en douceur avec Oracle avant de déployer votre application dans votre entreprise. Là encore, je n'ai aucun lien avec la société Oracle, et je ne vous parle de ces produits que parce qu'ils sont gratuits, nouveaux, puissants et que relativement peu de monde est au courant de ces nouvelles versions qui mettent Oracle, traditionnellement réputé pour être un système lourd et difficile à déployer et à administrer, à la portée du développeur indépendant, voire débutant. Pour ma part j'utilise Oracle 9i pour mes projets professionnels, et MySQL pour mes projets personnels.

II-B-7. Installation d'Eclipse (optionnelle)

Eclipse est un environnement de développement intégré (EDI) populaire qui s'avère très utile pour le développement d'applications Java. AndroMDA ne requiert pas l'utilisation d'Eclipse. Néanmoins,nous vous en recommandons l'utilisation pour le développement dans la mesure où il vous aide à améliorer votre productivité. Vous pouvez télécharger Eclipse à cette adresse: http://www.eclipse.org/downloads/. Il vous suffit de double-cliquer sur le fichier téléchargé pour démarrer l'installation.

Eclipse est devenu un standard de facto dans la communauté des développeurs Java, notamment de par le fait que puisqu'il n'est pas qu'un EDI Java, il permet de développer en fait dans de très nombreux langages. Et la possibilité de développer des plugins rend ses possibilités quasi illimitées. De fait, au moment où j'écris ces lignes, un des développeurs d'AndroMDA est en train de travailler au développement du plugin Android/Eclipse, qui vise à intégrer AndroMDA dans Eclipse. Pour ma part, je ne fais pas partie des enthousiastes d'Eclipse dans la mesure où je fais partie des 5% de gens chez qui il plante sans arrêt (et dommage pour la productivité). C'est pourquoi je ne peux que vous recommander de jeter un œil, encore une fois à titre purement informatif, sur IntelliJ Idea ( http://www.jetbrains.com/idea/ ), un produit commercial de la société JetBrains, qui vaut son pesant de cacahuètes (499$ pour une licence individuelle, 99$ pour une licence académique), mais qui bénéficie d'une version d'essai complète de 30 jours pour vous faire une idée, et éventuellement une licence Open Source gratuite si vous avez votre propre projet Open Source. Enfin voilà, je sais, « payant! cher! pas bien! », mais bon essayez-le et vous comprendrez ce que c'est un vrai « gain de productivité » :oP

II-C. Création du projet TimeTracker

Nous allons maintenant pouvoir créer un squelette d'application en utilisant le plugin AndroMDA. Plus tard, nous ferons évoluer cette application de base pour ajouter de façon incrémentale les fonctionnalités de pointage. Notez que l'application TimeTracker complète est disponible dans les distributions sources et binaires, sous /samples/time-tracker-java. Nous vous recommandons de garder l'application complète sous la main au cas où vous ressentiriez le besoin de réparer votre propre version.

Quelques petites choses avant de commencer :

  • faites attention à bien suivre les instructions de ce tutoriel très précisément. Ne prenez AUCUN raccourci, faute de quoi vous risquez juste de perdre du temps. Il y a une raison à chaque étape dans le tutoriel. Vous ne trouverez rien de superflu ici ;
  • il est recommandé que vous utilisiez Firefox ou Internet Explorer 7 pour parcourir ce tutoriel. Internet Explorer 6 ne permet pas de sélectionner du texte correctement dans les pages de tutoriel ce qui complique la copie de code.

Bien entendu, cette dernière remarque n'est pas d'actualité pour la version française du tutoriel, à cause de la plateforme technique de documentation. La version anglaise utilise les capacités de génération de documentation de Maven, alors que cette version utilise le mécanisme maison de Developpez.com. Donc, normalement ça ne devrait pas poser de problème pour faire des copier-coller depuis Internet Explorer 6. Par contre, je ne pouvais pas m'empêcher de laisser cette remarque, ne serait-ce que pour vous encourager à utiliser Firefox si vous ne le faites pas déjà. Croyez-moi, je ne suis pas un de ces fanatiques néo-réac qui vous diront que tout ce qui n'est pas Microsoft est forcément mieux. Mais dans les faits, surtout pour un développeur, Firefox est de loin le meilleur navigateur qui existe à l'heure actuelle. Et puisque c'est gratuit, vous n'avez rien à perdre à l'essayer, alors: http://www.mozilla-europe.org/fr/products/firefox/ . Un autre outil qui pourrait vraiment vous être utile si vous travaillez en ligne de commandes sous windows: « Open Command Window Here Powertoy for Windows XP » est un petit plugin pour Windows XP signé Microsoft qui ajoute une commande au menu contextuel et qui vous permet d'ouvrir un interpréteur de commandes qui pointe directement sur un dossier de votre choix. Ça évite beaucoup d'appels nostalgiques aux vieilles commandes DOS (cd et dir pour ne pas les nommer). Vous le trouverez à cette adresse: http://download.microsoft.com/download/whistler/Install/2/WXP/EN-US/CmdHerePowertoySetup.exe .

Allez, nous sommes maintenant prêts à démarrer. Créez l'application de départ en suivant les étapes suivantes :

  1. Ouvrez un interpréteur de commandes et rendez-vous dans le dossier où vous désirez créer le dossier de l'application. Dans cet exemple, nous avons choisi le répertoire C:\. L'application sera créée dans le dossier C:\timetracker ;
  2. Maintenant, exécutez la commande suivante pour générer le squelette d'application. Répondez aux questions exactement de la manière indiquée dans la saisie d'écran suivante. La seule chose que vous pouvez modifier est votre propre nom en réponse à la première question :-).
 
Sélectionnez
C:\>maven andromdapp:generate
 __  __
|  \/  |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
|_|  |_\__,_|\_/\___|_||_|  v. 1.0.2
 
Please enter your first and last name (i.e. Chad Brandon):
Sebastien Arbogast
Please enter the name of your J2EE project (i.e. Animal Quiz):
TimeTracker
Please enter the id for your J2EE project (i.e. animalquiz):
timetracker
Please enter a version for your project (i.e. 1.0-SNAPSHOT):
1.0-SNAPSHOT
Please enter the base package name for your J2EE project (i.e. org.andromda.samples):
org.andromda.timetracker
Would you like an EAR or standalone WAR (enter 'ear' or 'war')?
ear
Please enter the type of transactional/persistence cartridge to use (enter 'hibernate', 'ejb', or 'spring'):
spring
Would you like to use the jBpm workflow engine, it uses Hibernate3 (enter 'yes' or 'no')?
no
Please enter the hibernate version number  (enter '2' for 2.1.x or '3' for 3.0.x):
3
Would you like a web application? (enter 'yes' or 'no'):
yes
Would you like your web tier to use JSF or Struts? (enter 'jsf' or 'struts'):
struts
Would you like to be able to expose your services as web services? (enter 'yes' or 'no'):
no
build:start:
 
andromdapp:init:
 
andromdapp:generate:
    [echo] +---------------------------------------------------------------------+
    [echo] |   G E N E R A T I N G   A n d r o M D A   J 2 E E   P R O J E C T   |
    [echo] +---------------------------------------------------------------------+
    [mkdir] Created dir: C:\timetracker
    [copy] Copying 1 file to C:\timetracker
andromdapp:init:
 
andromdapp:generate-app-subproject:
andromdapp:generate-module:
    [mkdir] Created dir: C:\timetracker\app
    [copy] Copying 2 files to C:\timetracker\app
 
    [mkdir] Created dir: C:\timetracker\app\src\META-INF
 
andromdapp:init:
 
andromdapp:generate-spring-subproject:
    [mkdir] Created dir: C:\timetracker\core
andromdapp:init:
 
andromdapp:generate-core-subproject:
andromdapp:generate-module:
 
    [mkdir] Created dir: C:\timetracker\core\src\java
    [mkdir] Created dir: C:\timetracker\core\target\src
 
 
andromdapp:init:
 
andromdapp:generate-common-subproject:
andromdapp:generate-module:
    [mkdir] Created dir: C:\timetracker\common
 
    [mkdir] Created dir: C:\timetracker\common\src\java
    [mkdir] Created dir: C:\timetracker\common\target\src
 
andromdapp:init:
 
andromdapp:generate-mda-subproject:
    [mkdir] Created dir: C:\timetracker\mda\src\uml
    [copy] Copying 1 file to C:\timetracker\mda\src\uml
    [mkdir] Created dir: C:\timetracker\mda\conf
    [copy] Copying 1 file to C:\timetracker\mda
    [mkdir] Created dir: C:\timetracker\mda\conf\mappings
 
andromdapp:init:
 
andromdapp:generate-web-subproject:
andromdapp:generate-module:
    [mkdir] Created dir: C:\timetracker\web
 
    [mkdir] Created dir: C:\timetracker\web\src\java
    [mkdir] Created dir: C:\timetracker\web\target\src
 
    [echo] |
    [echo] |  New J2EE project generated to: 'C:\/timetracker'
    [echo] |
    [echo] |  For more information on how to proceed from here read 'C:\/timetracker/readme.txt'
    [echo] |
BUILD SUCCESSFUL
Total time: 7 minutes 10 seconds
Finished at: Sat Apr 08 14:34:40 CEST 2006
 
C:\>

Examinez les différents dossiers et fichiers créés par le plugin andromdapp. Vous remarquerez l'existence de fichiers appelés project.xml, maven.xml et project.properties dans différents dossiers sous timetracker. Ces fichiers correspondent à plusieurs projets Maven. En fait, le répertoire timetracker contient une hiérarchie de projets Maven comme ceci:

 
Sélectionnez
timetracker
     |
     |-- mda
     |
     |-- common
     |
     |-- core
     |
     |-- web
     |
     +-- app
  • Timetracker : Il s'agit du projet principal qui contrôle le processus de construction et les propriétés génériques.
  • Mda : Le projet mda est le sous-projet le plus important de l'application. Il comprend le modèle UML de TimeTracker, enregistré dans le répertoire src/uml. C'est également dans le projet mda qu'AndroMDA est configuré pour générer les fichiers nécessaires à l'assemblage de l'application.
  • Common : Le sous-projet common rassemble les ressources et les classes qui sont partagées par plusieurs autres sous-projets. Cela inclut notamment les objets de valeur et les énumérations.
  • Core : Le sous-projet core contient les ressources et les classes qui utilisent le framework Spring, et éventuellement Hibernate et/ou des EJB. Il s'agit notamment des classes d'entités, des objets d'accès aux données, des fichiers de mappage Hibernate et des fabriques de composants Spring.
  • Web : Le sous-projet web comprend les ressources et les classes qui constituent la couche de présentation.
  • App : Le sous-projet app englobe les ressources et les classes requises pour construire l'archive .ear.

À ce stade, vous pourriez avoir peur devant le nombre impressionnant de sous-projets impliqués. Et encore nous n'avons pas activé les WebServices ou encore la gestion des processus métier. Pour autant, par expérience, seul le sous-projet core va faire l'objet d'une attention toute particulière. En effet, les éléments générés dans le sous-projet common n'ont généralement besoin d'aucune personnalisation, le dossier app ne servira qu'à personnaliser la configuration du paquetage pour Jboss, ce qui est inutile dans la plupart des cas. Le sous-projet web ne sera utile que lorsque nous utiliserons la cartouche Bpm4Struts, ce qui n'est pas prévu dans ce tutoriel, mais dans un prochain. Quant au dossier mda, il ne sera utile qu'à deux choses: éditer le modèle UML et personnaliser la configuration d'AndroMDA. Ne vous laissez donc pas distraire: dans ce tutoriel, tout va essentiellement se passer dans le sous-projet core. Il est enfin intéressant de remarquer que cette organisation en multiprojet vous permet d'avoir un projet modulaire. Par exemple, lorsque vous désirerez mettre vos services à disposition en Web Services, il vous suffira de rajouter ce module qui pourra réutiliser le module core, sans avoir à redévelopper toute la logique métier de votre application.

Vous pourrez trouver plus de détails sur le contenu du projet TimeTracker dans le fichier readme.txt, à la racine du dossier timetracker. Ce fichier contient également une description des cibles Maven utiles pour le projet.

Dans la mesure où MDA est une démarche originale dans le monde du développement en général, il est fort probable que si votre projet est amené à être manipulé par d'autres personnes, celles-ci ne soient pas formées aux subtilités d'AndroMDA comme vous allez l'être grâce à ce tutoriel. Par conséquent, ces personnes risquent très bien de vouloir aller modifier directement des fichiers sources générés, ou encore de réarranger l'organisation du projet à leur sauce, sans tenir compte de la configuration d'AndroMDA. Dans ce contexte, le fichier readme.txt est une base de documentation minimale qui permettra à n'importe qui de compiler et d'utiliser votre projet. Pensez-y avant de l'effacer ;o)

II-D. Configurez l'application TimeTracker

Nous allons apporter une légère adaptation de configuration pour simplifier l'implémentation de TimeTracker. Au lieu d'une couche de présentation utilisant une interface Web qui passe par les EJB pour communiquer avec la couche de services, nous allons d'abord créer un client en ligne de commande qui communique directement avec la couche de services. Voici les étapes à suivre pour désactiver les EJB.

  1. Éditez le fichier de configuration d'AndroMDA qui se trouve dans le dossier timetracker\mda\conf\andromda.xml.
  2. Dans l'espace de nommage (ou « namespace ») spring, commentez les propriétés appelées « dataSource » et « session-ejbs ».

Voici la section correspondante dans le fichier andromda.xml une fois modifié :

 
Sélectionnez
<namespace name="spring">
    <properties>
        <!--<property name="dataSource">${dataSource}</property>-->
        <property name="username">${dataSource.user}</property>
        <property name="password">${dataSource.password}</property>
        <property name="driver">${dataSource.driver.class}</property>
        <property name="connectionUrl">${dataSource.url}</property>
        <property name="hibernateDialect">${hibernate.db.dialect}</property>
        <property name="hibernateShowSql">${hibernate.db.showSql}</property>
        <property name="hibernateQueryUseNamedParameters">true</property>
        <property name="sessionFactory">org.springframework.orm.hibernate3.LocalSessionFactoryBean</property>
        <property name="localTransactionManager">org.springframework.orm.hibernate3.HibernateTransactionManager</property>
        <property name="hibernateCacheProvider">org.hibernate.cache.EhCacheProvider</property>
        <property name="hibernateQueryCacheFactory">org.hibernate.cache.StandardQueryCacheFactory</property>
        <property name="hibernateInheritanceStrategy">${hibernate.inheritance.strategy}</property>
        <property name="springTypesPackage">${application.package}</property>
        <property name="daos">${maven.andromda.core.generated.dir}</property>
        <property name="dao-impls">${maven.andromda.core.manual.dir}</property>
        <property name="spring-configuration">${maven.andromda.core.generated.dir}</property>
        <property name="services">${maven.andromda.core.generated.dir}</property>
        <property name="service-impls">${maven.andromda.core.manual.dir}</property>
        <property name="enableSpringTransactionsWhenEjbsEnabled">true</property>
        <!-- to remove any dependency on EJB, comment the following property -->
        <!--<property name="session-ejbs">${maven.andromda.core.generated.dir}</property>-->
        <!-- uncomment to enable EJB security
        <property name="securityRealm">${application.id}</property>
        -->
    </properties>
</namespace>

Voilà qui nous donne l'occasion d'une petite introduction au fichier de configuration d'AndroMDA, ainsi qu'à la façon dont AndroMDA est construit. AndroMDA étant le fruit d'une équipe d'expérience, qui utilise AndroMDA dans un cadre professionnel, le concepteur même d'AndroMDA, Matthias Bohlen étant lui-même un architecte logiciel expérimenté, vous vous rendrez rapidement compte qu'AndroMDA est construit selon les mêmes principes intelligents qu'il préconise pour vos projets. L'aspect le plus marquant de cela, c'est qu'AndroMDA est fondamentalement modulaire et extensible. À chaque module fonctionnel d'AndroMDA correspond notamment un espace de nommage, ou « namespace ». Ces modules fonctionnels se présentent sous plusieurs formes, qui sont autant de possibilités d'extensions et de personnalisation. Le type de plugin le plus important est ce qu'on appelle les cartouches (ou « cartridges »). Chaque cartouche génère une partie de votre application pour une ou plusieurs technologies cibles données. Ainsi par exemple la cartouche Spring va pouvoir générer à partir de votre modèle UML l'ensemble des classes et des fichiers de configuration nécessaires au déploiement de votre application sur un serveur utilisant Spring pour la couche métier et Hibernate pour la couche de persistance des données (couple très populaire). Les cartouches Bpm4Struts et JSF quant à elles utilisent le même modèle de base pour générer la couche de présentation, mais pour des technologies cibles différentes (en l'occurrence respectivement Struts et Hibernate). Et bien entendu, ce ne sont pas les seules extensions possibles, puisqu'il est possible également de changer le moteur de génération (AndroMDA utilise Velocity par défaut), de développer de nouvelles métafaçades (certainement une des parties les plus avancées du développement d'AndroMDA: il s'agit des métamodèles UML utilisés par les cartouches), ou encore les librairies de traduction (pour pouvoir traduire les requêtes en OCL de votre modèle vers HQL ou EJB-QL par exemple). Je ne vous cache pas que le développement de ces différents composants additionnels requiert une connaissance approfondie d'AndroMDA et de son architecture, mais les développeurs du projet encouragent de plus en plus les utilisateurs à développer et à proposer leurs propres composants, notamment s'il s'agit de cartouches. Ils ont lancé pour cela le projet AndroMDA-Plugins sur SourceForge, et ils ont récemment publié une documentation en 10 étapes pour créer une nouvelle cartouche ( http://www.andromda.org/index.php?option=com_content&task=blogcategory&id=35&Itemid=77 ). La communauté est donc très dynamique et en pleine expansion, ce qui laisse présager de choses très intéressantes pour l'avenir. Et pour en revenir au fichier de configuration, chaque cartouche est associée à un namespace, qui comprend lui-même une série de propriétés que l'on configure dans andromda.xml. Enfin pour être plus précis, l'usage veut que ce fichier contienne en fait des références vers des variables qui sont initialisées dans les fichiers project.properties. Il s'agit là à la fois d'une convention historique et d'une commodité visant à rassembler en un même lieu accessible et lisible depuis un simple éditeur de texte, à la fois les propriétés de Maven et celles d'AndroMDA. Bien sûr, avec la disparition des project.properties dans Maven2 il y a fort à parier que cette pratique va bientôt évoluer.

Nous allons encore appliquer une modification supplémentaire pour réduire la verbosité des messages de log de l'application.

  1. Éditez le fichier C:/timetracker/mda/project.properties.
  2. Changez la valeur de la propriété hibernate.db.showSql de true à false.

II-E. Configurez la base de données de TimeTracker

Configurons maintenant la base de données que vous avez choisie.

Créez un schéma et un utilisateur pour l'application TimeTracker en suivant les étapes ci-dessous. Dans ce tutoriel, nous supposerons que votre schéma s'appelle timetracker et que l'utilisateur timetracker y a accès. Toutefois vous êtes libre d'utiliser d'autres noms ou schémas préexistants dans votre base de données MySQL. Mais souvenez-vous de les adapter dans vos copier-coller sauvages ;o)

Si vous connaissez déjà votre système de bases de données et/ou que vous avez l'habitude d'utiliser votre propre outil d'administration ou même tout simplement la ligne de commande, la procédure générique est assez simple: il va vous falloir dans l'ordre créer un schéma timetracker, créer un utilisateur appelé timetracker avec pour mot de passe timetracker, lui affecter tous les droits sur le schéma timetracker, et enfin adapter le fichier timetracker\project.properties afin qu'elles reflètent votre environnement. Faites attention à ne pas vous tromper dans ces propriétés, notamment en ce qui concerne l'emplacement du driver JDBC, car la moindre erreur peut aboutir à des bugs systématiques de votre application qui n'arrivera pas à se connecter à votre base de données. Si vous n'êtes pas sûr de ce que vous faites, je vous recommande de bien recopier la section correspondant à votre environnement dans les paragraphes suivants.

II-E-1. MySQL

  1. Lancez MySQL Administrator et connectez-vous comme l'utilisateur root.
  2. Cliquez sur « Catalogs » dans la barre de navigation à gauche.
  3. Cliquez droit dans le panneau en bas à gauche (appelé « Schemadata ») et sélectionnez « Create New Schema ».
  4. Saisissez le nom du schéma, par exemple timetracker, et cliquez sur OK.
  5. Cliquez sur « User Administration » dans la barre de navigation à gauche.
  6. Cliquez sur le bouton « New User » et ajoutez un nouvel utilisateur appelé « timetracker » et avec pour mot de passe « timetracker ».
  7. Sélectionnez l'onglet « Schema Privileges » et cliquez sur le schéma timetracker.
  8. Cliquez sur le bouton « << » pour conférer tous les privilèges à l'utilisateur timetracker sur le schéma du même nom, et cliquer sur le bouton « Apply Changes ».
  9. Vous pouvez maintenant quitter MySQL Administrator si vous le souhaitez.

Éditez le fichier timetracker\project.properties et modifiez les valeurs des propriétés de base de données afin qu'elles correspondent à votre environnement. Un fichier project.properties figure ci-dessous pour l'exemple:

 
Sélectionnez
# set this to true will deploy the ear exploded
deployExploded=false
 
# The datasource for the application
dataSource.name=TimeTrackerDS
dataSource=java:/${dataSource.name}
 
# Properties for management of the database schema,
# ignore if you setup/drop your schema manually
dataSource.driver.jar=C:/Program Files/MySQL/mysql-connector-java-3.1.12/mysql-connector-java-3.1.12-bin.jar
dataSource.driver.class=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://127.0.0.1:3306/timetracker
dataSource.user=timetracker
dataSource.password=timetracker
dataSource.sql.init=core/target/schema-create.sql
dataSource.sql.drop=core/target/schema-drop.sql
dataSource.sql.load=core/target/db/create-dummy-load.sql
# What schema related goals should do when an error occurs.
dataSource.sql.onError=continue
 
# Change this to generate to the correct MDA database mappings
# For MySql use: MySQL
# For Hypersonic use: HypersonicSql
# For Oracle9i use: Oracle9i
sql.mappings=MySQL
 
# For MySql use: org.hibernate.dialect.MySQLDialect
# For Hypersonic use: org.hibernate.dialect.HSQLDialect
# For Oracle9i use: org.hibernate.dialect.Oracle9Dialect
hibernate.db.dialect=org.hibernate.dialect.MySQLDialect

II-E-2. PostgreSQL

  1. Lancez l'application pgAdmin III.
  2. Double-cliquez sur « PostgreSQL Database Server 8.1 » pour vous connecter au serveur. Si cela vous est demandé, saisissez le mot de passe pour l'utilisateur postgres.
  3. Cliquez droit sur « Login Roles » dans le panneau de gauche et sélectionnez « New Login Role ».
  4. Saisissez timetracker comme nom de rôle et comme mot de passe.
  5. Cochez la case appelée « Can create database objects ».
  6. Cliquez sur OK pour créer l'utilisateur.
  7. Cliquez droit sur « Databases » dans le panneau de gauche et sélectionnez « New Database ».
  8. Saisissez timetracker comme nom de la base de données.
  9. Sélectionnez timetracker comme propriétaire (« owner »).
  10. Cliquez sur OK pour créer la base de données.
  11. Vous pouvez maintenant quitter l'application pgAdmin si vous le souhaitez.

Voici le fichier timetracker\project.properties tel qu'il doit être adapté pour votre environnement.

 
Sélectionnez
# set this to true will deploy the ear exploded
deployExploded=false
 
# The datasource for the application
dataSource.name=TimeTrackerDS
dataSource=java:/${dataSource.name}
 
# Properties for management of the database schema,
# ignore if you setup/drop your schema manually
dataSource.driver.jar=C:/Program Files/PostgreSQL/8.1/jdbc/postgresql-8.1-404.jdbc3.jar
dataSource.driver.class=org.postgresql.Driver
dataSource.url=jdbc:postgresql://localhost:5432/timetracker
dataSource.user=timetracker
dataSource.password=timetracker
dataSource.sql.init=core/target/schema-create.sql
dataSource.sql.drop=core/target/schema-drop.sql
dataSource.sql.load=core/target/db/create-dummy-load.sql
# What schema related goals should do when an error occurs.
dataSource.sql.onError=continue
 
# Change this to generate to the correct MDA database mappings
# For MySql use: MySQL
# For Hypersonic use: HypersonicSql
# For Oracle9i use: Oracle9i
sql.mappings=PostgreSQL
 
# For MySql use: org.hibernate.dialect.MySQLDialect
# For Hypersonic use: org.hibernate.dialect.HSQLDialect
# For Oracle9i use: org.hibernate.dialect.Oracle9Dialect
hibernate.db.dialect=org.hibernate.dialect.PostgreSQLDialect

II-E-3. Oracle

Notez que, dans le cas particulier d'Oracle, un schéma appelé timetracker sera automatiquement créé quand l'utilisateur timetracker commence à créer des objets de base de données dans votre instance de base de données.

  1. Ouvrez « Enterprise Manager Console et connectez-vous en tant que »system".
  2. Déployez votre instance de base de données dans le panneau de gauche.
  3. Cliquez droit sur le nœud « Users » sous « Security » et sélectionnez « Create… ».
  4. Saisissez timetracker comme nom d'utilisateur ainsi que comme mot de passe.
  5. Sélectionnez l'onglet « Role » et donnez les privilèges CONNECT et RESOURCES à cet utilisateur.
  6. Cliquez sur « Create » pour créer l'utilisateur.
  7. Vous pouvez maintenant quitter Enterprise Manager si vous le souhaitez.

Voici le fichier timetracker\project.properties tel qu'il doit être adapté pour votre environnement.

 
Sélectionnez
# set this to true will deploy the ear exploded
deployExploded=false
 
# The datasource for the application
dataSource.name=TimeTrackerDS
dataSource=java:/${dataSource.name}
 
# Properties for management of the database schema,
# ignore if you setup/drop your schema manually
dataSource.driver.jar=C:/oracle/ora92/jdbc/lib/ojdbc14.jar
dataSource.driver.class=oracle.jdbc.OracleDriver
dataSource.url=jdbc:oracle:thin:@localhost:1521:nbdb1
dataSource.user=timetracker
dataSource.password=timetracker
dataSource.sql.init=core/target/schema-create.sql
dataSource.sql.drop=core/target/schema-drop.sql
dataSource.sql.load=core/target/db/create-dummy-load.sql
# What schema related goals should do when an error occurs.
dataSource.sql.onError=continue
 
# Change this to generate to the correct MDA database mappings
# For MySql use: MySQL
# For Hypersonic use: HypersonicSql
# For Oracle9i use: Oracle9i
sql.mappings=Oracle9i
 
# For MySql use: org.hibernate.dialect.MySQLDialect
# For Hypersonic use: org.hibernate.dialect.HSQLDialect
# For Oracle9i use: org.hibernate.dialect.Oracle9Dialect
hibernate.db.dialect=org.hibernate.dialect.Oracle9Dialect

II-F. Téléchargement des dépendances de l'application

Vous vous souvenez certainement que pour l'instant, nous n'avons téléchargé qu'un seul artefact d'AndroMDA. Il s'agissait du plugin AndroMDA Application. Et bien il est maintenant temps de se procurer les éléments restants. Nous allons le faire automatiquement en exécutant les scripts Maven générés plus haut. Ces scripts spécifient toutes les dépendances que l'application a vis-à-vis d'AndroMDA. Donc si nous les exécutons sur notre modèle vide, toutes les dépendances nécessaires seront rapatriées dans notre référentiel Maven. Bien sûr, puisque le modèle est blanc, aucun code ne sera généré. Toutefois, récupérer les dépendances maintenant est important puisque nous en aurons besoin très bientôt. Suivez les étapes ci-dessous pour télécharger les dépendances nécessaires.

  1. Ouvrez une fenêtre de commandes et rendez-vous dans le répertoire C:\timetracker.
  2. Exécutez la commande « maven install ». Vous verrez des messages sur votre écran vous indiquant que les artefacts sont en cours de téléchargement. Assurez-vous que vous obtenez un message « BUILD SUCCESSFUL » quand le script Maven se termine.

Voici un extrait de la sortie correspondant à l'exécution de cette commande:

 
Sélectionnez
C:/timetracker>maven install
 __  __
|  \/  |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
|_|  |_\__,_|\_/\___|_||_|  v. 1.0.2
 
build:start:
 
install:
multiproject:install:
multiproject:projects-init:
    [echo] Gathering project list
Starting the reactor...
...
+----------------------------------------
| Executing multiproject:install-callback TimeTracker MDA
| Memory: 4M/5M
+----------------------------------------
Attempting to download andromda-profile-3.2-RC1.xml.zip.
15K downloaded
Attempting to download andromda-profile-datatype-3.2-RC1.xml.zip.
18K downloaded
Attempting to download andromda-profile-webservice-3.2-RC1.xml.zip.
12K downloaded
Attempting to download andromda-profile-service-3.2-RC1.xml.zip.
13K downloaded
...
INFO  [App] BUILD SUCCESSFUL
INFO  [App] Total time: 2 minutes 48 seconds
INFO  [App] Finished at: Sat Jan 28 18:52:31 EST 2006
INFO  [App]
C:/timetracker>

Notez que la recherche et le téléchargement de toutes les dépendances depuis des référentiels distants vers votre machine peuvent prendre un certain temps. Toutefois, ce processus n'est pas requis à chaque fois que vous construisez le projet. Une fois que toutes les dépendances ont été téléchargées, nous utiliserons l'option -o de Maven pour les constructions à venir. Cette option demande à Maven de s'exécuter en mode hors-ligne, en utilisant les librairies du référentiel local. Ces constructions seront beaucoup plus rapides.

II-G. Et maintenant ?

Maintenant que nous avons créé l'application de base, il est temps de commencer à modéliser.


précédentsommairesuivant