Home

36 - Lirmm

image

Contents

1. creation d un agent e Cr ation de plugins L action NewPluginAction provoque l ouverture d un wizard voir partie apprentissage de cr ation d un nouveau plugin madkit Il a fallu lancer cette action dans la m thode run de la classe ActionTranscript mais cela ne suffisait pas car apr s sa cr ation le nouveau projet n tait pas pr sent dans l arbre du Designer Pour r aliser la mise jour l aide de la r flexivit on lance PluginAgent qui se charge de signaler au Designer qu il y a un nouveau projet Voici le code 19 Class lt gt agentClass EclipseMadkitClassLoader getInstance loadClass madkit system PluginAgent Constructor lt gt cons agentClass getConstructor new Class Object agent cons newlnstance new Object 0 Method initMeth agentClass getMethod init new Class File class File newFile new File new File MadKitData getMadKitRoot MadKitData MADKIT_PLUGIN_DIR pluginName initMeth invoke agent newFile launchAgent agent Et pour finir il faut modifier le projet pour qu il soit reconnu comme projet java par Eclipse cette op ration est d crite plus haut New Madkit plugin wizard Madkit Plugin General Data This page allows the user to enter the name and type of the new plugin Plugin name testPlugin Plugin type madkit madkit turtlekit Wizard de cr ation d un plugin 20 e Cr ation d agent
2. agent MadKit a t mis en place pour pouvoir interagir dans l environnement Eclipse c est dire contribuer son aspect visuel Pour mettre en place un tel agent il faut respecter les sp cifications suivantes 1 C t Madkit Cet agent doit poss der e une variable eclipseObject de type Objet e Un constructeur qui prend un Object en param tres et initialise eclipseObject avec ce param tre e La m thode suivante public void sendEclipseRequest Class lt gt types Object objects int linelndex 0 try String clsName if eclipseObject null System out println Null argument received Activation aborted return linelndex clsName eclipseObject getClass getName ClassLoader ecl eclipseObject getClass getClassLoader Class agentClass ecl loadClass clsName linelndex Method testMeth agentClass getMethod dispatchAction types linelndex testMeth invoke eclipseObject objects catch Exception ex System out println gt gt reflection error lineIndex ex printStackTrace Note l agent PluginDesignerAgent est le seul qui impl mente cette sp cification au moment de l criture 34 Exemple class TestEclipseAgent extends Agent protected Object eclipseObject TestEclipseAgent Object o clipseObject o wait 3000 sendTest public void sendEclipseRequest voir la m
3. onnions pas avant un test par un utilisateur non concern directement par sa programmation Pendant la finalisation du projet une version a t envoy e nos tuteurs pour la tester sur leur machine 24 3 3 Objectifs atteints Nous avions deux principaux objectifs au d but de ce TER qui taient d int grer les vues principales de Madkit dans Eclipse puis de pouvoir diter des fichiers appartenant au plugins dans l diteur Eclipse en profitant de toutes les possibilit s qu il nous offre On peut dire que ces objectifs sont pratiquement enti rement satisfaits En esp rant que cela incite maintenant utiliser Madkit sous sa nouvelle forme de plugin Eclipse 3 4 Am liorations possibles Par manque de temps certaines op rations n ont pas t effectu es et font partis d am liorations envisageables Une premi re et assez utile serait la gestion de l ouverture et de l dition dans Eclipse des fichiers lanc s partir de la vue Explorer comme cela est possible sur le Designer Nous penserions galement int grer le contenu de la fen tre propri t s dans le wizard Une autre serait de sortir les boutons du designer et les placer dans la barre d outils d Eclipse plus de place disponible permettant une extension des possibilit s plus importante Bien videmment nous ne les avons pas toutes imagin es d autres pourraient s rement tre propos es 25 Glossaire Ant pro
4. d tailler le mode de fonctionnement pour ins rer un wizard Eclipse dans un plugin puis nous nous attarderons plus pr cis ment sur notre application pour les plugins puis pour les agents On utilise la m me d marche que pour les perspectives et les views c est dire l ajout d une extension dans p ugin xml lt extension point org eclipse ui newWizards gt lt wizard class madkit wizards PluginWizard hasPages true icon icons plugin gif id madkit wizards PluginWizard name MadKit Plugin Wizard gt lt extension gt l attribut nouveau est hasPages o l on indique si le wizard poss de au moins une page On va voir par la suite ce qu est exactement une page 18 On code ensuite la classe qui d finit le wizard Celle ci h rite de la classe abstraite Wizard et impl mente l interface NewWizard Nous red finissons deux m thodes tr s utiles de la classe Wizard qui sont o addPages c est ici que l on ajoute nos pages notre wizard public void addPages page new AgentWizardPage selection target d claration d une page addPage page ajout de la page o pertormFinish c est ici que l on g re les actions effectuer lorsque l utilisateur a fini de naviguer travers les pages du wizard en r sum quand il appuie sur le bouton de fin public boolean performFinish try MadKitFacade createAgent agentName antTarget pluginName agentType extension
5. Master Informatique Ann e universitaire 2007 2008 UNIVERSIT MONTPELLIER 2 ANSE OT THLE Rapport de projet Plugin Madkit pour Eclipse Encadrants M Jacques Ferber M Tiberiu Stratulat Groupe n 10 Matthieu Carrat Matthieu Gaufr s Guilhem Molla Dimitri Prikhodko SOMMAIRE Introduction 1 Analyse de l existant 1 1 Mise en marche 1 2 Apprentissage 2 Am liorations 2 1 Les perspectives et les views 2 2 Cr ation de projets Java 2 3 Communication inverse 2 4 Modification du Designer 2 5 Modification des actions du plugin 2 5 1 Les boutons du Designer 2 5 2 Edition des fichiers source dans l diteur d Eclipse 3 Bilan critique 3 1 Organisation 3 2 Tests r alis s 3 3 Objectifs atteints 3 4 Am liorations possibles Glossaire R f rences Remerciements Annexe Introduction Ce document va essayer de pr senter une bonne partie de notre travail r alis au cours de ce TER Le projet consistait en la r alisation d un plugin sous Eclipse permettant d aider la r alisation de programmes orient s agents sous Eclipse ces agents fonctionnant sur la plate forme MadkKit Le rapport se d compose en plusieurs parties les principales traitant de nos d buts la mise en marche avec la d couverte des plugins existants adaptation des points importants de notre apprentissage n cessaires la r alisation du projet les nouve
6. a aucun nom d agent indiqu si celui existe d ja ou si le plugin cible n est pas un projet Madkit Une fois les informations sur l agent saisies l action principale de performFinish consiste a demander a Madkit de cr er cet agent 21 ou No plugin selected G Select a plugin first pop up si aucun plugin n est s lectionn Madkit Agent Wizard MadKit Agent Data Agent name must be specified Agent type standard java Agent name Finish Wizard de cr ation d un agent 22 2 5 2 Edition des fichiers source dans l diteur d Eclipse Pour que les fichiers sources java s ouvrent dans Eclipse il fallait utiliser l action correspondante en y rajoutant un param tre le nom du fichier en constructeur Cela avait pour effet de faire ce que l on souhaitait part que nous ne pouvions pas utiliser les fonctionnalit s int ressantes d Eclipse car le fichier tait consid r comme ne faisant pas partie d un projet Donc on r cup re le dossier racine du projet v rifie si il n est pas consid r comme projet java et on cr e un nouveau projet dans ce dossier on a vu auparavant sa m thode de construction 23 3 Bilan critique 3 1 Organisation Pour faciliter le suivi des mises jour d s que nous avions une version fonctionnelle nous nous sommes servi d un serveur syn Ce dispositif permet de facilement r cup rer ou envoyer des mises jour Il contr le au
7. ait qu ce moment l la vue java poss dait les vues Madkit plus de perspective Madkit m me lorsque l utilisateur ne souhaitait seulement d velopper un projet java et non Madkit Finalement en remettant la perspective Madkit avec la vue Package Explorer en plus nous sommes arriv s ce que nous d sirions sans avoir tendre celle de Java 12 Ele Edt Navigate Search Projet Madkt Run Window Hep De PQ 4 fr Fs 18 Package Explorer ff Group Observer View 1 avahome fe MadktEcipsePlugin 5 5 ouai ELA Mat 8 Java Q Location file C madkit4 1 3 madkit4 1 3 docs index html CA Madkit Documentation gt G Manuals amp eri cf Plugins Development Kit Version 4 1 Olivier Gutknecht Jacques Ferber Fabien Michel MadKit is developped by the Mz B plugins amp 8 warboto4 o BE tutorial Documentation 85 demos amp 85 Javahome o 8 MadChat L W B distributedbees amp matketorg a Tasks D output view 38 Explorer View o B madkitapplet agent gui class madkit system MadkitOutputGUI ola jagent gui class madkit explorer ExplorerGUI BG template lt Kemel gt Designer Explorer Agent Activated o Midikit amp 8 turlesimulation BE connector o 8S truc amp ouai amp 8 groupe2 Save as Clea
8. ans le nouveau constructeur bloquer l affichage du panneau ceci gr ce la m thode setVisible boo ean qui permet de ne pas dessiner le composant l invoquant Pour les deux autres utilisations de la vue propri t s on se rend compte qu elles font toutes les deux appel la m thode showPlugin String name nous avons donc d surcharger celle ci pour que une fois les informations sur le plugin afficher r cup r es elle montre la vue propri t s dans une nouvelle fen tre Puis afin de modifier le comportement nous avons galement red fini les fonctions build et actionPerformed Pour pouvoir ouvrir un fichier source dans Eclipse nous avons fait h riter des classes de P uginTree et de FEditNode en y red finissant les actions prendre 17 2 5 Modification des actions du plugin Une fois qu on a pu tablir la communication entre Eclipse et l environnement Madkit il nous fallait adapter des nouvelles fonctionnalit s d Eclipse au Designer 2 5 1 Les boutons du designer Les boutons du Designer permettent la cr ation de nouveaux plugins ou agents de plusieurs types java scheme Le Designer poss de d j ces fen tres pour assister la cr ation mais il tait souhaitable pour ce plugin que l agent lance des wizards Eclipse Il nous tait demand d utiliser des wizards le plus g n rique possible dans le souci de faciliter une extension future Nous allons tout d abord
9. bserver View Cette vue se situe dans la partie gauche au dessus du Designer cot de l onglet Package Explorer Elle permet d observer l organisation g n rale c est dire les communaut s groupes et r les et les v nements qui se d roulent dans MadKit par exemple la cr ation de groupes les agents qui entrent ou quittent un groupe Cette vue est divis e en deux parties Celle du haut permet de voir tous les membres de tous les groupes cr es dans les diff rentes communaut s La partie public est celle qui repr sente les agents utilis s par Madkit Celle du bas permet de voir les diff rents messages chang s entre chaque agent Il faut r aliser le fait que chaque fonctionnalit de Madkit est un agent donc elle change aussi des messages On peut voir sous l onglet Actions les v nements qu elles ont g n r s o DocView Cette vue situ e droite de l environnement Eclipse permet d avoir une documentation compl te sur Madkit Il y a le d tail de toutes ses fonctionnalit s ainsi qu une API compl te sur toutes les librairies n cessaires pour la programmation orient e agent en utilisant Madkit Elle est pr sent e sous forme d une page HTML d coup e en deux parties Celle de gauche avec les grands chapitres de la documentation et droite avec le corps du document 33 Manuel pour le d veloppeur voulant modifier le plugin MadKit pour Eclipse Un nouveau type d
10. code de l agent Le probl me est que dans SWT un seul thread peut avoir acc s aux ressources Ul donc une invocation n est pas possible depuis un autre thread e Utiliser la synchronisation wait notify c est dire attendre un objet synchronis que l on passe a l agent quand une action se produit l agent devrait faire notify sur cet objet Cette solution n a pas fonctionn car Java interdit de notifier ou attendre un objet qui n appartient pas au thread Solution Actioninterpreter La solution que nous avons trouv e consiste lancer l agent diff remment avec un constructeur qui prend un objet de notre environnement d ex cution d Eclipse en parametre Cet objet est une instance de la classe Action nterpreter qui poss de une m thode nvokeAction qui prend une ou deux cha nes de caract res en param tre selon les actions et qui lance l ex cution du code correspondant l int rieur du thread Eclipse qui s occupe de lUI m thode Display asynchExec Runnable Du cot de l agent pour une meilleure r utilisabilit on impl mente la m thode sendEclipseRequest qui par r flexivit va r cup rer la classe et le classloader de l objet Eclipse Ensuite avec ce classloader on charge la classe appropri e et on appelle la m thode statique nvokeAction sur cette classe avec les param tres variant selon l action que l on veut ex cuter Donc en red finissant actionPerformed dans notre GUI h
11. d entrer le nom et le type de ce dernier Une combo box permet le choix entre diverses caract ristiques qui vont g n rer des codes diff rents Ceux finissant par GUI seront pourvu d une interface graphique en plus de la console Une fois l agent cr en cliquant sur Create il sera plac dans le dossier src madkit nomduPlugin o il pourra alors tre modifi dans Eclipse en double cliquant dessus dans la vue Designer ou dans Package Explorer La sauvegarde des modifications se fait simplement en cliquant sur File et Save de l environnement de programmation Il sera alors possible d utiliser les aspects pratiques d Eclipse Raccourcis et aide la programmation pour des agents Java cr s directement sous Eclipse avec ce plugin ou alors par le logiciel Madkit o Output View Cette vue permet d avoir le compte rendu des actions effectu es par les fonctionnalit s de Madkit sous Eclipse Pour ceux qui utilisent couramment Eclipse on peut dire que cette vue est un quivalent de la vue Console Elle se situe dans le bandeau en bas Activ e elle permettra de voir les d tails et le succ s des actions effectu es ou les probl mes de compilation et les exceptions lev es C est une aide a la programmation et surtout pour comprendre les erreurs effectu es Il est possible de sauvegarder tout le texte qui y est marqu en cliquant sur le bouton Save as qui cr era un fichier texte txt a partir
12. ddView org eclipse jdt ui PackageExplorer topLeft addView madkit views GroupObserverView Dans cet exemple on ins re deux vues Package Explorer vue d j existante dans Eclipse et Group Observer vue que l on a cr e Dans notre cahier des charges l un des objectifs tait d int grer dans Eclipse les principales vues de Madkit La perspective Madkit tait d j d finie avec une vue Designer Mais cette vue n tait pas conforme a notre souhait celui de faire utiliser a nos vues les agents Madkit on conserve ainsi la philosophie de Madkit bas e sur l agent En effet cette vue essayait de reproduire ses fonctionnalit s mais n avait aucun rapport avec l agent Designer de Madkit propre arborescence propres actions autre design e Nous avons donc cr une nouvelle vue Designer puis les suivantes Documentation Explorer Group Observer et Output Il est important de noter toutefois que la vue Designer n utilise pas l agent standard d velopp dans Madkit mais un agent Designer sp cialement adapt pour Eclipse Les explications sont d velopp es dans une autre partie qui se trouve dans la suite de ce rapport Cela pour laisser la plupart du travail Eclipse et non a Madkit Nous allons nous int resser dans cette partie aux tapes n cessaires la cr ation puis l ajout d une nouvelle vue 10 On d clare une nouvelle extens
13. du contenu de celle ci permettant de garder une trace de tout ce qui s est pass car cette fen tre se remet z ro quand on quitte et red marre Eclipse Il est aussi possible d effacer tous les messages qu il y a dans la vue en pressant sur le bouton Clear output si celle ci est trop encombr e o Explorer View C est comme son nom l indique l explorateur pour Madkit Il permet de voir facilement tout ce qui se situe dans le dossier de Madkit Il se situe en bas a cot de la vue Output View On peut y faire des recherches en utilisant la commande Find du menu File et en entrant le fichier ou dossier recherch Le nom la taille la date de derni re modification si c est un dossier ou pas et le chemin absolu seront affich s sous forme de liste Le menu File permet aussi de cr er de nouveaux dossiers avec Create Folder et d en effacer avec Delete Folder Le menu Edit de copier couper et coller des fichiers et des dossiers d un endroit a un autre dans le dossier de Madkit en utilisant les commandes copy cut et paste La commande Detail du menu Display permet d afficher les d tails de tout ce que contient le dossier s lectionn On peut lancer des agents directement par cette vue Par contre on ne peut pas modifier de fichiers java directement de cette vue sous Eclipse il faut passer par le Designer ou le Package Explorer 32 o Group O
14. e ceux ci se rajoutent dans le menu principal d Eclipse Exemple New gt Other gt Madkit gt Madkit Plugin Ceux ci sont donc visibles et lan ables de n importe quelle perspective La gestion de la cr ation d un plugin n cessitait d tre en perspective Madkit sinon cela g n rait une exception un objet ne se retrouvant pas initialis Nous avons donc mis en place un systeme de switch entre les perspectives passer de la perspective initiale celle de Madkit lors de l utilisation du wizard de la m me mani re que ce qui est fait par Eclipse lorsque l on cr e un projet java par exemple Ce changement de perspective est r alis lors de l initialisation du wizard public void init IWorkbench workbench IStructuredSelection selection Ery workbench showPerspective org eclipse ui madkitPerspective workbench getActiveWorkbenchWindow Affichage de la perspective Madkit dans le workbench courant catch Exception ex Erreur lors du changement de perspectiv e Ev nements souris et build Ensuite deux probl mes nous paraissaient particuli rement urgents a corriger au niveau du Designer permettant la gestion des plugins Madkit cr s o le fait que les v nements souris n taient plus du tout g r s o la construction compilation d un projet cr via Madkit aboutissait sur un chec Nous avons pass deux jours sur ces probl mes Nous nous so
15. e tait bien entendu indispensable cr ation de p ugins perspectives vues wizards gestion des projets sous Eclipse Madkit Il a t essentiel que nous comprenions et tudions en profondeur le fonctionnement de la plateforme Madkit la philosophie o tout est agent ses classes principales sa programmation En effet comme nous le verrons par la suite nous avons modifi tendu des agents ce qui implique un minimum de bases sur ces derniers points Nous allons maintenant pr senter les nouvelles fonctionnalit s ou extensions du plugin Eclipse 2 Am liorations 2 1 Les perspectives et les views Au lancement d Eclipse une seule fen tre s ouvre contenant son workbench environnement de travail Celui ci contient des perspectives Avec ce plugin une sera d di e pour travailler des projets Madkit Pour cr er une nouvelle perspective il faut tout d abord ajouter une extension notre fichier p ugin xm Tout plugin Eclipse poss de un fichier plugin xml o sont d crites ses extensions Le logiciel l utilise son lancement lt extension point org eclipse ui perspectives gt lt perspective class madkit perspectives MadKitPerspective icon icons designeragent gif id org eclipse ui madkitPerspective name Madkit gt lt perspective gt lt extension gt Les principaux attributs de cette extension sont les suivants id un nom unique pour ide
16. e on trouve la liste des projets r f renc s dans le Workspace Perpective Une perspective pr sente une partie du projet de d veloppement dans un certain angle de vue Elle est compos de sous fen tres de deux types diff rents o vues sp ciales views o diteurs Ces outils disponibles r pondent bien s r aux besoins du projet en cours la perspective Java permet d crire du code java la perspective Debug poss de des vues permettant le d bogage de programmes java Plugin programme qui interagit avec un logiciel principal appel programme h te ici Eclipse pour lui apporter de nouvelles fonctionnalit s Ceci est galement le nom des projets sous Madkit 26 Programmation orient e agent programmation dans des syst mes multi agents Un syst me multi agent tant un ensemble d entit s appel es agents autonomes situ es dans un environnement et interagissant selon une certaine organisation Ces agents peuvent tre des tres humains des robots des processus SWING biblioth que graphique pour Java bas e sur le mod le MVC Model View Controller SWT Standard Widget Toolkit biblioth que graphique pour Java N impl mente en Java que les fonctionnalit s qui ne sont pas offertes par les toolkits sous jacents conomise donc les ressources d o sa rapidit d ex cution par rapport Swing Eclipse repose sur cette architecture View Une vue permet de visualiser faire interagir
17. e affich e la fois Workspace Eclipse espace de travail d Eclipse comme son nom l indique endroit o se trouvent les projets et les fichiers manipul s par le logiciel Par ailleurs on peut tout de m me cr er des projets partir de sources existantes dans n importe quel r pertoire 27 R f rences Voici quelques r f rences qui nous ont t utiles pour r aliser ce plugin e Cours de programmation agent e Cours de m ta programmation r cursive r flexivit en java e http www eclipse org informations g n rales et quelques tutoriels e http www developpez com bonne documentation SWT e http www eclipsetotale com plugins e http java sun com API Java e http www docjar com pour les sources e http mep freehostia com site d di au plugin de Christian Plutis e http madplugin neuf fr site d di au plugin de Quentin Caron 28 Remerciements Nous souhaitons dans cette partie adresser nos remerciements Tout d abord nos tuteurs de projets M Jacques Ferber et M Tib riu Stratulat qui ont suivi notre travail nous ont aid s indiqu s des pistes approfondir Ils nous ont galement donn quelques bases d ing nierie logicielle sp cifique Java Ensuite M Christian Plutis auteur du plugin sur la base duquel nous avons r alis notre version qui nous a toujours apport de l aide en cas de besoin communication par messagerie Ils son
18. ion dans le fichier p ugin xm lt extension point org eclipse ui views gt lt view name Group Observer View icon icons groupObserver gif class madkit views GroupObserverView id madkit views GroupObserver View gt lt view gt autres vues lt extension gt Les principaux attributs de cette extension sont les m mes que pour une perspective leur effets portant sur la vue bien videmment Nous allons voir comment cela se traduit dans l impl mentation des classes d finissant les views La pratique courante est d tendre la classe abstraite ViewPart pour h riter de sa principale fonctionnalit qui est de cr er une nouvelle vue La m thode importante red finir est createPartControl Composite parent pr sente dans l interface WorkbenchPart Elle permet de changer le layout du Composite plac en param tre parent et de lui donner des actions C est dans celle ci que nous allons faire appel l agent caract ristique de la vue Il faut souligner que c est le workbench qui s occupe d appeler cette m thode lorsqu il en a besoin et non la classe cliente public void createPartControl Composite parent MadKitFacade startJavaAgent madkit system GroupObserve r parent On d marre l agent Group Observer MadkitFacade est une classe qui s occupe de r aliser les principales actions de Madkit cr er un plugin cr er un agent lancer un agent 11 Nous avons re
19. jet Apache principalement utilis pour automatiser la construction de projets principalement en langage Java pour ant l instar des logiciels Make Classpath param tre pass une machine virtuelle Java qui d finit le chemin d acc s au r pertoire o se trouvent les classes et packages afin qu elle les utilise Eclipse environnement de d veloppement universel notamment le plus utilis en ce qui concerne le langage JAVA Il est principalement crit en JAVA l aide de la biblioth que graphique SW7 Son gros avantage est que son architecture est bas e sur la notion de plugins toutes ses fonctionnalit s sont d velopp es en tant que plugins ce qui permet une ind pendance entre l application et le plugin Java Builder compilateur Java utilis par Eclipse JAVA_HOME variable d environnement indiquant le chemin du r pertoire du JDK sur la machine Java Nature lorsqu on l ajoute un projet le classpath et le Java Builder sont configur s pour travailler sur ce projet JDK Java Development Toolkit environnement de compilation du code Java JRE Java Runtime Environment environnement d ex cution JAVA Madkit plate forme multi agents modulaire d velopp e au LIRMM par Olivier Gutknecht Jacques Ferber et Fabien Michel Elle est crite en JAVA et est bas e sur le mod le AGR Agent Groupe R le c est dire des agents appartiennent des groupes et jouent des r les Package Explorer Dans cette vu
20. les informations au sein du workbench la vue Properties va afficher les propri t s du projet ou du fichier s lectionn d autres vont permettre de naviguer au sein d un projet Ces vues peuvent poss der leurs propres menus barre d outils boutons Vue Designer permet de voir tout les plugins existants et leurs composants sous la forme d une arborescence Elle permet galement de cr er un nouveau plugin ainsi qu un nouvel agent dans ce plugin Vue Documentation permet d acc der a la documentation MadkKit les diff rents manuels l API et une pr sentation des diff rents plugins impl ment s dans MadkKit Vue Explorer affiche la structure et le contenu des diff rents r pertoire de Madkit Permet de nombreuses possibilit s sur ces derniers Vue Group Observer permet d observer l organisation g n rale c est dire les communaut s groupes et r les et les v nements qui se d roulent dans MadkKit par exemple la cr ation de groupes les agents qui entrent ou quittent un groupe Vue Output affiche le texte imprim par les commande telles que System out printin Equivalent de la console sous Eclipse Wizard assistant pour la cr ation de projets classes Workbench le workbench Eclipse d signe l environnement de travail dans lequel l utilisateur va travailler Il est compos de menus barres d outils et d une ou plusieurs perspectives Toutefois seulement une ne peut tr
21. lles fonctionnalit s que nous avons apport es au plugin un bilan critique objectifs atteints am liorations possibles organisation Il se termine par un glossaire des r f rences et remerciements Tout au long de notre r daction nous essayerons de faire part des probl mes auxquels nous avons t confront s et les solutions que nous avons envisag es ou m me mis en place 1 Analyse de l existant 1 1 Mise en marche Nous nous sommes s par s en bin mes pour tudier les deux plugins d j cr s pr c demment par des tudiants MadPlugin par Quentin Caron et Madkit Plugin par Christian Plutis Nous nous sommes rapidement rendu compte que le plugin de Christian Plutis tait plus complet et nous offrait une base pour d marrer plus int ressante De plus nous poss dions les sources afin de nous faire une id e de sa structure La reprise du plugin a n cessit quelques manipulations pour le faire fonctionner voici quelques unes d entre elles e Modification des classes kernel et boot La classe permettant de lancer la plateforme Madkit avait un constructeur priv dans la version originale ce qui nous emp chait de la lancer de l ext rieur Nous avons rencontr le m me probl me dans le cas des fonctions pour lancer les agents de MadkitKernel qui n taient pas visibles depuis un package ext rieur e Probl me avec les wizards Lorsque l on cr e des wizards partie d velopp e dans la suit
22. mmes beaucoup document s sur le passage de Swing a SWT En ce qui concerne la gestion des v nements souris il est apparu que la solution tait dans l une des notes de la documentation des classes permettant cette transition Une classe de Java permet le passage de AWT Swing SWT SWT_AWT du package org eclipse swt awt fourni par Eclipse Le seul probl me est que celle ci ne g re pas les v nements en question si ceux ci sont g r s directement par la fen tre Il faut donc rajouter un panneau dans lequel nous placerons tous les l ments que nous voulions mettre directement dans la fen tre La gestion sera alors effective Le probl me qui faisait que la construction d un projet cr via Madkit aboutissait un chec venait du fait que le constructeur ne trouvait pas le compilateur java point par le JAVA_HOME Malgr le fait de l avoir d fini dans le syst me comme d environnement cela ne fonctionnait toujours pas Le probl me a t r solu en changeant de JRE dans le Eclipse qui lan ait le nouveau Eclipse o tait attach notre plugin Il fallait prendre celui qui se situe dans le dossier JDK et dans un JRE seul Une fois ce probl me r solu la fonction build du designer avait un bug Nous avions une erreur qui venait du fait que le Designer nous faisait changer de classloader pendant l activation de la compilation et l agent cessait de reconna tre son environnement et donc ne fonctionnait plus Nous avons donc
23. ncontr un probl me dans le domaine des perspectives En effet comme nous le verrons plus tard nous avons eu le besoin qu Eclipse reconnaisse les plugins Madkit comme des projets Java Notre but tait donc d essayer d avoir les ressources n cessaires a la gestion de projets Java Notre premi re id e a donc t de permettre a notre perspective Madkit d h riter de la perspective Java Nos recherches nous ont montr es qu un h ritage comme une classe du style extends n tait priori pas possible Par contre la solution serait l extension d une perspective ici Java c est a dire lui rajouter des vues Voici comment cela se caract rise dans le fichier p ugin xm lt extension point org eclipse ui perspectiveExtensions gt lt perspectiveExtension targetID org eclipse jdt ui JavaPerspective gt lt view id madkit views GroupObserverView relative org eclipse jdt ui PackageExplorer relationship stack gt lt perspectiveExtension gt lt extension gt targetid repr sente l id de la perspective que l on va tendre Java dans notre cas Ensuite on d clare les vues que l on souhaite rajouter dans cet exemple Group Observer relative on indique la vue partir de laquelle on va placer la nouvelle relationship concerne le placement ici stack veut dire placement la suite de la vue relative dans le m me folder Le d faut de cette solution t
24. ntifier la perspective name un nom utilis dans les fen tres permettant louverture de perspectives class le nom complet de la classe d finissant cette perspective icon le nom complet de l ic ne qui sera associ e cette perspective Il reste une tape la cr ation de notre perspective d finir une classe relative cette perspective Cette classe doit impl menter l interface PerspectiveFactory La seule m thode de cette interface est createlnitialLayout IPagelayout layout Cette m thode va cr er le layout initial on y rajoute nos wews en les pla ant dans le layout Ce placement se r alise selon trois types de disposition possibles bottom left right par rapport un autre objet d j pr sent Dans notre perspective Madkit nous avons plac les vues par rapport l diteur central String editorArea layout getEditorArea on r cup re l diteur central On peut ajouter plusieurs vues une m me sous fen tre celles ci apparaissant sous forme d onglets Pour cela on cr e un Fo derlayout qui fait office de conteneur de vues IFolderLayout topLeft layout createFolder topLeft TPageLayout LEFT 0 26f editorArea Ici on cr e un folder la gauche de l diteur central 0 26f repr sente le ratio entre 0 et 1 de placement Dans ce cas le folder se trouve en haut de la fen tre A ce folder on rajoute nos vues de la fa on suivante topLeft a
25. puis l ouvrir La seconde tape consiste a ce que ce projet devienne de type Java Java nature Pour cela une partie du code a pour travail de changer la nature JavaCore Nature_ Drepr sentant la Java Nature String prevNatures description getNaturelds String newNatures new String prevNatures length 1 System arraycopy prevNatures 0 newNatures 0 prevNatures length newNatures prevNatures length JavaCore NATURE ID description setNatureIds newNatures 14 On peut maintenant finaliser le typage de notre projet en Java IJavaProject javaProject javaProject JavaCore create project Dans la derni re il nous faut ajouter les librairies n cessaires au bon fonctionnement du projet La principale tant celle du JRE Dans notre cas nous ajoutons deux librairies de Madkit n cessaires au d but d un nouveau plugin On va donc modifier le classpath du projet IPath jreLibPath new Path javaHome getPath append lib append rt jar Librairie du JRE String libDir MadKitData getMadKitRoot File separator MadKitData MADKIT_LIB_DIR Librairies de Madkit String tabVar JRE_LIB Madkit_LIB IPath tabPath jreLibPath new Path libDir JavaCore setClasspathVariables tabVar tabPath null Ajout des variables au classpath javaProject setRawClasspath new IClasspathEntry JavaCore newSourceEnt
26. r output Fa Vue de la perspective Madkit 13 2 2 Cr ation de projets java La principale utilit de ce plugin est bien entendu de pouvoir diter les fichiers dans Eclipse et donc d utiliser tous ses avantages signalement des erreurs compl tion automatique avec le raccourci Contro Espace nombreux autres raccourcis claviers coloration syntaxique Mais pour cela il faut qu Eclipse consid re le fichier comme appartenant un projet Java Notre but a donc t de cr er un projet java partir des sources d un plugin Madkit et non dans le workspace Comme le permet Eclipse avec son wizard lorsqu on d veloppe un projet Java et que l on choisit l option from existing sources Il faut donc maintenant le r aliser par un programme La premi re tape est de cr er un projet Eclipse Project IProject project ResourcesPlugin getWorkspace getRoot getProject pluginName On va fournir une description IProjectDescription description project getWorkspace newProjectDescription project getName Le probl me cet instant est que le projet n est pas encore localis l endroit d sir mais dans le workspace description setLocation projectPath project create description progressMonitor project open progressMonitor On a indique un emplacement diff rent a la description du projet projectPath chemin du plugin Ensuite on peut le cr er
27. red fini cette m thode dans la classe du GUI afin qu elle devienne adapt e l ex cution dans Eclipse Elle rajoute le jar du projet compil dans le classloader du plugin Eclipse qui est r cup r de l objet pass au constructeur de notre environnement d ex cution d Eclipse m thode d crite plus loin Nous n avons pour l instant seulement fait une tude des deux plugins choisi notre base de travail partir du plugin de Christian Plutis r alis s quelques ajustements mais aucune nouvelle fonctionnalit n est effective Nous allons donc d couvrir la grosse partie de notre travail dans la suite de ce rapport 1 2 Apprentissage Nous avons eu besoin pour maintenant mieux s approprier le projet et apporter notre touche personnelle au plugin Eclipse de parfaire notre apprentissage sur des points importants Agent Comme on l a dit pr c demment Madkit est une plateforme bas e sur la notion d agent il tait important de bien conna tre le but le fonctionnement d un agent Pour cela le module programmation agent nous tait tr s utile Ant La modification des fichiers jar de Madkit la compr hension de la construction des agents Madkit build a n cessit une initiation puis l utilisation du logiciel ant automatisation de projets plus particuli rement Java que nous ne connaissions pas auparavant Eclipse Comme pour Madkit une connaissance plus approfondie d Eclips
28. ritant du GUI original ou un noeud correspondant au fichier source on appelle sendEclipseRequest de l agent propri taire 16 2 4 Modification du Designer Il nous a t demand de modifier le Designer dans Eclipse de fa on a ce que seule l arborescence soit visible au d part et que les propri t s n apparaissent que lorsque l utilisateur le demande Il a d abord fallu modifier le code de cr ation des composants visuels en deux cas diff rents si l on est sur Madkit on veut utiliser l interface graphique du Designer normal sinon on est donc sur Eclipse on se servira de celle adapt e Eclipse public void initGUI if System getProperty eclipse startTime null gui new PluginDesignerGUI this else gui new EclipsePluginDesignerGUI this setGUIObject qui Celle ci comme vu ci dessus s appelle EclipsePluginDesignerGUI elle h ritera bien s r de PluginDesignerGUI afin d en garder le comportement global mais maintenant n affichera plus le panneau des propri t s il faudra maintenant faire clic droit sur un projet et choisir Properties Le panneau des propri t s est utilis trois endroits dans la classe PluginDesignerGUI e Ala cr ation la vue propri t s est affich e mais les valeurs ne sont par remplies e Lors de la s lection de l un des plugins dans l arbre e Lors du clic droit et du choix de Properties Il a donc fallu d
29. ry srcFolder getFullPath JavaCore newVariableEntry new Path JRE_LIB new Path JRE_SRC new Path JRE SRCROOT JavaCore newLibraryEntry new Path libDir File separator madkitkernel jar null null JavaCore newLibraryEntry new Path libDir File separator madkitutils jar null null null modification des entr es du classpath Il faut souligner qu Eclipse nous g n re deux fichiers xml project et classpath 15 2 3 Communication inverse Description du besoin On avait au d but un plugin qui avait pour fonctionnalit de d marrer le noyau de Madkit et de lancer des agents dans son environnement Au cours de l avancement on a eu besoin de faire la communication inverse on voulait invoquer une fen tre wizard Eclipse quand on cliquait sur un bouton correspondant au lieu d avoir la fen tre de base de Madkit et au double clic sur un fichier source celui ci devait s ouvrir dans la fen tre d dition d Eclipse Premi re approche Deux solutions ont t essay es au d but sans succes e Modifier le classloader du plugin en lui rajoutant tout le dossier d Eclipse Cela a pour effet de nous permettre d utiliser les bibliotheques propres a Eclipse pendant l ex cution de l agent la compilation par contre doit se faire sous Eclipse en rajoutant dans le classpath les biblioth ques utilis es Ainsi on pourrait cr er le wizard dans le
30. s Il existait d j un wizard pour la cr ation d un agent Le probleme tait que ce wizard n tait pas tout a fait compatible avec la modification du Designer En effet la d tection du projet s lectionn projet courant tait adapt e a l ancien Designer personnalis Nous avons donc utilis le syst me de communication mis en place entre le Designer et Eclipse d velopp dans une autre partie Le plugin en cours qui est actualis dans la m thode showPlugin String name de PluginDesignerGUI void showPlugin String name Plugininformation info PluginInformation plugins get name currentPlugin info Dans le actionPerformed lorsque l action correspond la demande d un nouvel agent on r cup re le plugin s lectionn puis on envoie l information Eclipse Si aucun plugin n est s lectionn l utilisateur est inform de devoir en choisir un au pr alable target currentPlugin getName ag sendEclipseRequest new Class String class String class new Object c target c correspond la commande target au plugin en cours Une fois que nous avons r cup r le nom du plugin dans Eclipse nous pouvons le transmettre au wizard qui le transmet lui aussi a son unique page Le plugin cible dans lequel l agent sera cr pourra tre modifi via un bouton Browse qui propose arborescence Des erreurs emp chent la validation par l utilisateur si il n y
31. s ci est le Designer Elle se situe dans la partie gauche en bas C est a partir de cette vue que l on pourra cr er des plugins pour Madkit et des agents de divers types pour ceux ci L arborescence pr sent e est celle des projets d ja pr sents dans le dossier plugins du logiciel Le premier bouton permet alors de cr er ces fameux plugins En cliquant dessus un Wizard apparaitra dans lequel il est demand d entrer un nom et de choisir le type du projet pour le moment il n y a que deux choix TurtleKit ou Madkit Une fois ceci fait il reste juste a cliquer sur le bouton Finish ce qui engendrera la cr ation et une premi re compilation du plugin Notons que ceci ajoute un dossier dans l arborescence de la vue Designer et en cr e un dans la vue Package Explorer Ceci est n cessaire pour que les raccourcis d Eclipse Ctrl Espace particuli rement fonctionnent Un agent par d faut est cr ayant le nom nomduProjetHello java qui envoie Hello World dans une console 31 La cr ation d agents est maintenant possible pour le projet Celle ci se fait avec les autres boutons de la vue Designer chacun repr sentant un type Java Python Scheme BeanShell Jess Pour ce manuel nous allons nous int resser la cr ation d un agent Java les autres types peuvent tre construits de la m me fa on Apr s avoir cliqu sur le bouton correspondant cette derni re action un assistant va s ouvrir demandant
32. ssi les conflits entre les versions lorsque l on essaye de mettre jour un fichier sans avoir sa derni re version ou si au contraire on tente de mettre jour un fichier que l on a modifi sans l avoir pr c demment mis jour Le chef de projet s occupait de la communication en g n ral r partition du travail formation des groupes communication avec l encadrant et la personne qui a r alis le plugin que l on a pris comme base Pour ce qu il s agit des groupes ils changeaient assez souvent selon ce que chacun souhaitait faire La plupart de temps nous travaillions en bin me Dans le cas ou nous rencontrions plus de difficult s que pr vu nous nous y mettions plus de personnes 3 2 Tests r alis s Pour tester notre plugin le moyen le plus efficace tait de r guli rement l utiliser lors de nos TPs du module de programmation agent Ceci nous mettait en situation de simple utilisateur Madkit Nous n tions plus dans l esprit concepteur qui peut orienter nos tests dans une certaine direction et nous faire passer c t d erreurs g n r es par des actions courantes Cela nous permettait galement de faire chaque semaine une constatation effective de son volution de ses am liorations apporter Nous essayions lors de nos rencontres hebdomadaires avec nos encadrants de leur amener une d monstration de notre travail nous avons ainsi fait ressortir des erreurs que nous ne soup
33. t galement adress s M Quentin Caron pour nous avoir fourni la version de son plugin Pour finir M Michel Lecl re pour le suivi qu il donne aux TER r partition planning recueil des cahiers des charges des rapports soutenances 29 Annexe Manuel d utilisation du plugin pour Eclipse permettant l utilisation de l environnement Madkit e Lancement Pour que le plugin fonctionne il faut simplement copier le fichier jar fournit par nos soins dans le dossier plugins de Eclipse Ensuite il suffit de lancer l environnement de programmation Ceci effectu il faudra changer de perspective bouton en haut droite et utiliser celle nomm e Madkit pour avoir toutes les vues impl ment es pour ce plugin Au premier lancement une fen tre s ouvrira demandant le chemin du logiciel Madkit install sur ordinateur Il faudra donc l avoir install au pr alable Il est disponible a cette adresse http www madkit org Il est aussi possible d ouvrir les fen tres des fonctionnalit s ind pendamment en cliquant sur Window dans le menu en haut puis sur Show view gt Other et enfin dans la fen tre qui vient de s ouvrir il faut double cliquer sur Madkit ou sur le a cot et ensuite s lectionner la ou les vues voulues e utilisation Une fois lanc il sera possible d utiliser certaines fonctionnalit s de l environnement Madkit o Designer La plus importante de celle
34. thode plus haut action de test avec un seul param tre public void sendTest sendEclipseRequest new Class String class new Object test 2 C t Eclipse 1 Lancer cet agent avec la m thode startLoopbackAgent String name de base MadkitFacade o name est le nom complet de l agent incluant le package 2 Rajouter du code dans le constructeur de la classe imbriqu e ActionTranscript de actions Actioninterpreter par rapport aux arguments du constructeur Ces arguments correspondent a ceux qui vont tre pass s a sendEclipseRequest 3 Red finir run de ActionTranscript Exemple quelque part MadkitFacade startLoopbackAgent madkit TestEclipseAgent dans ActionInterpreter else if action equalsIgnoreCase test notre action ouvre une popup MessageDialog openInformation Display getDefault getActiveShell Test 35

Download Pdf Manuals

image

Related Search

Related Contents

LTM-100  Service Manual - Portal do Eletrodomestico    CNP-200A User Manual  Formação Inicial  PDFファイル 1.51MB    Smart AC® Power Strip™  

Copyright © All rights reserved.
Failed to retrieve file