Partie théorique
Transcription
Partie théorique
HEG Arc - Haute école Arc – Gestion Travail de Bachelor d'informaticien de gestion Gestion visuelle d’enchaînements de pages APEX avec VP Partie théorique Nom : Bel Prénom : Olivier Classe : 4IGTP Cycle d'études : 2009-2012 École : HEG-ARC E-mail : [email protected] Date de création : 02.10.2012 Dernière modification : 14.01.2013 Mode de réalisation : Extra-muros Version : 1.0 Adressé à : P.-A. Sunier Restitué : 21.01.2013 C Partie théorique.odt Table des matières 1 Introduction....................................................................................................................................1 1.1 Le principe de base..................................................................................................................1 1.1.1 Le fichier pivot..................................................................................................................3 2 A propos de ce travail....................................................................................................................4 3 Les risques......................................................................................................................................5 4 Description des principaux logiciels.............................................................................................7 4.1 APEX, description...................................................................................................................7 4.2 Visual Paradigm, description.................................................................................................10 5 Étude d'APEX..............................................................................................................................12 5.1 Avant de commencer.............................................................................................................12 5.2 Structure des métadonnées d'APEX......................................................................................12 5.2.1 Package ApexGen............................................................................................................13 5.2.2 Fichier d'exportation d'application APEX.......................................................................14 5.3 Structure d'une application APEX.........................................................................................15 6 Étude de VP for UML..................................................................................................................17 7 Quel diagramme choisir ?...........................................................................................................20 7.1 Les contraintes.......................................................................................................................20 7.1.1 Les 13 diagrammes UML................................................................................................21 7.1.2 Exemple de diagrammes..................................................................................................21 7.1.3 Remarques.......................................................................................................................24 7.1.4 Les outsiders....................................................................................................................24 7.1.5 Les favoris.......................................................................................................................25 7.1.6 Notre choix......................................................................................................................27 7.2 Les autres diagrammes non UML.........................................................................................28 8 Étude du diagramme retenu.......................................................................................................29 8.1 Le choix du Dependency.......................................................................................................31 8.2 Étude des boutons et branchements......................................................................................31 8.2.1 Les choix..........................................................................................................................32 8.3 Les groupes de pages.............................................................................................................33 9 La modélisation de nos objets Java............................................................................................36 10 Nouveau diagramme ou diagramme existant ?.........................................................................37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 1 Introduction 1.1 Le principe de base Ce travail de Bachelor consiste en l'écriture d'un plugin pour Visual Paradigm for UML (abrégé VP pour la suite). Ce plugin1 sera en mesure de lire les métadonnées de APEX pour une application donnée afin de représenter les pages de celle-ci et leur enchaînement les unes avec les autres dans un diagramme UML. Les enchaînements, au niveau d'APEX sont provoqués par des action sur des éléments de page tels que des boutons, branchements, hyperliens, etc. A terme, ce plugin sera aussi capable de travailler dans l'autre sens à savoir, lire les données du référentiel VP et créer les pages et les éléments ainsi représentés dans APEX. Le projet étant tout de même assez complexe, nous avons prévu de décomposer dans un premier temps le projet en deux parties bien distinctes. La première partie est une application qui nous permet de lire les métadonnées d'une application APEX et de représenter cette structure dans un fichier pivot (expliqué plus bas) au format XML. Elle sera aussi en mesure de faire l'opération inverse à savoir, lire le fichier pivot et modifier les métadonnées APEX. La seconde partie est le plugin qui relira les données à partir du fichier pivot afin de représenter la structure dans le référentiel VP. Le plugin sera aussi en mesure de lire le référentiel VP et de créer le fichier pivot. Dans un premier temps, nous nous intéresserons au sens APEX à Pivot à VP afin de représenter graphiquement les pages d'une application APEX existante et leurs enchaînements les unes avec les autres. Idéalement nous devrions pouvoir représenter n'importe quelle application aussi complexe soit-elle. Initialement nous avions prévu qu'un, voire deux plugins, seraient nécessaires pour la synchronisation entre VP et APEX dans les deux sens, sans fichier pivot selon le schéma cidessous : 1 [INT 01] 1 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Puis après réflexion, nous avons décidé, mon directeur de travail et moi qu'il serait bien de décomposer le travail de développement en deux parties et d'utiliser un fichier pivot intermédiaire selon le schéma ci-dessous : Cette solution offre l'avantage de pouvoir développer, dans un premier temps, deux projets séparément. Un projet pour ce qui est de la synchronisation entre APEX et le fichier pivot XML et un autre projet, le plugin, qui se charge de synchroniser le référentiel VP et le fichier pivot XML. Les deux schémas ci-dessus sont ceux que j'ai repris du document de demande de ratification. Actuellement il ne m'est pas encore possible de prévoir s'il faudra 1 ou 2 plugins. Si on choisit un seul plugin, il faudra qu'il soit interactif et nous propose de faire des choix quant au sens de synchronisation. Une première phase du développement correspondra au schéma ci-dessous où certains termes ont été revus et le sens lecture APEX vers représentation VP a été privilégié : 2 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Nous avons donc une application Java qui est capable de lire les métadonnées d'une application APEX et d'écrire cette structure dans un fichier pivot au format XML. Le plugin quant lui sera capable de relire le fichier pivot et de représenter la structure de celui-ci dans VP. A terme, le plugin et l'application Java ne feront qu'un, à savoir un plugin interactif nous demandant par exemple si l'on veut lire à partir du fichier pivot ou à partir du référentiel APEX. 1.1.1 Le fichier pivot Comme dit plus haut le fichier pivot nous permet de décomposer le projet en deux parties distinctes qui sont la lecture des métadonnées APEX puis l’écriture dans le référentiel VP. Il s'agit donc là d'une sorte de fichier temporaire, A terme il n'y aura plus qu'un (voire deux) plugin. Dans le cas d'un seul plugin du moins, il semble que le fichier pivot ne soit alors plus nécessaire puisqu'il suffit de lire les métadonnées et ensuite de directement écrire dans le référentiel APEX. Cependant, dans une vision à plus long terme, nous pouvons tout à fait imaginer que le plugin ne lirais plus les données dans les métadonnées APEX mais seulement à partir du fichier pivot, lequel serait alimenté par une autre application externe qui, elle, irait relire les données APEX. Dans cette optique nous choisirons alors de conserver le fichier pivot même après fusion en un seul ou plusieurs plugins. 3 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 2 A propos de ce travail Le travail de Bachelor que l'on m'a proposé se veut être une expérimentation ou une recherche de faisabilité plus qu'un produit fini et exploitable. A terme, il pourra être modifié et amélioré afin d'être utilisable par les étudiants de HEG-ARC. Les objectifs ne sont pas clairement définis mais seront dictés par l'avancement des travaux et les résultats. Les objectifs sont revus séance après séance par le directeur de travail (PSU) et par moimême. Ce projet n'est pas un projet tel que l'on en rencontre dans l'industrie, les coûts ne sont pas fixés pour autant qu'il y en ait. Les temps est fixé idéalement 360 périodes soit 270 heures que je répartirai sur 15 semaines de 17 heures environ en moyenne. Il est bon de noter que le développement se fera de manière itérative-incrémentale pour un tel projet. 4 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 3 Les risques Bien que ce travail de Bachelor se veuille être plus une étude de faisabilité que l'attente d'un produit final fonctionnel, il me parait intéressant de faire une petite analyse quant aux risque de ce projet. Le développement de plugin ayant déjà été fait avec succès par certains étudiants, cette partie ne doit pas poser de problèmes particuliers. Pour ce qui est de la relecture des métadonnées APEX il en va certainement autrement puisque c'est, à ma connaissance, une première dans notre école. Les risques potentiels devraient normalement uniquement changer le cours du projet, nous obliger à faire certains choix ou changements mais la finalité sera toujours de faire une analyse de faisabilité en ayant a disposition un plugin le plus avancé possible. Voici la liste des risques retenus : 1. Impossibilité de relire le référentiel VP avec l'Open API : Les méthodes à disposition ne fonctionnent pas comme on le désire ou la maîtrise de cette Open API est trop difficile. Cette possibilité n'est à vrai dire pas envisageable puisque certains travaux ont été réalisé avec succès quant à la relecture du référentiel VP. Cependant, si le risque se présentait, le présent travail pourrait continuer à se faire puisque l'on privilégie d'abord le sens APEX (lecture) vers VP (écriture). 2. Impossibilité d'écrire dans le référentiel VP avec l'Open API : Les méthodes à disposition ne fonctionnent pas comme on le désire ou la maîtrise de cette Open API est trop difficile. Cette possibilité n'est à vrai dire pas envisageable puisque certains travaux ont été réalisés avec succès quant à l'écriture dans le référentiel VP. Cependant, si le risque se présentait, le présent travail n'aurait plus de sens ou il faudrait envisager d'utiliser un autre outil que VP pour représenter graphiquement nos pages APEX. 3. Impossibilité de relire les métadonnées APEX : Il n'y a pas d'accès possible aux métadonnées APEX, ni par des fonctions PL/SQL ni par une accès direct aux tables ou vues ou alors c'est trop compliqué. Si ce risque ce produisait le projet en soi n'aurait plus de sens car la relecture des métadonnées d'APEX, c'est le cœur du sujet. On pourrait cependant utiliser notre plugin à partir du fichier pivot que serait généré « à la main » et non pas à partir d'une relecture des métadonnées d'APEX. 4. Impossibilité d'écrire dans les métadonnées APEX : Il n'y a pas d'accès possible en écriture aux métadonnées d'APEX, ni par des fonctions PL/SQL ni par une accès direct aux tables ou vues ou alors c'est trop compliqué. Si ce risque ce produisait le projet en soi aurait tout de même un sens puisque l'on privilégie, dans un premier temps, le sens APEX (lecture) vers VP (écriture). 5. Changement de l'Open API dans les futures releases: Si l'Open API venait à être trop fortement modifiée suite à une mise à jour de VP. Dans ce cas, notre plugin pourrait ne plus fonctionner du tout. Cependant il est assez inconcevable que l'éditeur de ce logiciel, même en remaniant complètement son Open API ne se soucie pas de la compatibilité avec les versions précédentes. 6. Suppression de l'Open API dans les futures releases: Si la possibilité d'écrire des plugin pour VP venait à disparaître. Cette idée n'est pas envisageable de la part de l'éditeur d'un tel logiciel. Cependant si cela se produisait, il suffirait de rester avec une ancienne version du logiciel mais avec les problèmes d'obsolescence que cela engendrerait. 7. Lenteur exagérée du processus : Les risque est que le processus de lecture des métadonnées, de 5 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier l'écriture du fichier pivot puis de la représentation de la structure avec VP soit trop lent. Ce risque n'est pas à écarter mais il faudrait que ce processus dure plus d'une minute pour que cela devienne vraiment problématique. Il faudrait alors se concentrer sur les performances et l'optimisation du code au détriment de la clarté et de la maintenabilité de celui-ci. Classement des risques Certain 7. Lenteur exagérée du processus Probabilité à Très probable 4. Impossibilité d'écrire dans les métadonnées APEX plausible 1. Impossibilité de relire le référentiel VP avec l'Open API Peu probable 3. Impossibilité de relire les métadonnées APEX 2. Impossibilité d'écrire dans le référentiel VP avec l'Open API 5. Changement de l'Open API dans les futures releases 6. Suppression de l'Open API dans les futures releases impossible nul Très limité sensible Très important Catastrophique Impact à Selon le tableau ci-dessus, les éléments à risque les plus importants, dans la partie rouge, concernent l'impossibilité d'écriture dans le référentiel VP qui s'avère de fait impossible puisque des travaux ont été menés à bien dans d'autres projets. Quant à la suppression de l'Open API dans des versions futures elle n'est même pas envisageable. 6 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 4 Description des principaux logiciels 4.1 APEX, description Pour rappel ou pour ceux qui l'ignorent APEX2 est un acronyme qui signifie Application Express. C'est un moyen rapide de créer des applications (RAD3) basées sur une base de données Oracle. APEX est fourni gratuitement par Oracle lors de l'achat de licences pour leur base de données mais aussi lors de l'installation de la version gratuite appelé Oracle Express ou Oracle XE. APEX est une application web pour créer des applications web et qui ne nécessite donc qu'un browser et un accès à la base de données Oracle. APEX est en fait aussi une application APEX et est installé automatiquement lors de l'installation de la base de données. D'un point de vue pratique, APEX s'utilise presque uniquement avec la souris, le clavier est uniquement utile pour saisir quelque valeurs, noms de variable ou parties de code. Il est bien sûr possible d'améliorer les applications par de petits fragments de code en PL/SQL, JavaScript ou encore du HTML ou des styles CSS. APEX s'appuie sur les assistants pour guider l'utilisateur lors de la conception de ses applications. De par la rapidité de développement, APEX est souvent utilisé pour le prototypage d'applications. La version utilisée pour ce travail est le version Oracle XE 11g2. La définition d'une application APEX est en fait représentée dans ce que l'on appelle les métadonnées. Les métadonnées sont des données présentent dans la base Oracle mais elles représentent la structure de l'application. Nous avons donc, dans le schéma APEX, des tables pour y stocker des pages, des éléments de page (boutons, navettes, hyperliens, menus, etc.). De plus, des packages et des fonctions PL/SQL spécifiques sont à disposition du développeur pour créer des applications APEX. Ces fonctions sont bien entendu utilisées par APEX mais elles sont aussi disponibles par tout un chacun. Malheureusement ces fonctions sont pas ou peu documentées. Voici un écran APEX représentant les applications présentes dans un espace de travail (workspace) donné : 2 3 [INT 02] [INT 03] 7 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Et voici, depuis SQL-Developer, la vue Oracle contenant la définition de ces applications : Voici à quoi ressemble la partie conception d'une page APEX : 8 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Voici un autre exemple de vue nous renseignant sur les pages d'une application : 9 / 37 Auteur Bel Olivier Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 4.2 Visual Paradigm, description Visual Paradigm et plus précisément Visual Paradigm for UML4 que nous abrégerons par la suite par VP est un outil permettant la conception de diagrammes UML. Les 13 diagrammes de la norme sont supportés mais il est possible de créer encore d'autres diagrammes non UML. La société éditrice de ce produit se nomme tout simplement Visual Paradigm International. Cet outil est bien plus qu'un simple outil de conception de diagrammes. En effet, il est par exemple possible de générer du code à partir de diagrammes ou éléments de diagrammes. Plusieurs langages sont bien entendu supportés tels que Java, C#, C++, etc. Il est aussi possible, à partir de code source de générer les diagrammes UML, notamment des diagrammes de classe. Lorsque nous travaillons dans VP, nous travaillons donc sur un projet VP. Ce projet est composé d'éléments de modèle que nous appellerons aussi le référentiel VP. Ces éléments de modèle (paquetages, classes, attributs, acteurs, etc.) peuvent être représentés graphiquement sur un diagramme approprié. Voici une capture d'écran sur laquelle on peut voir un diagramme de classe à droite et le navigateur de diagrammes à gauche : Voici une vue de l'explorateur de modèles et les éléments du modèle pour un projet donné : 4 [INT 04] 10 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Il est important de comprendre que l'on peut créer des éléments dans le modèle sans forcément les représenter graphiquement. A l'inverse lorsque nous créons des éléments graphiques dans la zone d'un diagramme, l'élément du modèle est forcément créé dans le modèle. Enfin VP nous offre la possibilité de créer ou lire des éléments du modèle et graphiques à partir de plugins écrits en java. Ces plugins utilisent alors une Open API offerte par VP présente dans le dossier lib du répertoire d'installation de l'application. Pour notre projet nous devrons choisir le type de diagramme qui sera le plus approprié pour représenter les pages, régions, liaisons et autres éléments de page composant une application APEX. Le diagramme de communication semble être bien adapté à cette représentation mais une étude plus approfondie devra tout de même être faite à ce sujet. Nous n'allons pas détailler ici l'utilisation de VP mais exposer les points importants pour le présent projet. VP est un programme écrit en Java ce qui fait que les plugins doivent aussi être écrit dans ce langage qui est justement celui utilisé tout au long de ma formation. Sur le site de l'éditeur du logiciel nous pouvons trouver quelques tutoriels pour la mise en œuvre d'un tel plugin. Le détail de l’implémentation sera vu dans la partie pratique du rapport. 11 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 5 Étude d'APEX Nous allons maintenant étudier APEX au niveau des éléments qui nous intéressent, à savoir les métadonnées. Nous allons aussi voir comment y accéder et rechercher les informations qui nous intéressent dans le cadre de notre projet. Nous allons aussi étudier les packages et les fonctions disposition et voir où cela se trouve et comment y accéder. Nous allons aussi voir comment nous pouvons trouver l'information grâce aux exemples à notre disposition. 5.1 Avant de commencer Avant de commencer à pouvoir utiliser APEX dans le cadre de ce projet, il faut bien entendu télécharger la version gratuite d'Oracle. Cette version sera la version 11g2. Une fois cette version installée, nous avons tout naturellement accès à APEX qui est installé par défaut. Pour pouvoir créer une application APEX, il faut disposer d'un espace de travail, d'un nom d'utilisateur et du mot de passe. L'administrateur de la base de données peut créer et donner les accès en question. Chaque utilisateur connecté peut alors créer ses propres applications. 5.2 Structure des métadonnées d'APEX La structure d'une application APEX est en fait stockée dans plusieurs tables de la base de données Oracle. Nous appellerons cette structure les métadonnées d'APEX. Ces métadonnées sont donc des tables et des vues non modifiables sur ces tables et qui peuvent être consultées sans problèmes par n'importe que utilisateur. Pour ce projet, j'ai donc utilisé SQL-Developper pour parcourir et étudier ces métadonnées. En plus de ces métadonnées, nous pouvons aussi voir les packages et fonctions utilisables pour lire, modifier et créer des applications ou éléments d'applications APEX. Ces métadonnées sont la propriété d'un utilisateur particulier appelé APEX_040000 (le nom peut différer selon la version) mais tout utilisateur connecté peut y accéder en lecture écriture et en utilisation pour ce qui est des fonctions PL/SQL. 12 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Oracle ne propose pas de documentation quant à ces métadonnées et il nous incombe donc de tenter de comprendre comment est structurée une telle application. Les pistes principales que j'ai retenues sont au nombre de trois : • Recherche Google. • Étudier le package ApexGen5. • Étudier les fichiers d’exportation d’applications. 5.2.1 Package ApexGen ApexGen, « A utility to generate Oracle Application Express pages based on a PL/SQL API » selon la description de l'auteur. Ce paquetage open-source est en fait un utilitaire permettant de créer des pages dans une application APEX sans être dans APEX, un peu à la manière de notre futur plugin. En étudiant ce paquetage, nous remarquons que l'auteur s'est fortement inspiré des fichiers d'exportation d’application ou de page APEX. Il semble que le projet soit arrêté depuis le 16-07-2009. Plus précisément ApexGen est un utilitaire composé de fonctions PL/SQL qui permet de générer du code PL/SQL. Ce code généré nous permettant de créer des pages pour une application APEX. Autrement dit c'est un générateur de fichier d'importation de pages d'application APEX. Voici la liste des fonctions d'ApexGen : apexgen_pkg • • • • • • init set_option add_report_page add_form_page add_child_region generate A y regarder de plus près, et après avoir lu la documentation contenue dans le fichier zip téléchargé sur le site de l'éditeur, il s'avère que les quelque fonction proposées par ApexGen nous permettent de créer deux type de pages : Les pages de rapport et les pages de formulaire. On peut aussi ajouter une région sur les pages. Le code est très similaire au code contenu dans les fichiers d'exportation 5 [INT 05] 13 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier d'application que nous verrons juste plus loin. Nous remarquons les commandes print permettant d'écrire le code généré dans un fichier. Le fichier pourra ensuite être exécuté et les pages de l'application seront alors importées dans APEX. ApexGen est un package PL/SQL qui possède des fonctions pour générer du code PL/SQL pour créer des pages ou éléments de pages dans une application. De façon un peu similaire, nous devrons, en Java, créer des méthodes qui créeront des pages ou des éléments de pages dans une application APEX. L'étude de ce package peut donc s'avérer très utile pour notre projet de plugin. Voici un extrait d'un fichier généré par ApexGen : 5.2.2 Fichier d'exportation d'application APEX Le résultat d'une exportation d'application APEX est en fait un très volumineux fichier de commande PL/SQL nécessaire pour recréer l'application APEX. L'étude d'un tel fichier nous donne une idée des fonctions à utiliser et des paramètres à leur passer. 14 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Voici un extrait du contenu d'un fichier d'exportation d'application APEX : Dans cet exemple nous voyons le nom du package : wwv_flow_api et le nom de la fonction invoquée : create_flow ainsi que tous les paramètres renseignés et leurs valeurs. Un tel fichier d'export ne fait qu'écrire des données et ne fait en aucun cas de la lecture de données. Pour notre projet, le plus important dans un premier temps c'est de pouvoir lire et comprendre les métadonnées. Pour ce faire, il faut donc plutôt se tourner vers les vues et les tables que nous pourrons interroger. Cette partie sera vue dans la partie pratique de ce rapport. 5.3 Structure d'une application APEX Afin de pouvoir représenter au mieux notre application APEX dans VP et avant d'étudier cette représentation dans VP, il est important de comprendre comment est structurée une application APEX. Une application APEX est en fait composée de plusieurs pages. Un page est composée de zéro ou plusieurs régions. Une région contient zéro ou plusieurs éléments déclencheurs d'une action de redirection (bouton, branchements, hyperlien, etc.) . Par cette description nous comprenons qu'une page est un conteneur de régions et qu'une région est un conteneur d’éléments déclencheurs d'actions. Pour cette analyse nous nous arrêterons aux seuls boutons en tant qu'éléments déclencheurs d'une action de redirection quand bien même il y a d'autres éléments APEX susceptibles de provoquer des redirections. Au niveau de la structure des métadonnées, cette relation conteneur-contenu est en fait représenté par des éléments ayant des id et des éléments ayant des références vers ces id. Une pages possède un id mais ne connais pas les éléments qui la compose. Par contre une région possède aussi un id mais aussi une référence vers la page sur laquelle elle est placée. Voici une représentation des relations entre ces divers éléments APEX : 15 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Les attributs ne sont bien entendu pas tous représentés mais les principaux qui nous permettent de comprendre comment sont faites les relations entre nos divers éléments. Nous voyons qu'une région possède un attribut PAGE_ID qui contient l'id de la page dans laquelle elle est placée. Pour ce qui est du bouton, il possède aussi un attribut nous permettant de savoir sur quelle page il se trouve mais aussi dans quelle région il se situe. Il y a là une petite redondance d'information au niveau du bouton. En effet il semble inutile de connaître sur quelle page il se situe puisque l’information quant à la région est en soi suffisante. Voici une autre représentation de la structure d'une application APEX : 16 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 6 Étude de VP for UML Bien avant de commencer à écrire un plugin ou même de tester quelque plugin que ce soit, il est nécessaire de se pencher sur l'outil qu'est VP. VP c'est, entre autre, un outil permettant de créer des diagrammes UML qui sont au nombre de 13. Les éléments (Acteurs, ligne de vie, packages, classes, etc.) crées dans VP sont en fait stockés dans ce que l'on appelle le référentiel VP et que l'éditeur appelle le modèle. Ces éléments sont bien entendu affichables dans des diagrammes pour le côté visuel. VP offre la possibilité de générer du code dans divers langages à partir de ces schémas UML ou inversement il permet de recréer des schémas à partir de codes sources. Il est intéressant de comprendre comment sont représentés les éléments UML dans le référentiel ou le modèle : Ci-contre nous avons une vue du modèle, la représentation en mémoire du référentiel. Notre projet, la racine du modèle Un objet Frame Un objet Lifeline Un objet Actor Les relation entre les divers objets ne sont pas représentées dans le modèle mais sont en fait mémorisés sous forme de propriétés de ces objets comme le montre la capture ci-dessous. 17 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Donc, pour l'écriture de notre plugin, nous devrons être en mesure de créer les divers éléments dans le modèle. Les éléments crées peuvent bien entendu être visualisées sous forme de diagrammes comme dans la représentation ci-dessous : Lorsque l'on crée des éléments dans le modèle, ils ne sont pas représentés graphiquement alors que lorsque l'on crée les éléments de manière graphique (à la souris et non pas par code), ils sont forcément présents aussi dans le modèle. 18 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Pour notre plugin, nous devrons bien entendu aussi représenter nos éléments de manière graphique. Nous devrons donc, lorsque nous dessinerons le diagramme représentant notre application APEX, créer les éléments du modèle mais aussi les formes représentant ceux-ci sur le diagramme en question. 19 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 7 Quel diagramme choisir ? Nous allons maintenant tenter d'étudier les divers types de diagrammes à disposition et tenter de trouver celui qui nous permet de représenter au mieux les pages de notre application APEX et leur enchaînement. Nous étions partis, lors du choix de ce travail de Bachelor, sur le diagramme de communication qui semble à priori bien adapté pour une telle représentation mais il me semble tout de même indispensable, dans le cadre d'un tel projet, de faire une étude plus approfondie afin d'être certain d'avoir choisi le bon diagramme. En effet, il serait difficilement envisageable de changer de type de diagramme une fois notre plugin écrit et fonctionnel. Il faut noter qu'il ne s'agit pas ici d'expliquer en détail les finesses et particularités de chaque diagramme car il ne s'agit pas d'un cours UML mais nous allons tenter d'en trouver un qui satisfasse à nos besoins en respectant si possible le standard UML. Il est bon de rappeler qu'UML offre un standard de modélisation pour représenter une architecture logicielle et que son utilisation est laissée à l'appréciation de chacun. Donc, nous pouvons dire que l’utilisation d'UML dans le cadre de ce projet consistant à représenter graphiquement l’enchaînement de pages d'une application APEX n'est pas du tout une utilisation abusive de ce standard. 7.1 Les contraintes Avant de choisir quel serait le ou les diagrammes potentiellement utilisables, nous devons définir quels sont les critères de choix pour cette décision. Voici une liste de contraintes : • Notre diagramme doit nous permettre de définir des liens entre l'élément déclencheur d'une redirection (bouton, branchement, etc.) et la page de destination. • Nous devons pouvoir représenter une page d'une manière évidente. • L'élément choisi pour représenter une page doit être un conteneur. • Nous devons pouvoir représenter une région de manière évidente. • L'élément choisi pour représenter une région doit être un conteneur. • Nous devons pouvoir représenter des boutons et autres éléments déclencheurs d'une redirection de manière évidente. La notion de conteneur-contenu est très importante car il faut, lorsque l'on déplace une page de notre diagramme, que les éléments la composant se déplacent aussi avec celle-ci. A priori nous choisirons un diagramme UML parmi les 13 à disposition. Cependant, rien ne nous empêche à en choisir un autre puisque VP for UML nous propose une dizaine d'autres diagrammes divers. 20 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 7.1.1 Les 13 diagrammes UML Voici la liste des 13 diagrammes UML à notre disposition pour ce projet : 1. Use Case Diagram, 2. Class Diagram, 3. Sequence Diagram, 4. Communication Diagram, 5. State Machine Diagram, 6. Activity Diagram, 7. Component Diagram, 8. Deployment Diagram, 9. Package Diagram, 10. Object Diagram, 11. Composite Structure Diagram, 12. Timing Diagram, 13. Interaction Overview Diagram. 7.1.2 Exemple de diagrammes Voici un aperçu des 13 différents diagrammes UML avec leur nom en français. Ces diagrammes ont été élaborés selon mes connaissances et/ou selon les exemples donnés sur le site de l'éditeur6: Use Case Diagram (Diagramme de cas d'utilisation) : 6 [INT 14] 21 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Class Diagram (Diagramme de classes) : Sequence Diagram (Diagramme de séquence) : Communication Diagram (Diagramme de communication) : State Machine Diagram (Diagramme d'automate fini) : Activity Diagram (Diagramme d'activités) : 22 / 37 Auteur Bel Olivier Gestion visuelle de pages APEX avec VP Partie théorique Component Diagram (Diagramme de composants) : Deployment Diagram (Diagramme de déploiement) : Package Diagram (Diagramme de package) : Object Diagram (Diagramme d'objets) : 23 / 37 Auteur Bel Olivier Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Composite Structure Diagram (Diagramme de structure composite) : Timing Diagram (Chronogramme) : Interaction Overview Diagram (Diagramme d’interactions) : Ce diagramme est en fait un méta-diagramme regroupant plusieurs diagrammes de séquence ou d'activité. C'est un moyen d'avoir une vue d'ensemble de plusieurs diagrammes détaillés et les enchaînements entre ceux-ci. Cet enchaînement pourrait nous être utile selon comment nous voudrions représenter l'enchaînement de nos pages APEX. 7.1.3 Remarques Certains éléments de diagrammes se retrouvent dans plusieurs diagrammes tels que : • Actor (acteur) • Class (classe) • Lifeline (ligne de vie) • Package (Paquetage) • etc. Les package sont même disponibles pour tous les diagrammes UML. Ils sont très intéressants pour notre projet puisque ce sont des conteneurs et qu'un package peut contenir un autre package. Certains diagrammes sont des spécialisations d'autres diagrammes selon Wikipedia7. Certains diagrammes appartiennent donc à la même famille que d'autres diagrammes et ne diffèrent que peu. Par exemple le diagramme de classe et le diagramme d'objet sont assez proches. 7.1.4 Les outsiders Suite à cet aperçu des différents diagrammes nous pouvons d'emblée en éliminer certains qui ne 7 [INT 14] 24 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier satisfont évidemment pas à nos besoins. En voici la liste et les raisons : Diagramme Raisons Use Case Diagram. Les cas d'utilisations, sont de forme ovale et ne sont pas des conteneurs. Ils pourraient éventuellement représenter les boutons mais ils ne peuvent être reliés à des system ou package autrement que par des generic connector. Sequence Diagram. Les lifeline et les éléments à disposition ne sont de toute évidence pas adaptés à notre représentation. State Machine Diagram. Diagramme trop limité, pas possible d'avoir des éléments conteneurs. Component Diagram. Stéréotype <<component>> impossible à supprimer, et symbole toujours présent. Cela alourdi inutilement le diagramme. Deployment Diagram. Utilise aussi des composants. Donc même remarque que ci-dessus. Timing diagram. Totalement inadapté. 7.1.5 Les favoris Parmi les diagrammes qui semblent être de bons candidats nous pouvons citer : 1. Class Diagram, 2. Communication Diagram, 3. Activity Diagram, 4. Package Diagram, 5. Object Diagram, 6. Composite Structure Diagram, 7. Interaction Overview Diagram. Nous allons donc tenter de déterminer quel est le diagramme le plus approprié grâce à ce tableau et notre liste de critères : Diagramme Class Diagram 8 Représentation d'une L'élément pour page de manière la page est un évidente ? conteneur. Représentation d'une région de manière évidente. Oui, class ou package. Oui, class ou package Oui, package. Selon les éléments utilisés pour les pages et les boutons. 25 / 37 L'élément pour la région est un conteneur. Représentation d'un bouton et autres déclencheurs d'action de manière évidente. Liens entre boutons et pages possibles8 Oui, package Oui, class Oui, plusieurs Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier L'élément pour la région est un conteneur. Représentation d'un bouton et autres déclencheurs d'action de manière évidente. Liens entre boutons et pages possibles Diagramme Représentation d'une L'élément pour page de manière la page est un évidente ? conteneur. Représentation d'une région de manière évidente. Communication Diagram Oui lifeline ou package. Oui, package. Oui, lifeline ou package. Oui, package. Oui, lifeline. Oui, plusieurs. Oui, activity , object node , action ou package. Oui, package ou activity. Oui, activity , object node , action ou package. Oui, package ou activity. Oui action ou object node. Oui control flow. Activity Diagram Package Diagram Oui, class ou package. Oui, package. Oui, class ou package. Oui, package. Oui, class . Oui, dependency. Object Diagram Oui, class, instance ou package. Oui, package. Oui, class, instance ou package. Oui, package. Oui, class ou instance. Oui, dependency. Composite Structure Diagram Oui, class, attribute ou package. Oui, package ou class. Oui, class, attribute ou package. Oui, package ou class. Oui, class ou attribute. Oui, dependency. Interaction Overview Diagram Oui, activity , object node , action ou package. Oui, package ou activity. Oui, activity , object node , action ou package. Oui, package ou activity. Oui, action ou object node. Oui, control flow. A propos de ce tableau, il est intéressant de remarquer que les 7 diagrammes ci-dessus pourraient faire l'affaire et que dans tous les cas ils répondent à tous nos critères. Au niveau des représentations des liens entre les pages, c'est aussi toujours possible mais notons que dans tous les cas il y a le connecteur générique qui connecte tout avec tout si besoin est. Puisque les 7 diagrammes peuvent à priori faire l'affaire, nous allons tenter d'établir d'autres critères pour affiner notre sélection. A priori il s'agira de critères esthétiques et ceux concernant les liaisons. En effet l'utilisation d'un élément de type Dependency (dépendance) n'est pas forcément logique puisque nous ne pouvons pas parler de dépendance entre un bouton et une page appelée mais plutôt de liaison (Link) ou de message envoyé. Parmi les diagrammes comportant plusieurs possibilités quant aux liaisons, nous pouvons retenir les diagrammes les plus connus que sont le diagramme de classe et le diagramme de communication. Le diagramme d'objet peut être d'emblée écarté puisqu'il est très proche du diagramme de classe mais en plus limité quant aux relations offertes entre les éléments. Voici la liste de ces critères pour les 6 diagrammes restant : Élément de modèle pour représenter... Nouveaux critères : Diagramme Page Région Bouton Esthétisme Lien logique. Lien pratique. Class Diagram package package class Bon Aucun Usage ou Dependency. Communication Diagram package package lifeline Bon Aucun9 Dependency package activity object node ou action. Bon Aucun Seulement Generic connector. Activity Diagram 9 Un lien Link + Message a pu être fait par programmation mais pas par l'interface VP. 26 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Élément de modèle pour représenter... Nouveaux critères : Page Région Bouton Esthétisme Lien logique. Lien pratique. package package class Bon Aucun Seulement Generic connector Composite Structure Diagram package package ou class. class, attribute Bon Aucun Dependency Interaction Overview Diagram package. activity object node ou action Bon Aucun Generic connector Diagramme Package Diagram Au terme de cette analyse nous ne sommes toujours pas en mesure de sélectionner le bon diagramme. Au niveau esthétique, ils se valent, à savoir que l'on prendra forcément un package pour représenter une page APEX. La région peut, selon le diagramme choisi, être représentée par un package, une class ou une activity. Pour ce qui est des liens entre les pages, nous ne pouvons malheureusement pas choisir de lien en rapport avec la logique d’enchaînement. Nous ne disposons que de Dependency ou Generic connector. Nous aurions bien voulu pouvoir choisir soit un link avec Message ou un control flow mais impossible vers un package, quel que soit le diagramme. 7.1.6 Notre choix Les premiers tests de programmation ayant été fait sur la base d'un diagramme de communication, il serait tentant de conserver celui-ci. Cependant le diagramme d'activité peut s'avérer aussi très intéressant de par le fait que l'on peut utiliser un autre élément que la package pour représenter une région à savoir l'activity. Les liens seront alors à faire avec des generic connector. Voici ce que donne une représentation d'une application APEX avec les deux digrammes potentiels : Diagramme de communication Composé ainsi: Page: package Région: package Bouton: lifeline Liens: dependency Diagramme d'activité Composé ainsi: Page: package Région: activity Bouton: action Liens: generic connector Au terme de cette étude nous allons donc en rester au diagramme de communication puisque rien 27 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier ne va à l'encontre de cette idée et que nos premiers tests ont été faits avec ce diagramme. 7.2 Les autres diagrammes non UML Parmi les autre diagrammes proposés par VP for UML, il y a aussi quelque diagrammes non-UML tels que : 1. Diagramme de critères (Exigences), 2. Diagramme de base, 3. Diagramme entité-relation, 4. Diagramme ORM, 5. Diagramme de définition de bloc, 6. Brainstorm. Après avoir eu un bref aperçu de ces diagrammes, il ne semble pas utile de les détailler puisqu'ils ne correspondent pas à nos attentes et ne sont parfois que des variantes spécifiques des principaux diagrammes UML. 28 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 8 Étude du diagramme retenu Le diagramme que nous avons donc retenu au terme de cette étude est donc le diagramme de communication. Les éléments que nous allons retenir pour notre représentation comporterons des stéréotypes 10 afin d'identifier clairement leur utilité au niveau du diagramme et ainsi en améliorer la compréhension. Lorsque plus tard nous seront en mesure de générer une application ou partie d'application à partir de notre plugin, les stéréotypes nous permettrons d’identifier de manière plus stricte nos divers éléments du diagramme. Les stéréotypes retenus sont donc les suivants : Stéréotype Usage <<Page APEX>> Page <<Bouton APEX>> Région <<Région APEX>> Bouton <<Branchement APEX>> Branchement <<Liste APEX>> Liste <<Breadcrumb APEX>> Breadcrumb <<Bar nav APEX>> Barre de navigation Les éléments retenus pour représenter nos pages, avec leur stéréotype, éléments de pages et liaisons sont les suivants : 10 [INT 15] 29 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Élément VP Correspondance APEX Package (Ensemble) Page Package (Ensemble) Région Lifeline (Ligne de vie) Lifeline Lifeline Lifeline Lifeline Dependency Auteur Bel Olivier Bouton Branchement Liste Breadcrumb Barre de navigation Redirection vers une page Generic connector ou Dependency Déclenchement d'un branchement par un bouton Notons que, en plus des stéréotypes pour nous aider à comprendre le diagramme et la structure de notre application, nous pourrons, par la suite, ajouter des couleurs de remplissage ou de contour pour nos divers éléments selon l'exemple ci-dessous : 30 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 8.1 Le choix du Dependency Plus en avant dans notre étude nous avions affirmé que le dependency, autrement dit la dépendance n’était pas franchement appropriée pour représenter nos enchaînements de pages. Nous aurions préféré utiliser le lien avec message ou le control de flux qui paraissaient être plus en rapport avec nos enchaînements. En effet il semblait absurde d'affirmer qu'un bouton et une page dépendent l'un de l'autre. Cependant, après plus mure réflexion il n'est pas faux d'affirmer que l’existence d'un bouton sur une page donnée dépend de l’existence d'une page vers laquelle il nous redirigera. En ce sens nous sommes en accord avec le paradigme UML. Nous nous contenterons certainement aussi de la dépendance pour relier un bouton et un branchement comme sur l'Illustration 1 de la page suivante. 8.2 Étude des boutons et branchements Maintenant que nous sommes en mesure de créer nos diagrammes, posons-nous quelques questions au sujet des boutons et des branchements. Il faut savoir que tous les boutons ne possèdent pas forcément une adresse de redirection vers une autre page. La question se posera alors de savoir si l'on affiche tous les boutons ou seulement ceux qui ont une adresse de redirection. Concernant les branchements, il en sera de même. Cependant il est bon de noter que le 31 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier déclenchement d'un branchement se fait souvent à partir d'un bouton. La question qui nous vient immédiatement à l'esprit est de savoir si l'on doit alors faire ressortir cette dépendance entre ces éléments. Si oui, il faut alors représenter les boutons en question et aussi un lien entre celui-ci et le branchement. Le diagramme suivant illustre cette idée : Le bouton CANCEL redirige directement vers une autre page. Le bouton SAVE par contre déclenche un branchement qui, lui, redirige vers une autre page. Illustration 1 Il est aussi possible de choisir autre chose qu'un dependency pour cette liaison. On pourrait utiliser soit une link + message soit un generic connector. 8.2.1 Les choix Nous avons maintenant plusieurs choix à faire parmi lesquels : • Présence de tous les boutons ou les seulement ceux qui redirigent directement ? • Présence des boutons qui déclenchent un branchement ? • Affichage du lien entre bouton et branchement ? • Si oui, type de lien ? Voici un petit tableau qui va nous permettre de faire nos choix : Affichage Pour contre Tous les boutons • Tout est là. • Surcharge le diagramme. • Plus lent à générer le diagramme. Bouton vers branchement • Clarté, on comprend mieux le fonctionnement, sur quelle action le branchement se fait. • Complexité. 32 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Affichage Pour Auteur Bel Olivier contre Lien type Dependency vers branchement. • Standard UML, on peut affirmer aussi que l’existence du branchement dépend du bouton qui le déclenche. • Confusion entre les liens entre les pages et celui entre le bouton et le branchement. (Vite remplaçable par un lien de type generic connector.) Lien type link + message vers branchement. • Différenciation du type de lien par rapport aux liens vers les pages. • Pas facile à mettre en œuvre selon les tests faits avec Open API. • Bugs constatés au niveau de VP aussi. Lien type generic connector vers branchement. • Différenciation du type de lien par rapport aux liens vers les pages. • Ce connecteur n'est pas très UML de par le côté générique. (Vite remplaçable par un lien de type dependency) Selon le tableau ci-dessus, les choix que nous allons faire sont les suivants : • Nous allons donner le choix de d'afficher ou non les boutons qui ne redirigent pas ou ne déclenchent pas branchement. • Même si c'est plus complexe à mettre en œuvre nous représenterons des boutons qui déclenchent un branchement. • Nous allons si possible utiliser le generic connector puisqu'il se distingue des dependency utilisés, eux, pour les pages. De plus ils seront vite remplaçables par des dependency. De plus, de par le fonctionnement erratique des link avec message nous oublierons cette solution. 8.3 Les groupes de pages Lorsque nous travaillons avec APEX sur une application comportant un grand nombre de pages, il nous est possible de créer des groupes et d'y placer les pages désirées en fonction de nos critères. Ceci peut être très utile lorsque plusieurs personnes travaillent sur une même application, chacun s'occupant de sa partie et ne s'occupant que des pages du ou des groupes le concernant. Cette représentation serait intéressante à conserver au niveau de VP. En effet, puisque les développeurs APEX choisissent de créer des groupes de pages, il semble logique de reprendre cette logique et de représenter un diagramme par groupe de pages. Voici au niveau du modèle VP ce que donne la structure si l'on a deux diagrammes composés d'une page chacun : 33 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Selon la structure du modèle ci-contre, chaque diagramme est un élément de type Frame. Les éléments composant nos pages ne sont pas imbriqués dans le Frame et il n'est pas possible de forcer cela. Cependant, nous pouvons alors créer des éléments Model pour représenter nos groupes et y placer nos pages correspondantes comme le montre la structure du modèle ci-contre. Par élément Model il faut comprendre qu'il s'agit en fait d'un élément de sous-modèle. Les éléments Model nous permettent seulement de regrouper nos pages au niveau du modèle. Les affichages des pages des divers groupes se feront dans les diagrammes respectifs et pourront même être représentées toutes à la fois dans un autre diagramme plus général. Voici les captures d'écran des 3 diagrammes : 34 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier Puisque nous devons représenter les enchaînements de nos pages, il va falloir aussi le faire même si une page d'un groupe peut nous ramener à une page d'un autre groupe. Dans ce cas, la représentation de la page en question apparaîtra dans deux, voire plusieurs groupes. Il faudra voir la faisabilité de cette gestion de groupes et des diagrammes y relatifs dans la partie pratique. Si nous voulons permettre la représentation de nos groupes de pages dans des diagrammes différents, il va bien entendu falloir rechercher cette information au niveau de APEX. Cette recherche d'information se fera dans tous les cas même si elle ne sera peut-être pas prise en compte dans VP de par sa complexité. A noter que si des pages ne font partie d'aucun groupe, nous créerons de toute manière un groupe par défaut pour celles-ci. 35 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 9 La modélisation de nos objets Java Nous savons maintenant que, au niveau de VP, nos pages contiennent ou sont composées de régions, que ces mêmes régions contiennent des boutons. Nos pages contiennent aussi des branchements qui ne sont, elles, pas dans des régions. Nous savons aussi que nos pages seront parfois dans des groupes de pages, parfois pas. Reste maintenant à modéliser cette structure. Comme un projet est composés de groupes de pages, il semble logique que la classe Project soit composés d'objets de class Group. Cette composition se fera sous la forme d'une collection d'objets Group. Nous parlons ici plutôt de composition et non pas d'agrégation puisque si un projet est supprimé, les objets englobés le seront aussi. En effet, l'existence d'une page par exemple n'a pas de sens si l'application n'existe plus. Une page sera aussi composée de branchements (Branch) et de régions (Region). Une Region sera composée de Button. Selon ce modèle, il sera aisé de parcourir tous nos objets en partant de la classe racine Project. Voici une illustration de ce modèle : Dans le modèle ci-dessus, les éléments actifs sont donc les boutons et les branchements. Cependant, par la suite, il faudra faire avec d'autres composants pour représenter tous les cas possibles. Mais par souci de de clarté nous nous sommes arrêtés à ces deux seuls éléments. Par souci de simplification, les pages ne faisant pas partie d'un groupe seront tout de même représentées comme faisant partie d'un groupe mais que nous appellerons NOGROUP par exemple. Ainsi notre structure en mémoire sera comparable à la figure ci-dessous : 36 / 37 Gestion visuelle de pages APEX avec VP Partie théorique Auteur Bel Olivier 10 Nouveau diagramme ou diagramme existant ? Maintenant que le type de notre diagramme est déterminé, que les éléments de diagrammes sont définis par rapport aux éléments correspondant dans une application APEX et que les types de relations sont eux aussi déterminés, il nous reste encore à déterminer le principe de fonctionnement de notre plugin. A savoir si l'on partira d'un diagramme existant ou si le diagramme sera créé. Si l'on part du postulat que notre plugin permet seulement de lire les données d'une application APEX et de les représenter dans VP, rien ne nous empêche de créer les diagrammes au moment de l'exécution. Rien ne nous empêche non plus de partir d'un diagramme vide. Par contre si notre plugin devait être en mesure de faire une synchronisation entre APEX et VP, dans les deux sens, alors il serait nécessaire de partir d'un diagramme existant s'il en était un ou de le créer si besoin. Pour ce projet, nous nous contentons principalement de lire des métadonnées APEX et de les représenter sous forme de diagramme VP. Donc nous avons le choix. Cependant, comme nous avons prévu de gérer les groupes de pages et de ne représente qu'un groupe de pages par diagramme, il semble logique de laisser au plugin le soin de la création des diagrammes selon leur nombre qui est défini par l'application APEX à représenter. 37 / 37