82

Travail de Bachelor (format PDF)

  • Upload
    vannhi

  • View
    235

  • Download
    0

Embed Size (px)

Citation preview

  • Extension de MediMAS

    Dveloppement et dploiement d'agents JADEsur des supports mobiles

    Travail de Bachelor

    Joseph Schppi

    Septembre 2008

    Supervis par :

    Prof. Dr. Jacques Pasquier-RochaDr. Patrik Fuhrer

    etMinh Tuan NguyenGroupe Gnie Logiciel

    Groupe Gnie LogicielDpartement d'Informatique

    Universit de Fribourg (Suisse)

  • Savoir o l'on veut aller, c'est trs bien ; mais il faut encore montrer qu'on y va.

    - Emile Zola

  • Remerciements

    Je remercie ma famille pour son soutien et le groupe Software Engineering pour m'avoirpermis de choisir ce sujet.

    ii

  • Rsum

    Depuis de nombreuses annes, le cinma et la littrature se passione pour des histoires par-lant d'intelligence articelle. Depuis quelques annes, le rve commence prendre forme.Le monde d'aujourd'hui devient de plus en plus mobile. Une personne sans tlphone mo-bile devient rare. L'esprance de vie de l'tre humain augmente. Cette amlioration estde en partie un systme hospitalier de plus en plus ecace. MediMAS et l'extensionqui a t dvelopp dans ce projet sont une suite logique de ces trois constatations.Un agent est selon la dnition de Wooldridge et Jennings (1995) un systme informatiquequi est situ dans un certain environnement et qui est capable d'eectuer de manireautonome une action an de rpondre aux objectifs pour lesquels il a t conu. On peutvoir dans cette dnition une ressemblance avec l'intelligence articielle. MediMAS estun systme multi-agents utilisant la plateforme JADE et ayant comme but l'amliorationd'un systme de transmission de rsultats de laboratoire vers un hpital. Concrtement,l'objectif de MediMAS est l'amlioration du traitement des cas anormaux.L'extension qui a t dveloppe dans ce projet consiste en la cration d'agents pourtlphones mobiles en utilisant Java Micro Edition. Le but de ces agents est de faire unlien entre l'utilisateur humain et le coeur du systme MediMAS. On nommera ces agentsdes agents GUI. On a dvelopp dans ce projet un agent GUI mobile destin l'assistantdu laboratoire. Le but principal de cet agent est de permettre l'assistant d'annoncerla disponibilit d'une analyse. Le second dvelopp est l'agent GUI du mdecin. Le butprincipal de cet agent est que le mdecin soit prvenu lorsqu'une analyse a t nie.

    Mots cls : Java, Java ME, JADE LEAP, MediMAS, MIDP, Mobile

    iii

  • Table des matires

    1. Introduction 2

    1.1. Motivation et objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    1.2. Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    1.3. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2. Les Agents 4

    2.1. Concepts de la technologie agent . . . . . . . . . . . . . . . . . . . . . . 4

    2.1.1. Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.1.2. Systme multi-agents . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.1.3. Langage et ontologies . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.2. JADE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.2.1. Buts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.2.2. Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.2.3. Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.3. MediMAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.3.1. Buts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.3.2. Le systme actuel du laboratoire cantonal de Fribourg . . . . . . 11

    2.3.3. Le systme avec MediMAS . . . . . . . . . . . . . . . . . . . . . . 12

    2.3.4. Exemple d'utilisation de MediMAS . . . . . . . . . . . . . . . . . 13

    3. Agents pour supports mobiles 17

    3.1. Introduction Java ME . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    3.1.1. Dirences principales avec Java SE . . . . . . . . . . . . . . . . . 17

    3.1.2. Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.1.3. Dploiement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.1.4. Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.2. Agents JADE pour supports mobiles . . . . . . . . . . . . . . . . . . . . 24

    3.2.1. JADE LEAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3.2.2. Connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    iv

  • Table des matires v

    3.2.3. Etapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.2.4. Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    4. Agents dvelopps 28

    4.1. But du dveloppement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.2. Ontologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.3. Assistant de laboratoire . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.3.1. Buts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.3.2. Dveloppement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.3.3. Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.4. Mdecin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.4.1. Buts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.4.2. Dveloppement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.4.3. Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.5. Chef du laboratoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    5. Mode d'emploi 36

    5.1. Pr-requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    5.2. Installation et conguration . . . . . . . . . . . . . . . . . . . . . . . . . 36

    5.3. Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    6. Conclusion 40

    6.1. Dveloppement possible de MediMAS . . . . . . . . . . . . . . . . . . . . 40

    6.2. Impressions sur Java ME . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    6.3. Impressions sur les agents . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    A. Guide d'installation et d'utilisation des outils et technologies utiliss 42

    A.1. Java SE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    A.2. Sun Wireless Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    A.3. Environnement de Dveloppement Intgr (IDE) . . . . . . . . . . . . . . 42

    A.3.1. Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    A.3.2. Netbeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    A.4. JADE et LEAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    A.4.1. Quelques commandes basiques . . . . . . . . . . . . . . . . . . . . 43

    A.5. MediMAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    A.5.1. Conguration pour une utilisation avec Ant . . . . . . . . . . . . 44

    B. Version Java SE de l'exemple Calculatrice (cf. section 2.2.3) 45

    B.1. calculette.agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    B.2. calculette.behaviours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    B.3. calculette.gui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    B.4. calculette.ontology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

  • Table des matires vi

    C. Code source des interfaces graphiques des agents mobiles 56

    C.1. GUI de l'assistant du laboratoire . . . . . . . . . . . . . . . . . . . . . . 56

    C.2. GUI du mdecin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    D. Acronymes 64

    E. Licence de la documentation 65

    F. Page web du projet 66

    G. CD-ROM 68

    Bibliographie 70

    Sites Web 71

    Index 73

  • Liste des gures

    2.1. Simulation d'incendies de fort avec CORMAS . . . . . . . . . . . . . . . 5

    2.2. Interface graphique de l'agent RMA de JADE . . . . . . . . . . . . . . . 8

    2.3. Interface graphique de l'exemple CalculetteJADE . . . . . . . . . . . . . 9

    2.4. Systme de communication actuel . . . . . . . . . . . . . . . . . . . . . . 12

    2.5. L'interface graphique de l'assistant du laboratoire Dupont . . . . . . . . 13

    2.6. L'interface graphique du mdecin Hippocrate . . . . . . . . . . . . . . . . 15

    2.7. L'interface graphique du chef du laboratoire . . . . . . . . . . . . . . . . 16

    3.1. Calculatrice sur l'mulateur Java ME . . . . . . . . . . . . . . . . . . . . 22

    3.2. Notre site WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3.3. Exemple d'utilisation de LEAP . . . . . . . . . . . . . . . . . . . . . . . 25

    3.4. Transmission sans l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.5. Conguration de notre calculatrice . . . . . . . . . . . . . . . . . . . . . 27

    4.1. Diagramme de classe pour les comportements de l'agent GUI de l'assistant

    du laboratoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.2. Diagramme de classe pour les comportements de l'agent GUI du mdecin 34

    4.3. Le GUI de l'agent du mdecin . . . . . . . . . . . . . . . . . . . . . . . . 35

    5.1. Exemple de conguration avec le midlet Cong . . . . . . . . . . . . . . 37

    5.2. Dmarrage de l'agent de l'assistant du laboratoire . . . . . . . . . . . . . 39

    F.1. Capture d'cran du site du projet . . . . . . . . . . . . . . . . . . . . . . 67

    G.1. Arborescence du contenu du CD-ROM . . . . . . . . . . . . . . . . . . . 68

    G.2. Le CD-ROM de ce projet . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    vii

  • Liste des tableaux

    2.1. Les agents et leurs rles [Pas08] . . . . . . . . . . . . . . . . . . . . . . . 14

    viii

  • Liste des codes source

    2.1. Exemple d'implmentation d'un agent . . . . . . . . . . . . . . . . . . . 10

    2.2. Exemple d'implmentation d'un comportement . . . . . . . . . . . . . . . 10

    2.3. Exemple d'implmentation d'une ontologie . . . . . . . . . . . . . . . . . 11

    3.1. Fichier JAD de l'exemple calculatrice (cf. sous-section 3.1.4) . . . . . . . 19

    3.2. Un Midlet achant Hello World . . . . . . . . . . . . . . . . . . . . . . . 20

    3.3. Dmarrage de Proguard . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    3.4. Extrait de la mthode commandAction de l'exemple Calculette . . . . . . 22

    3.5. Dmarrer l'mulateur du Sun Wireless Toolkit en ligne de commande . . 23

    3.6. Le chier .htaccesss de notre site WAP . . . . . . . . . . . . . . . . . . . 23

    3.7. L'index d'un site WAP utilis pour OTA . . . . . . . . . . . . . . . . . . 23

    4.1. Implmentation des mthodes internalise et externalise de la classe Analysis . 29

    B.1. Calculator.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    B.2. CalculetteUser.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    B.3. CalculBehaviour.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    B.4. GetResultBehaviour.java . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    B.5. SendOperandBehaviour.java . . . . . . . . . . . . . . . . . . . . . . . . . 49

    B.6. CalculetteUserGUI.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    B.7. CalculetteUserGUIConstant.java . . . . . . . . . . . . . . . . . . . . . . . 52

    B.8. Add.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    B.9. CalculetteOntology.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    B.10.Number.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    1

  • 1Introduction

    1.1. Motivation et objectifs

    Nous utlisons actuellement de plus en plus de services disponibles via internet. Les ap-plications fournissant ces services commencent de plus en plus se rendre mutuellementdes services et agir sans ou avec trs peu d'intervention humaine. La notion d'agentqui est une partie importante de ce projet peut tre vue comme un futur possible pourinternet. Ce projet est divis en une partie thorique et en une partie dveloppement. Lebut principal de la partie thorique est de remplir deux objectifs. Le premier consiste dcouvrir les agents et le deuxime se familiariser avec Java Micro Edition (Java ME).Plus prcisment le premier objectif consiste apprendre utiliser Java Agent DEvelop-ment Framework (JADE) et comprendre le fonctionnement d'un systme multi-agentsnomm Medical Multi-Agent System (MediMAS). La partie dveloppement consiste enla cration d'agents Graphical User Interface (GUI) fonctionnant sur des tlphones por-tables et compatibles avec MediMAS. On entend par agent GUI un agent qui cre uneinterface graphique pour l'utilisateur et qui s'occupe de la liaison entre cette interface etle reste du systme.

    1.2. Organisation

    Ce document est compos de six parties et d'annexes. L'introduction prsente les objectifsdu projet et donne des indications sur la structure de ce document.

    Le chapitre deux va nous faire dcouvrir les agents. Ce chapitre est compos de trois par-ties. La premire partie va nous prsenter les concepts de la technologie agent, la deuximepartie le framework JADE et la troisime partie le systme multi-agents MediMAS.

    Le troisime chapitre de ce document va nous permettre d'acqurir les notions qu'il nousmanque encore pour dvelopper des agents pour support mobile. C'est--dire Java ME etla Light Extensible Agent Platform (LEAP).

    Le chapitre quatre va nous prsenter les agents dvelopps et nous donner des indicationspour l'implmentation des agents manquants.

    Le chapitre cinq va nous fournir un mode d'emploi pour utiliser les agents dvelopps.Finalement, la conclusion va nous permetttre de faire une rexion sur les extensionspossibles de MediMAS et sur les outils et technologies utiliss.

    2

  • 1.3. Conventions 3

    1.3. Conventions

    Les termes dont le mot anglais est couramment utiliss dans des publications informa-tiques en franais n'ont pas t traduits en franais. Pour prserver l'oeuvre des auteurs,les graphiques tirs de documents en anglais n'ont pas t traduits en franais. Nanmoins,les termes utiliss dans le graphique seront traduits dans le texte. Les termes pouvant treutiliss dans du code et les urls auront une criture distincte. Vous trouverez dans cer-tains listings de codes sources .... Cela signie qu'une partie du code source ne prsentantpas d'intrt majeur pour cette documentation a t supprime cette endroit.

    urls

  • 2Les Agents

    2.1. Concepts de la technologie agent . . . . . . . . . . . . . . . . . 4

    2.1.1. Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.1.2. Systme multi-agents . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.1.3. Langage et ontologies . . . . . . . . . . . . . . . . . . . . . . . 6

    2.2. JADE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.2.1. Buts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.2.2. Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.2.3. Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.3. MediMAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.3.1. Buts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.3.2. Le systme actuel du laboratoire cantonal de Fribourg . . . . . 11

    2.3.3. Le systme avec MediMAS . . . . . . . . . . . . . . . . . . . . 12

    2.3.4. Exemple d'utilisation de MediMAS . . . . . . . . . . . . . . . . 13

    2.1. Concepts de la technologie agent

    2.1.1. Agent

    Toutes les dnitions du mot agent ont un point commun. On parle toujours d'une per-sonne ou chose qui eectue une action. Cette dnition n'est bien sr pas susante pourdnir l'agent que l'on utilisera dans ce travail. L'encyclopdie en ligne Wikipedia [25]dnit l'agent comme tant une entit physique ou virtuelle ayant les 9 caractristiquessuivantes :

    1. qui est capable d'agir dans un environnement

    2. qui peut communiquer directement avec d'autres agents

    3. qui est mue par un ensemble de tendances (sous forme d'objectifs individuels oud'une fonction de satisfaction, voire de survie, qu'elle cherche optimiser)

    4. qui possde des ressources propres

    5. qui est capable de percevoir (mais de manire limite) son environnement

    4

  • 2.1. Concepts de la technologie agent 5

    Figure 2.1.: Simulation d'incendies de fort avec CORMAS

    6. qui ne dispose que d'une reprsentation partielle de cet environnement (et ventuel-lement aucune)

    7. qui possde des comptences et ore des services

    8. qui peut ventuellement se reproduire

    9. dont le comportement tend satisfaire ses objectifs, en tenant compte des res-sources et des comptences dont elle dispose, et en fonction de sa perception, de sesreprsentations et des communications qu'elle reoit

    La communaut scientique a accept les dnitions suivantes : Wooldridge et Jennings [Jen95] nous disent qu'un agent est un systme informatiquequi est situ dans un certain environnement et qui est capable de d'eectuer de manireautonome une action an de rpondre aux objectifs pour lesquels il a t conu.

    Patti Maes [Mae95] dnit les agents autonomes comme des systmes informatiques quipeuvent sentir et agir de faon autonome dans l'environnement dynamique et complexedans lequel ils vivent. Ces agents doivent raliser un ensemble de buts ou de tches pourlesquelles ils sont conus.

    2.1.2. Systme multi-agents

    Un systme multi-agents est un systme ferm de plusieurs agents interagissant entreeux. L'interaction se fait gnralement par des messages. La plupart du temps les agents

  • 2.1. Concepts de la technologie agent 6

    agissent dans l'intrt de leur matre. Leurs intrts ne se chevauchent pas forcment. Ils'agit donc de coordonner leurs actions et de ngocier an de trouver une solution quisatisfasse tout le monde.

    Voici quelques exemples d'outils bass sur le langage Java qui permettent le dveloppe-ment de systmes multi-agents : Le framework CORMAS [4] (Figure 2.1) utilis notamment pour faire de la gestionde ressources naturelles et renouvelables. La Figure 2.1 nous montre une simulationd'incendies de forts. Une case verte est une fort, une case rouge signale un incendieet un triangle bleu reprsente un pompier. A chaque pas de la simulation, les incendiesessaient de se propager et les pompiers tentent de les teindre.

    Le framework JADE [10], qui sera utilis dans ce projet. La plateforme pour agent physiquement distribus MAGIQUE [13]. La plateforme multi-agents modulaire MadKit[12].

    2.1.3. Langage et ontologies

    Langage de contenu

    Le standard FIPA [8] dnit le contenu des messages changs entre les agents commetant des chanes de caractres ou des squences de bits. Dans les cas complexes, celane sut pas pour avoir une communication susante. C'est pourquoi on doit dnir unesyntaxe connue sous le nom de langage de contenu. FIPA recommande l'utilisation dulangage smantique FIPA (Langage SL) pour dnir la syntaxe des messages. Cette syn-taxe est en fait un sous-grammaire de la syntaxe gnrale des S expressions (expressionsymbolique). Une S expression permet la reprsentation de donnes ou d'expressions sousforme textuelle. Cette convention est principalement utilise par les langages de type Lisp.Voici quelques exemples d'utilisation du langage SL :

    1. Interaction entre un agent et un agent

    a. L'agent va demander l'agent si celui-ci croit que l'expression (= 0 1)est correcte.

    1 ( queryr e f: sender ( agent i d e n t i f i e r : name Beta )

    3 : r ece i ve r ( se t ( agent i d e n t i f i e r : name Alpha ) ): content

    5 " (B Alpha (= 0 1) ) ": language f ipas l

    7 : rep lywi th query1 )

    b. L'agent rpond la requte.

    1 ( in fo rm: sender ( agent i d e n t i f i e r : name Alpha )

    3 : r ece i ve r ( se t ( agent i d e n t i f i e r : name Beta ) ): content " ( (= (B Alpha (= 0 1) ) f a l s e ) ) "

    5 : language f ipas l: inrep lyto query1 )

    c. L'agent n'arrive pas rpondre la requte et envoie un message d'erreur.

    ( f a i l u r e2 : sender ( agent i d e n t i f i e r : name Alpha )

    : r ece i ve r ( se t ( agent i d e n t i f i e r : name Beta ) )4 : content

    " ( ( ac t i on ( agent i d e n t i f i e r : name Alpha )

  • 2.2. JADE 7

    6 ( informr e f: sender ( agent i d e n t i f i e r : name Alpha )

    8 : r ece i ve r ( se t ( agent i d e n t i f i e r : name Beta ) ): content

    10 \ " ( ( = (B Alpha (= 0 1) ) fa lse ) ) \ ": language f ipas l

    12 : inrep lyto query1 ) )morethanoneanswer ) "

    14 : language f ipas l: inrep lyto query1 )

    2. Description d'un concept (Exemple : un DVD)

    1 (DVD: t i t r e " I l f a u t sauver l e so lda t Ryan "

    3 : r e a l i s a t e u r ( Personne: prenom " Steven "

    5 :nom " Spie lberg ): ac teurs ( sequence

    7 ( Personne: prenom "Tom"

    9 :nom " Hanks " )( Personne

    11 : prenom "Tom":nom " Sizemore " )

    13 ))

    Ontologie

    Un mme objet n'est pas forcment dni de la mme manire par des personnes di-rentes. Par exemple, un DVD peut tre dni comme tant un disque optique, un supportpour un lm ou encore un moyen de stocker des donnes. Cela peut provoquer des qui-proquos. Pour pouvoir se comprendre, les agents doivent partager des connaissances biendnies. Pour se faire, on utilise un ensemble qui est nomm ontologie. Une ontologie estcompose de prdicats, d'actions et de concepts.

    Un concept permet de donner un sens l'information. Par exemple, un vendeur deDVD est une personne physique ayant un nom, un prnom et une adresse.

    Une action est constitue d'une opration et de la dnition de celle-ci. Par exemple,une action peut tre acheter un DVD d'un acteur prcis, dans une certaine tranche deprix et dans un magasin prcis.

    Un prdicat est une opration qui ncessite une rponse positive ou ngative.

    2.2. JADE

    2.2.1. Buts

    Le framework JADE [10] est un framework inplment en Java. Il est open-source et dis-tribu par Telecom Italia sous la license LGPL. Son but est de permettre le dveloppementde systme multi-agents en mettant disposition un middleware et plusieurs outils gra-phiques. JADE est conforme aux spcications FIPA pour l'interoprabilit des systmesmulti-agents inteligents. Ce framework est la base de l'implmentation de MediMAS. Sonfonctionnement sera expliqu dans le point suivant.

  • 2.2. JADE 8

    Figure 2.2.: Interface graphique de l'agent RMA de JADE

    2.2.2. Fonctionnement

    Un agent selon JADE est conforme au standard FIPA, possde un cycle de vie, possde unou plusieurs comportements (Behaviours), communique avec des messages de type AgentCommunication Language (ACL) et rend des services. Un agent est identi de manireglobale par un nom unique (l'AgentIdentier ou AID). Chaque agent peut joindre ouquitter librement la plateforme et rentrer en contact avec chacun des autres agents.

    La plateforme possde des agents prdnis. Les plus importants sont le Remote Monito-ring Agent (RMA), le Directory Facilitator (DF) et l'Agent Management System (AMS)).

    L'agent RMA sert d'administrateur pour les agents. Avec son interface graphique (Fi-gure 2.2), il est possible de crer, supprimer et de migrer des agents. L'agent RMApermet galement la cration et la suppression des conteneurs et la fermeture de laplateforme.

    L'agent DF enregistre les descriptions et les services des agents et maintient des pagesjaunes de services.

    L'agent AMS est charg du contrle de l'accs des agents la plateforme.

    Vous trouverez quelques informations de base sur l'installation et l'utilisation de JADEdans l'annexe A.4.

    2.2.3. Exemples

    Prsentation

    Pour illustrer cette prsentation de JADE, nous allons implmenter une petite calcula-trice se limitant l'addition de deux nombres. Nous aurons d'un ct un agent nommCalculetteUser qui va rcuprer 2 nombres que l'utilisateur du systme aura pralablemententr l'aide d'une interface graphique dnie dans la classe CalculetteUserGUI . De l'autrect, nous aurons un agent nomm Calculator qui aura comme tche l'addition des deuxnombres que lui aura transmis l'agent CalculetteUser. Ce second agent va ensuite renvoyerle rsultat au premier agent.

  • 2.2. JADE 9

    Figure 2.3.: Interface graphique de l'exemple CalculetteJADE

    Nous utiliserons les trois comportements suivants : CalculBehaviour pour l'agent Calculator, GetResultBehaviour et SendOperandBehaviour pour l'agent CalculetteUser.CalculBehaviour est un comportement de type cyclique. C'est--dire un comportement qui serpte en boucle. Il attend les demandes d'addition de l'agent CalculetteUser. Puis, il calculele rsultat, le renvoie l'agent CalculetteUser et nalement attend de nouvelles demandes.GetResultBehaviour est galement un comportement cyclique. Il attend les rsultats venantde l'agent Calculator. SendOperandBehaviour est un comportement de type one shot. C'est--dire que ce comportement s'excute une et une seule fois. Ce comportement va tre crlorsque l'on va appuyer sur le bouton Additionner de l'interface graphique. Il va ensuiteenvoyer une demande d'addition l'agent Calculator. Lorsqu'il aura accompli sa tche, ilsera dtruit.Pour dmarrer cet exemple :

    1. vous devez pralablement avoir install Java (cf. annexe A)

    2. ouvrez le dossier CalculetteJADE qui se trouve dans le dossier exemples du cd-rom(cf. annexe G)

    3. cliquez deux fois sur runJade.bat pour dmarrer JADE

    4. cliquez deux fois sur runCalculator.bat pour dmarrer l'agent Calculator

    5. cliquez deux fois sur runCalculetteuserInterface.bat pour dmarrer l'agent CalculetteUseret l'interface graphique CalculetteUserGUI

    6. en utilisant l'interface graphique (Figure 2.3), vous pouvez dornavant eectuerdes additions

    Implmentation

    Dans ce point, on vous prsente sur la base d'un exemple ctif les points principauxutiliss pour l'implmentation de notre calculatrice. Dans l'annexe B, le code source dela calculatrice est intgralement disponible.

  • 2.3. MediMAS 10

    1. Les agents : Ils tendent la classe Agent ou une de ses sous-classes. Un agent doitaussi implmenter la mthode setup dans laquelle on va ajouter les comportements,choisir le langage et choisir l'ontologie. Les agents lis une interface graphique,comme l'agent Calculator tendent gnralement la classe GuiAgent laquelle est unesous-classe de la classe Agent. Le Listing 2.1 donne un exemple d'implmentationd'agent.

    public class MyAgent extends Agent {2

    public void setup ( ) {4 / Enregis t rement du langage u t i l i s /

    th is . getContentManager ( ) . regis terLanguage (new SLCodec ( ) , FIPANames . ContentLanguage .FIPA_SL0 ) ;

    6

    / Enregis t rement de l on to log ie /8 th is . getContentManager ( ) . r eg i s te rOn to logy ( BasicOntology . ge t Ins tance ( ) ) ;

    10 / Ajout d un comportement /th is . addBehaviour (new MyBehaviour ( ) ) ;

    12

    }14

    }

    Listing 2.1: Exemple d'implmentation d'un agent

    2. Les comportements : Chacun des comportements doit tendre une sous-classe de Be-haviour et implmenter une mthode action qui dnira ce que fera ce comportement.Le Listing 2.2 donne un exemple d'implmentation de comportement.

    1 public class MyBehaviour extends Cycl icBehav iour {

    3 / Implmentat ion de l ac t i on qu e f f e c t u e r a l e comportement /public void ac t i on ( ) {

    5 System . out . p r i n t l n ( " Je su is MYBehaviour " ) ;}

    7

    }

    Listing 2.2: Exemple d'implmentation d'un comportement

    3. L'interface graphique : Dans cet exemple, l'interface est une interface Swing [19]cr l'aide du plug-in Eclipse Jigloo [11].

    4. L'ontologie : On nommera l'ontologie de cette exemple (CalculetteOntology). Cetteontologie contient les concepts Number (utilis pour les oprandes et le rsultat) etAdd (utilis pour l'opration). Le Listing 2.3 donne un exemple d'implmentationd'une ontologie.

    2.3. MediMAS

    2.3.1. Buts

    MediMAS est un systme multi-agents ayant comme but principal l'amlioration du sys-tme de transmission des rsultats d'un laboratoire mdical. Il se base plus spcique-ment sur le systme d'information actuel (current HCF Laboratory Information Systemou cLIS) permettant le transfert des rsultats entre le laboratoire cantonal de Fribourget l'hpital cantonal de Fribourg. Le systme actuellement utilis par ces institutions ne

  • 2.3. MediMAS 11

    public class MyOntology extends Ontology {2

    / /Nom de l on to log ie4 public s t a t i c f i n a l S t r i n g ONTOLOGY_NAME = " MyOntology " ;

    6 / / Crat ion du s i n g l e t o nprivate s t a t i c R e f l e c t i v e I n t r o s p e c t o r i n t r o s p e c t = new R e f l e c t i v e I n t r o s p e c t o r ( ) ;

    8 private s t a t i c Ontology the Ins tance = new MyOntology ( ) ;public s t a t i c Ontology get Ins tance ( ) {

    10 return the Ins tance ;}

    12

    / / Vocabula i re14 public s t a t i c f i n a l S t r i n g VILLE=" v i l l e " ;

    16 private MyOntology ( ) {super (ONTOLOGY_NAME, BasicOntology . ge t Ins tance ( ) ) ;

    18 t ry {/ / A jou t de Concepts , Act ions , Prd icats , de Champs . . .

    20

    / / Par exemple a jou t du concept v i l l e22 ConceptSchema vi l leSchema = new ConceptSchema ( VILLE ) ;

    add ( vi l leSchema , V i l l e . class ) ;24 }

    catch ( java . lang . Except ion e ) { e . p r in tS tackTrace ( ) ; }26 }

    }

    Listing 2.3: Exemple d'implmentation d'une ontologie

    permet pas un traitement optimal des rsultats d'analyse. Il se peut que le rsultat d'unemme analyse parvienne par plusieurs voies au mdecin, que le rsultat prenne trop detemps arriver ou dans le pire des cas que le rsultat n'arrive jamais chez le mdecin.MediMAS est en fait une couche d'agents logiciels qui va se greer au-dessus de ce sys-tme d'information et qui a comme ambition l'amlioration de la gestion de l'informationet plus particulirement la gestion des cas spciques et critiques qui pourraient se pr-senter. Il y a trois sortes de cas qui peuvent se prsenter [Pas08] : le cas normal, le casspcique ou cas normal dgnr et le cas critique. Le cas critique se prsente lorsqueune partie du rsultat de l'analyse peut mettre en danger le patient du mdecin. Le casspcique se prsente lorsque le mdecin a besoins d'un rsultat, mais le rsultat n'estpas encore disponible.

    2.3.2. Le systme actuel du laboratoire cantonal de Fribourg

    Le systme actuellement utilis pour transmettre les rsultats vers le mdecin se composede trois couches (Figure 2.4). L'infrastructure du systme d'information est la couchela plus basse. Cette couche contient par exemple les serveurs, les ordinateurs portables,de bureau et les bases de donnes. Le systme WinDMLab dvelopp par Datamed S.A.[5] vient se placer sur cette couche. Il permet entre autres la gestion du transport deschantillons et la transmission lectronique des analyses et de leurs rsultats. La troisimecouche est le rseau tlphonique.

    Dans le cas normal de traitement d'un rsultat du laboratoire, le personnel du laboratoireentre le rsultat dans le systme WinDMLab. Le mdecin va ensuite demander cesystme le rsultat. Dans le cas spcique ou critique, le personnel du laboratoire et lemdecin vont se contacter par tlphone.

  • 2.3. MediMAS 12

    Figure 2.4.: Systme de communication actuel

    2.3.3. Le systme avec MediMAS

    MediMAS va tre insr entre la couche WinDMLab et la couche du rseau tlphonique.Toutes les communications vont dsormais passer par des agents. Le communication partlphone reste nanmoins un recours dans les situations que MediMAS n'arriverait pas grer.

    Dans le cas normal de traitement d'un rsultat du laboratoire, le personnel du laboratoireentre toujours le rsultat dans le systme WinDMLab. La suite va se passer dans Medi-MAS. L'agent du personnel du laboratoire doit envoyer une notication de disponibilitde rsultat au systme MediMAS. L'agent du mdecin va ensuite recevoir cette notica-tion. Ce dernier peut demander le dtail du rsultat en envoyant une demande l'agentintgrateur ou riagent. Cet agent fait oce de pont entre MediMAS et WinDMLab. Il vadonc rcuprer le dtail qui a t entr dans la couche WinDMLab et le transmettre l'agent du mdecin. Aprs chaque notication de rsultat que l'agent du mdecin reoit,le mdecin doit conrmer MediMAS qu'il a bien pris connaissance du rsultat. S'il ne lefait pas, le systme va prendre des mesures. Aprs un dlai x, le serveur va envoyer unenouvelle fois le rsultat au mdecin et le responsable du laboratoire sera prvenu. Dans lecas critique, le temps d'attente avant la raction de l'agent serveur lorsque qu'il manqueune conrmation du mdecin est rduit. Pour le reste, le systme se comporte comme

  • 2.3. MediMAS 13

    Figure 2.5.: L'interface graphique de l'assistant du laboratoire Dupont

    pour le cas normal. Vous trouverez dans le Table 2.1 la liste des agents impliqus dansMediMAS et leurs rles respectifs.

    2.3.4. Exemple d'utilisation de MediMAS

    Nous allons prendre quatre rsultats de laboratoire pour expliquer le fonctionnement deMediMAS. Chacun de ces rsultats est identi par un numro de laboratoire prcd denlab.

    Donnes de l'exemple :Quatre agents lis quatre acteurs humains :

    1. 1 assistant de Laboratoire nomm Dupont

    2. 1 directeur de Laboratoire nomm Pasteur

    3. 1 mdecin nomm Hippocrate

    4. 1 autre mdecin nomm Jivago

    Quatre analyses demandes au laboratoire :

    1. nlab-001 : pas critique, pas urgent et demand par Hippocrate

    2. nlab-012 : pas critique, urgent et demand par Jivago

    3. nlab-103 : critique, pas urgent et demand par Hippocrate

    4. nlab-114 : critique, urgent et demand par Jivago

    Le droulement :

    1. Fin des analyses par le laboratoire : Les rsultats sont entrs dans la base dedonnes du systme WinDMLab.

    2. Notication : Dupont va entrer le numro de l'analyse (nlab), l'id du mdecin, lapriorit de l'analyse dans son interface de notication ensuite l'agent de Dupontva avertir l'agent du mdecin correspondant et l'agent gestionnaire d'alertes lesystme que le rsultat est disponible. La Figure 2.5 nous montre l'interface quel'assistant du laboratoire va utiliser.

  • 2.3. MediMAS 14

    Catgories d'agent Rles

    Agent d'audit - Reoit de chaque agent un message lorsque celui-ci commence ou nit une action.

    Agent du mdecin - Reoit de l'agent de l'assistant du laboratoiredes notications de disponibilits de rsultats.- Reoit de l'agent gestionnaire d'alertes desalertes de non-lecture de rsultats.- Informe le mdecin de la disponibilit des rsul-tats.- Demande l'agent d'intgration le dtail d'uneanalyse selon les critres dnis par le mdecin,reoit ces donnes et les transmet au mdecin .- Informe l'agent gestionnaire d'alertes lorsque lestatut (lu/non-lu) d'un rsultat reu par notreagent change.- Informe l'agent d'audit avant et aprs chaqueaction.

    Agent de l'assistant du laboratoire - Informe l'agent gestionnaire d'alertes et l'agentdu mdecin lorqu'un rsultat est disponible.- Informe l'agent d'audit avant et aprs chaqueaction.

    Agent du chef du laboratoire - Reoit une alerte de l'agent gestionnaired'alertes lorsqu'un rsultat a un statut non-luanormal et reporte cette alerte au directeur dulaboratoire.- Envoie une conrmation l'agent gestionnaired'alertes lorsque le directeur du laboratoire a lul'alerte.- Informe l'agent d'audit avant et aprs chaqueaction.

    Agent gestionnaire d'alertes - Alerte l'agent du directeur du laboratoire lors-qu'un rsultat avec un statut anormal est dtect.- Reoit de l'agent de l'assistant du laboratoireles rsultats des analyses.- Reoit une conrmation de l'agent du mdecinlorsqu'un rsultat a t lu par le mdecin.- Reoit un message de l'agent du directeur dulaboratoire lorsqu'une analyse a t conrme parle directeur du laboratoire.- Informe l'agent d'audit avant et aprs chaqueaction.

    Agent d'intgration - Rcupre les rsultats des tests dans cLIS selonla demande de l'agent du mdecin ou de celui dudirecteur du laboratoire et envoie ces rsultats cet agent.- Informe l'agent d'audit avant et aprs chaqueaction.

    Table 2.1.: Les agents et leurs rles [Pas08]

  • 2.3. MediMAS 15

    Figure 2.6.: L'interface graphique du mdecin Hippocrate

    3. Rception et conrmation de la rception des rsultats nlab-001, nlab-012 et nlab-103 : La disponibilit du rsultat est ache dans l'interface du mdecin (voirFigure 2.6). A partir de cet interface, le mdecin peut consulter le dtail dursultat et conrmer la rception de celui-ci. Hippocrate va conrmer nlab-001 etnlab-103. Jivago va conrmer nlab-012. Lorsque le mdecin conrme un rsultat, sonagent va envoyer un accus de rception l'agent gestionnaire d'alertes. Celui-civa mettre le statut de l'analyse lue dans la base de donnes.

    4. Le rsultat nlab-114 n'a pas t conrm : L'agent gestionnaire d'alertes le systmen'a pas reu de conrmation pour le rsultat nlab-114 de la part de l'agent deJivago aprs le dlai x par le systme. L'agent gestionnaire d'alertes va pourrgler ce problme envoyer un message l'agent de Pasteur. Lorsque Pasteur aurarussi transmettre le rsultat au mdecin par un autre moyen (tlphone ou enpersonne), il enverra l'aide de l'interface fourni par son agent (voir Figure 2.7)une conrmation l'agent gestionnaire d'alertes. Le gestionnaire mettra ensuitele statut du rsultat de l'analyse lue.

    5. Enregistrement des actions : A chaque fois qu'un agent dbute ou nit une action,celui-ci va envoyer un message l'agent d'audit. Ce dernier va tenir une listecontenant ces notications.

  • 2.3. MediMAS 16

    Figure 2.7.: L'interface graphique du chef du laboratoire

  • 3Agents pour supports mobiles

    3.1. Introduction Java ME . . . . . . . . . . . . . . . . . . . . . . 17

    3.1.1. Dirences principales avec Java SE . . . . . . . . . . . . . . . 17

    3.1.2. Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.1.3. Dploiement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.1.4. Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.2. Agents JADE pour supports mobiles . . . . . . . . . . . . . . . 24

    3.2.1. JADE LEAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3.2.2. Connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    3.2.3. Etapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.2.4. Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.1. Introduction Java ME

    Java ME ou Java Platform Micro Edition est une environnement exible pour les appli-cations destines aux petits supports (Natel, PDA, etc.). Java ME est divis en con-gurations, prols et en APIs optionnelles. Une conguration est conue pour un typespcique de support. Elle permet de spcier une machine virtuelle Java pour ce sup-port. Elle spcie galement un sous-ensemble de la plateforme standard de Java quisera utilis et d'autres APIs qui pourraient tre ncessaires. Un prol est plus spciquequ'une conguration. Il est bas sur une conguration et procure des APIs additionnelscomme un interface utilisateur, de l'enregistrement permanent, etc. On va utiliser dans ceprojet Mobile Information Device Prole (MIDP) [15] comme prol et Connected LimitedDevice Conguration (CLDC) [3] comme conguration.

    3.1.1. Dirences principales avec Java SE

    Il y a quelques dirences entre la version micro de Java et la version standard qu'il estutile de connatre. Ci-dessous, nous allons vous exposer d'une manire non-exhaustive cesdirences.

    Chargeur de classes : Java ME ne permet pas de dnir un chargeur de classes et dedcharger une classe lors de l'excution.

    17

  • 3.1. Introduction Java ME 18

    Machine virtuelle Java : La machine virtuelle Java de Java ME ore seulement unsous-ensemble des possibilits qu'ore celle de la machine standard de Java. L'impl-mentation de rfrence de CLDC est base sur un petit JVM appel KVM (K parceque la taille se mesure en kilobytes).

    Pr vrication : La vrication du bytecode avec Java ME ne se passe pas en unetape, comme avec Java SE, mais en deux tapes. Une premire vrication se passelors de la compilation (ou pr vrication) et une autre lors de l'excution sur le supportmobile.

    Finalisation : La nalisation n'est pas supporte par la conguration CLDC. APIs de haut niveau : Les APIs de haut niveau comme Swing et AWT ne sont passupportes.

    Dirences dans les librairies : Les paquets java.lang.*, java.util.* et java.io.* restent dispo-nibles, quoique rduits au strict minimum. Les fonctionnalits des autres paquets sontsupprimes ou prises en charge par les paquets MIDP.

    En rsum, Java ME nous ore moins d'outils, mais permet d'obtenir de plus petitesapplications, c'est- dire qui ncessitent moins de ressources physiques.

    3.1.2. Programmation

    Etapes

    Comme signal dans l'introduction de ce chapitre sur Java ME, nous allons utiliser commeprol MIDP et comme conguration CLDC. Le premier problme que l'on rencontre estle choix de la version du prol. Il existe sur le march trois versions principales de MIDP :MIDP 1, MIDP 2 et MIDP 3. La dernire version ne sera pas forcment le meilleur choix,car elle demandera un support pour l'excution plus rcent. Pour ce projet, nous avonschoisi la version MIDP 2.1 qui ore un bon compromis. Une application Java ME secompose d'un JAR (Java ARchive) et d'un chier JAD (Java Application Descriptor).Le chier JAD contient les informations ncessaires pour faire fonctionner l'application.Le JAR contient, comme pour les applications Java SE, les chier class, les ressources(images, sons ...) et un chier manifest, qui est en fait une copie du chier JAD. Pourcertains supports mobiles, le chier JAD extrieur au JAR n'est pas ncessaire car lemanifest se trouvant dans le JAR le remplace. Une application cr avec MIDP contientun ou plusieurs Midlets. Les Midlets sont concrtement des classes qui hritent de laclasse abstraite javax.microedition.midlet.Midlet. Dans la suite de cette section, les tapesimportantes de la cration d'une application MIDP vont tre exposes.

    Cration du chier JAD

    Un chier JAD contient des informations obligatoires (la version, le vendeur, le nom, etc.),la liste des MIDlets prsents dans l'application, certaines informations optionnelles (per-missions, icnes, etc.), des informations pour le dploiement Over The Air (conrmationde suppression, notication de destruction, notication d'installation) et des informationsdnies par l'utilisateur. Le Listing 3.1 montre un chier JAD simple. Le dploiement OverThe Air va tre expliqu dans la partie dploiement de ce chapitre (cf. sous-section 3.1.3).

  • 3.1. Introduction Java ME 19

    1 MIDletVersion : 1 .0 .0MIDletVendor : Joseph Schaeppi

    3 MIDletJarURL: C a l c u l e t t e . j a rMic roEd i t ionCon f igu ra t i on : CLDC1.1

    5 MicroEd i t ionP r o f i l e : MIDP2.1MIDlet1: Ca lcu le t te , / icones / calc_2 . png , c a l c u l e t t e . Calculet teMIDP

    7 MIDletName: C a l c u l e t t e

    Listing 3.1: Fichier JAD de l'exemple calculatrice (cf. sous-section 3.1.4)

    Cration du ou des MIDlets

    Une application Java ME utilisant MIDP contient un ou plusieurs MIDlet. Un MID-let est en fait une petite application dont la classe principale hrite de la classe ja-vax.microedition.midlet.MIDlet. La classe principale d'un MIDlet contient obligatoirement auminimum trois mthodes : destroyApp qui est appel lors de la destruction du MIDlet, pauseApp lorsque le MIDlet est en pause, et startApp au dmarrage du MIDlet.

    Cration d'une interface graphique simple

    Java ME ne permet pas l'utilisation des APIs de haut niveau utilises avec Java SE.Mais, une srie de classes permettant de crer des interfaces graphiques plus approprieau mobile est disponible. Ces classes se trouvent principalement dans les paquets ja-vax.microedition.lcdui et javax.microedition.lcdui.game. Une interface graphique pour une appli-cation Java ME est constitue d'un container principal auquel on ajoute des sous-lmentset un menu. Le Listing 3.2 nous montre l'implmentation d'un Midlet achant HelloWorld et ayant un bouton pour quitter l'application.

    Optimisation

    Un programme utilise souvent plus de ressources qu'il lui en faudrait pour remplir sesobjectifs. Ce gchis n'est pas important dans le cas de l'ordinateur de bureau standard.Mais, il pose problme lorsque la quantit de mmoire est limite. Il existe plusieurstechniques et programmes permettant d'optimiser le code.

    Nous allons utiliser pour nos programmes Java ME un utilitaire nomm ProGuard [16].Cet utilitaire peut servir de rducteur de classe Java, d'optimiseur, d'obfuscateur et deprvricateur. Nous allons principalement utiliser cet utilitaire comme obfuscateur. Unobfuscateur est un utilitaire qui transforme le bytecode en un bytecode dicilement d-compilable. Pour ce faire, l'obfuscateur optimise le code en rordonnant les microinstruc-tions, change l'organisation de la mmoire, le nom des identiants et ajoute un peu decode parasite. L'obfuscateur va dans la plupart des cas gnrer un code plus compactet plus lger. Proguard peut tre utilis en ligne de commande ou directement partird'Eclipse si vous avez l'extension Eclipse me installe. Le Listing 3.3 nous montre com-ment dmarrer Proguard en ligne de commande en utilisant quelques options utiles. Uneautre faon de rduire la mmoire utilise est d'agir sur la manire de programmer. Ilfaudrait viter de crer trop d'objets, rutiliser si possible les objets et mettre les objetsqui ne sont plus utiliss null.

  • 3.1. Introduction Java ME 20

    1 public class SimpleMid le t extends MIDlet implements CommandListener {

    3 private Command exitCommand ;

    5 protected void destroyApp ( boolean arg0 ) throws MIDletStateChangeException {th is . no t i f yDes t royed ( ) ;

    7 }

    9 protected void pauseApp ( ) {}

    11

    protected void s tar tApp ( ) throws MIDletStateChangeException {13 / / commande

    exitCommand = new Command( " E x i t " , Command. EXIT , 0) ;15

    / / Champ tex te17 Tex tF ie ld s imp leTex tF ie ld = new Tex tF ie ld ( " " , " He l lo World " , 15 , Tex tF ie ld .UNEDITABLE) ;

    19 / / con ta ine r p r i n c i p a l de l i n t e r f a c e graphiqueForm simpleForm = new Form ( " Simple M id le t " ) ;

    21 simpleForm .addCommand( exitCommand ) ;simpleForm . append ( s imp leTex tF ie ld ) ;

    23 simpleForm . setCommandListener ( th is ) ;

    25 / / Mise j o u r de l a f f i chageDisp lay . ge tD isp lay ( th is ) . se tCur ren t ( simpleForm ) ;

    27

    29 }

    31 public void commandAction (Command c , D isp layab le d ) {i f ( c == exitCommand )

    33 t ry {th is . destroyApp ( true ) ;

    35 } catch ( MIDletStateChangeException e ) {/ / TODO Autogenerated catch block

    37 e . p r in tS tackTrace ( ) ;}

    39

    }41

    }

    Listing 3.2: Un Midlet achant Hello World

    java j a r proguard . j a r @config . pro2

    / F i c h i e r con f i g . pro /4 # L i b r a i r i e s l i b r a r y j a r s monprojet . j a r ; j2me . j a r

    6

    #Jar d ent re e t Jar de s o r t i e8 i n j a r so u t j a r

    10

    #Cre une l i s t e de ce que l on garde12 pr in tseeds

    14 #A u t i l i s e r avec windows parce que ce systme d e x p l o i t a t i o n ne f a i t pas l a d i f f r e n c e ent re a. java e t A . java

    dontusemixedcaseclassnames16

    #Empche Proguard d e f f e c t u e r l a suppression de ce r ta ines classes18 keep public class extends javax . m i c roe d i t i on . m id le t . MIDlet

    keep public class jade . imtp . leap . JICP . BIFEDispatcher

    Listing 3.3: Dmarrage de Proguard

  • 3.1. Introduction Java ME 21

    3.1.3. Dploiement

    Il y a plusieurs possibilits pour le transfert de programmes Java ME vers un tlphoneportable. On peut par exemple utiliser une connection USB, en srie ou le Bluetooth. Cestechniques de dploiement physique ncessitent que le support contenant le programmesoit proximit de notre tlphone.

    Over The Air programming (OTA) est une mthode de distribution de logiciels et de mises jour pour les appareils mobiles. Avec cette mthode, l'acquisition des programmes sefait par l'intermdiaire du Wireless Application Protocol (WAP) [24].

    Le fonctionnement d'OTA :

    1. L'utilisateur se connecte avec son tlphone mobile sur un site WAP.

    2. Il slectionne une application parmi les applications disponibles.

    3. L'application est tlcharge vers la mmoire du tlphone

    4. Enn, le tlphone installe cette application.

    On pourrait croire que OTA est seulement un systme de tlchargement d'applicationvia le WAP. Mais, cela n'est pas le cas. OTA permet un suivi des applications. Plusieursfonctions intressantes peuvent tre actives via le chier JAD. Par exemple :

    MIDlet-Install-Notify : Notre application se connectera lors de son installation uneurl que l'on aura pralablement indique dans le chier jad.

    MIDlet-Delete-Notify : Avec cette fonction, l'application fera de mme lors de sa sup-pression.

    MIDlet-Delete-Conrm : Cette fonction permet l'achage d'un message lors de la sup-pression de l'application.

    Les tapes d'OTA peuvent tre facilement automatises en utilisant Antenna [2] quifournit une srie de tches Ant [1] pour le dveloppement d'application utilisant le ProlMIDP. OTA est surtout intressant lorsque l'on veut eectuer le dploiement d'applicationcommerciales ou/et grand chelle. Dans la partie exemple (cf. sous-section 3.1.4) de cettesection, nous eectuerons un dploiement utilisant OTA en local.

    3.1.4. Exemple

    Nous allons crer une calculatrice trs simple pour illustrer la cration d'une applicationJava ME. Concrtement notre petite calculette va permettre l'addition, la soustraction, ladivision et la multiplication de deux nombres. Nous allons d'abord dnir dans le chierjad les champs requis. Dans cette exemple, on utilisera la conguration CLDC 1.1 et leprole MIDP 2.1. Ensuite, nous crerons une classe CalculetteMIDP qui sera l'unique classepropre cette application. Nous allons dcrire dans la suite de ce point les lmentsprincipales de cette classe

    La classe CalculetteMIDP va tendre comme tout les MIDlets la classe MIDlet. Elle implmen-tera aussi CommandListener qui permettra d'attribuer des actions a des commandes. Il fautensuite implmenter ce qui sera ach l'cran et les actions associes aux commandes.Le gestionnaire de commandes est implment dans une mthode nomme commandActionqui se trouve dans une classe implmentant l'interface CommandListener. Cette classe peuttre la classe o est implmente l'interface graphique ou une autre. Dans cette exemple,la classe CalculetteMain sera le gestionnaire de commande. Le Listing 3.4 nous montre

  • 3.1. Introduction Java ME 22

    Figure 3.1.: Calculatrice sur l'mulateur Java ME

    1 public void commandAction (Command c , D isp layab le d ) {i f ( c == a d d i t i o n ) {

    3 I n t ege r op1 = In tege r . valueOf ( operand1 . g e t S t r i n g ( ) ) ;I n tege r op2 = In tege r . valueOf ( operand2 . g e t S t r i n g ( ) ) ;

    5 i n t r e s u l t = op1 . i n tVa lue ( ) + op2 . i n tVa lue ( ) ;I n tege r r e s u l t I n t e g e r = new I n t ege r ( r e s u l t ) ;

    7 S t r i n g r e s u l t S t r i n g = r e s u l t I n t e g e r . t o S t r i n g ( ) ;r e s u l t a t . s e t S t r i n g ( r e s u l t S t r i n g ) ;

    9 }. . . .

    11 }

    Listing 3.4: Extrait de la mthode commandAction de l'exemple Calculette

    un extrait de la mthode commandAction. L'interface graphique que l'on a dveloppe estreprsente sur la Figure 3.1.

    Pour dmarrer cet exemple :

    1. Ouvrez le dossier exemples\CalculetteMIDP.

    2. Dans le dossier deployed, vous trouverez le jar et jad de l'exemple.

    3. Vous avez ensuite plusieurs possibilits pour excuter le Midlet Calculette : cliquer deux fois sur startCalculette.bat pour ouvrir la calculette avec un mulateur(Listing 3.5),

    transfrer l'application sur votre tlphone portable. 1

    1Le transfert peut se faire en utilisant OTA (cf. sous-section 3.1.3) ou en eectuant un transfert par cbleavec l'utilitaire fournit par le constructeur de votre tlphone.

  • 3.1. Introduction Java ME 23

    1 emulator . exe gui Xdesc r ip to r : " C a l c u l e t t e . jad "

    Listing 3.5: Dmarrer l'mulateur du Sun Wireless Toolkit en ligne de commande

    1 AddType t e x t / vnd . wap . wml wmlAddType a p p l i c a t i o n / javaarch ive j a r

    Listing 3.6: Le chier .htaccesss de notre site WAP

    Dploiement de l'exemple avec OTA

    Dans ce point, nous allons dployer l'exemple du point prcdent en utilisant OTA. Oneectuera le dploiement en local en utilisant WAMPSERVER [23] et l'mulateur duSeries 40 5th Edition SDK, Feature Pack 1 [9] de Nokia. Ce serveur et cet mulateursont disponibles gratuitement. Il est bien sr possible d'utiliser d'autres outils. On va toutd'abord crer notre mini site wap sur lequel notre calculatrice va tre tlchargeable. Sivous utilisez WAMPSERVER, vous devez enregister votre site dans le rpertoire www.

    Notre mini site wap se compose :

    1. du jar de la Calculatrice,

    2. d'un .htaccess (Listing 3.6) contenant des informations prcisant au serveur ce qu'ildoit faire des chiers jar et wml

    3. d'un chier WML [26] (Listing 3.7) faisant oce de page d'accueil pour notre siteWAP

    On va dmarrer maintenant notre mulateur, ouvrir notre petit site WAP (Figure 3.2).Il sut ensuite de slectionner Telecharger et d'accepter l'installation pour que votrecalculatrice soit prte l'emploi.

    2 < !DOCTYPE wml PUBLIC " / /WAPFORUM/ / DTD WML 1 . 1 / /EN" " h t t p : / /www. wapforum . org /DTD/ wml_1 . 1 . xml ">

    4

    6

    < / do>8 < / template>

    10

    12 Ma C a l c u l a t r i c e Telecharger< / a>

    14 < / p>

    16 < / card>< / wml>

    Listing 3.7: L'index d'un site WAP utilis pour OTA

  • 3.2. Agents JADE pour supports mobiles 24

    Figure 3.2.: Notre site WAP

    3.2. Agents JADE pour supports mobiles

    3.2.1. JADE LEAP

    A la n de l'anne 1999, un groupe constitu des acteurs principaux du secteur de latlcommunication mobile se cre pour dvelopper une plateforme conforme aux normesFIPA pouvant tre utilise sur les supports mobiles. Dbut 2000, un projet nomm LEAP(Lightweight Extensible Agent Platform) est cr. Celui-ci a comme but premier la cra-tion d'un middleware susamment lger pour les supports ayant des contraintes avecleurs ressources. Aprs quelques valuations, JADE est choisi comme plateforme de base.Le travail de ce groupe dbouche nalement sur une extension de JADE. L'implmenta-tion de cette extension est en fait une rcriture de certaines parties du noyau de JADE.On obtient avec cette extension un environnement modi d'excution nomm JADE-LEAP se dclinant en une version Java SE, personal Java (pJava) et MIDP. JADE etJADE-LEAP pour Java SE fournissent la mme API. D'un point de vue externe, la dif-frence entre les deux est surtout visible dans l'administration de l'excution. D'un pointde vue interne, ils dirent radicalement. JADE-LEAP pour MIDP peut tre considrcomme une version de JADE-LEAP pour Java SE laquelle on aurait enlev quelquesfonctionnalits.

    JADE-LEAP permet l'utilisation de deux modes d'excutions : indpendant (stand-alone)ou spar (split). Le mode indpendant est conseill pour la version Java SE, support parla version pJava et non support par la version MIDP. La version spare est supporte parla version Java SE, conseille pour la version pJava et est obligatoire pour la version MIDP.Quand on dmarre LEAP en utilisant l'excution spare, l'utilisateur cre une ne coucheappele front-end qui ore les mmes fonctionnalits qu'un container. Mais, le front-end n'implmente qu'une partie de ces fonctionnalits et dlgue le reste un processusdistant nomm back-end. L'union du front-end et du back-end forme un container. Cesdeux parties communiquent par une connexion ddie. Le mode indpendant consiste enl'utilisation d'un container non-spar. Dans ce projet, nous allons utiliser la version pour

  • 3.2. Agents JADE pour supports mobiles 25

    Figure 3.3.: Exemple d'utilisation de LEAP

    MIDP de JADE-LEAP et donc le mode d'excution spar. La Figure 3.3 nous montreun exemple possible d'utilisation de LEAP.

    3.2.2. Connexion

    Un des problmes qui surgit rapidement lorsque l'on parle de dveloppement pour dessupports mobiles est la gestion de la mobilit. L'architecture de JADE-LEAP nous four-nit un mcanisme nomm mediator permettant de rgler ce problme. Concrtement, lemediator gre les demandes de cration de back-ends et maintient une liste de ceux-ci. Lemediator est donc le seul lment permettant la connexion ou la reconnexion des supportsmobiles au reste de la plateforme.

    La connexion entre le tlphone portable contenant le front-end et l'ordinateur sur lequels'excute le back-end se fait en utilisant gnralement internet par le GPRS. Le GPRSou General Packet Radio Service est une norme drive de GSM (Global System forMobile Communications) qui est utilise en tlphonie mobile. Le GPRS contrairementau GSM permet la transmission par paquets. L'avantage de ce type de transmission estque les ressources ne sont utilises que lorsque l'on n'en a vraiment besoin. La Figure 3.4nous montre un rsum des transmissions mobiles sans l possibles avec leurs vitesses detransmissions respectives [20].

  • 3.2. Agents JADE pour supports mobiles 26

    Figure 3.4.: Transmission sans l

    3.2.3. Etapes

    Du point de vue du dveloppement, JADE LEAP et JADE s'utilisent pratiquement dela mme manire. Du point de vue de l'excution, il faut faire attention ce que toutles containers s'excutent sous LEAP car LEAP et JADE ne peuvent pas communiquerensemble. Pour rappel, voici trois tapes importantes du dveloppement. (i) crationd'une ontologie (si l'ontologie basique ne sut pas) (ii) cration des comportements(en hritant une sous-classe de Behaviour) (iii) cration des agents (en hritant la su-perclasse jade.core.Agents). On va ajouter chaque agent le ou les comportements corres-pondant et l'ontologie correspondante. Pour aider l'utilisateur Java ME, deux midletssont mis disposition dans la version MIDP de LEAP. Le premier est jade.util.leap.Config.Celui-ci permet de dnir des paramtres comme le port et l'adresse ip. Le deuxime,jade.util.leap.OutputViewer permet l'achage des messages que l'excution auraient gnrs.

    3.2.4. Exemple

    Nous allons reprendre l'exemple de l'addition de deux nombres que nous avons dvelopppour JADE (cf. section 2.2).

    L'agent Calculator s'occupera encore de l'addition de deux nombres. Un agent Calculet-teUserMIDletAgent s'occupera de la liason entre l'agent Calculator et l'interface graphiqueCalculetteUserMIDletGUI. Calculator fonctionnera encore sous JADE. Donc, son implmen-tation ne sera pas change. Le container contenant l'agent CalculetteUserMIDletGUI seraen partie sur l'mulateur ou le tlphone (le front-end) et en partie sur l'ordinateur debureau.

    Pour excuter l'exemple :

    1. Ouvrez le dossier CalculetteJADE qui se trouve dans le dossier exemples.

    2. Cliquez deux fois sur runJadeleap.bat pour dmarrer JADE LEAP.

    3. Cliquez deux fois sur runCalculatorLEAP.bat pour dmarrer l'agent Calculator.

  • 3.2. Agents JADE pour supports mobiles 27

    Figure 3.5.: Conguration de notre calculatrice

    4. Retournez ensuite dans le rpertoire exemples (cf. annexe G)et ouvrez CalculetteJA-DELEAPMIDP.

    5. Vous trouverez dans le rpertoire deployed le jar et le jad de cet exemple.

    6. Excutez le programme se trouvant dans ce dossier avec un mulateur (en cliquantdeux fois sur startCalculette) ou en le transfrant sur un tlphone portable. Pour quel'agent puisse se connecter la plateforme, il faut encore l'aide du midlet Congentrer l'ip (key=host) et le port utilis (key=port) . La Figure 3.5 nous montrecette tape

  • 4Agents dvelopps

    4.1. But du dveloppement . . . . . . . . . . . . . . . . . . . . . . . 28

    4.2. Ontologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.3. Assistant de laboratoire . . . . . . . . . . . . . . . . . . . . . . . 29

    4.3.1. Buts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.3.2. Dveloppement . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.3.3. Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.4. Mdecin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.4.1. Buts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.4.2. Dveloppement . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.4.3. Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.5. Chef du laboratoire . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4.1. But du dveloppement

    La partie dveloppement de ce projet consiste en la conception d'agent JADE LEAP pourtlphone portable utilisant le prol MIDP. Le but de ces agents est d'orir une interfacegraphique l'utilisateur humain et de grer la transmission et la rception de donnes del'interface vers l'agent de l'utilisateur qui se trouve dans MediMAS. On nommera par lasuite cet agent le Core Agent.

    4.2. Ontologie

    L'implmentation des classes de l'ontologie que l'on utilisera avec les agents dvelopps sefait pratiquement de la mme manire que dans un projet utilisant JADE. Mais, LEAPpour MIDP permet seulement l'utilisation d'un seul introspecteur nomm MicroIntrospec-teur. Un introspecteur s'occupe de la conversion des objets crs partir des classes del'ontologie vers des descripteurs abstraits (en utilisant la mthode externalise) ou des des-cripteurs vers des objets (avec la mthode internalise). Le descripteur abstrait est utilispour la transmission de donnes entre les agents. Le MicroIntrospector va laisser auxobjets choisir comment les conversions entre les objets et le descripteurs vont tre faites.

    28

  • 4.3. Assistant de laboratoire 29

    1 public class Analys is implements Concept , I n t r o s p e c t a b l e{

    3

    /Contenu de l a c lasse /5 . . .

    7 /Mthode permet tant l a c ra t i on d un desc r i p t eu r a b s t r a i t /public void e x t e r n a l i s e ( AbsObject absObj , Ontology onto ) throws OntologyExcept ion {

    9 AbsConcept abs = ( AbsConcept ) absObj ;abs . se t ( Hosp i ta lOnto logy . ANALYSIS_DATE, th is . getDate ( ) ) ;

    11 abs . set ( Hosp i ta lOnto logy . ANALYSIS_INDICATIONS , th is . g e t I n d i c a t i o n s ( ) ) ;abs . se t ( Hosp i ta lOnto logy . ANALYSIS_NLAB, th is . getNlab ( ) ) ;

    13 abs . set ( Hosp i ta lOnto logy . ANALYSIS_PATIENTPID , th is . ge tPat ientPID ( ) ) ;abs . se t ( Hosp i ta lOnto logy . ANALYSIS_PHYSICIANPID , th is . getPhysic ianPID ( ) ) ;

    15 abs . set ( Hosp i ta lOnto logy .ANALYSIS_URGENT, th is . getUrgent ( ) ) ;}

    17

    /Mthode permet tant l i n t e r n a l i s a t i o n d un desc r i p t eu r vers un ob jec t /19 public void i n t e r n a l i s e ( AbsObject absObj , Ontology onto )

    throws UngroundedException , OntologyExcept ion {21 AbsConcept abs = ( AbsConcept ) absObj ;

    physic ianPID = abs . ge t I n tege r ( Hosp i ta lOnto logy . ANALYSIS_PHYSICIANPID) ;23 urgent = abs . getBoolean ( Hosp i ta lOnto logy .ANALYSIS_URGENT) ;

    i n d i c a t i o n s = abs . ge t S t r i n g ( Hosp i ta lOnto logy . ANALYSIS_INDICATIONS) ;25 pat ien tP ID= abs . ge t I n tege r ( Hosp i ta lOnto logy . ANALYSIS_PATIENTPID) ;

    nlab= abs . g e tS t r i ng ( Hosp i ta lOnto logy . ANALYSIS_NLAB) ;27 date= abs . ge t I n tege r ( Hosp i ta lOnto logy .ANALYSIS_DATE) ;

    29 }}

    Listing 4.1: Implmentation des mthodes internalise et externalise de la classe Analysis

    Avec les autres introspecteurs, les objets n'ont pas se soucier de la manire dont ils vonttre converti.

    Les point suivants doivent tre eectus lors de l'adaptation d'une ontologie pour MIDP : Dans la classe principale de votre ontologie (par expl. HospitalOntology, il faut remplacervotre instrospecteur (par expl. ReflectiveIntrospector) par un MicroIntrospector.

    Toutes les classes de l'ontologie doivent implmenter l'interface Introspectable (c--dles mthodes internalise et externalise). Le Listing 4.1 nous montre l'implmentationd'externalise et d'internalise pour la classe Analysis.

    4.3. Assistant de laboratoire

    4.3.1. Buts

    L'agent GUI de l'assistant du laboratoire doit remplir les tches suivantes : A partir d'un numro de laboratoire, l'assistant du laboratoire doit savoir si le rsultatest urgent ou critique et pouvoir rcuprer l'identiant du mdecin demandeur.

    L'assistant du laboratoire doit pouvoir envoyer une notication de disponibilit dersultat.

    L'agent doit pouvoir se connecter et dconnecter correctement de MediMAS. L'agent doit envoyer un message l'agent d'audit lorsqu'il dbute ou termine uneaction.

  • 4.3. Assistant de laboratoire 30

    4.3.2. Dveloppement

    Les comportements

    Les comportements (Behaviour) que l'on utilisera avec cet agent sont les mmes que ceuxqui ont t utiliss avec l'agent GUI de l'assistant du laboratoire qui fonctionne avec JavaSE, c'est--dire : SendResultSummaryInitiatorBehaviour : demande au systme en passant par le core agentde l'assistant du laboratoire les donnes gnrales (si l'analyse est critique ou urgent etl'identiant du mdecin demandeur).

    SendResultSummaryResponderBehaviour : attend les donnes que l'assistant du laboratoirea demand puis demande une mise jour du GUI.

    SendNotificationInitiatorBehaviour : envoie les notications l'agent core.La Figure 4.1 montre un diagramme de classe pour ces comportements. Toutes les classesvisibles sur ce diagramme font partie de MediMAS. On voit que les comportements Sen-dResultSummaryInitiatorBehaviour et SendNotificationInitiatorBehaviour tendent HospREInitiator-TemplateBehaviour. Cette classe tend REInitiatorTemplateBehaviour qui est une sous-classe dejade.proto.SimpleAchieveREInitiator. Le comportement SendResultSummaryResponderBehaviourtend HospREResponderTemplateBehaviour qui est une sous-classe de REResponderTemplate-Behaviour. Cette dernire classe tend jade.proto.SimpleAchieveREResponder.

    LabAssistantGUI

    La classe LabAssistantGUI contient l'implmentation du GUI. Cet interface comprendun champ texte pour rentrer le numro de laboratoire, un autre o s'achera l'identiantdu mdecin demandeur et un groupe choix multiples o l'on pourrra voir si le rsultatest urgent ou/et critique. L'interface possde quatre commandes. La commande Reset va permettre la rinitialisation des champs. La commande Browser permet d'obenir le status (critique ou urgent) et l'identiantdu mdecin.

    La commande Exit permet de quitter l'agent. La commande Notify permet de prvenir le mdecin correspondant que son analyseest disponible.

    Pour implmenter cette interface, un objet Form (sorte de formulaire) est cr. Puis, ony ajoute les commandes et les autres champs.

    Pour que l'interface soit utilisable, nous devons encore lier les commandes des m-thodes. La mthode lie la commande Reset est facilement implmentable. Le pointprincipal de la mthode lie la commande Browser est la cration d'un comportementSendResultSummaryInitiatorBehaviour. Dans la mthode lie la commandee Notify, unSendNotificationInitiatorBehaviour sera cr. Le code source de cette interface est disponibledans l'annexe C.1.

    4.3.3. Test

    L'agent dvelopp a t test dans plusieurs congurations de dploiement : avec l'mulateur et MediMAS tournant sur la mme machine (cf. Figure 5.2) ; sur un rseau local avec l'mulateur sur une machine et MediMAS sur une autre ;

  • 4.4. Mdecin 31

    Figure 4.1.: Diagramme de classe pour les comportements de l'agent GUI de l'assistantdu laboratoire

    et nalement avec l'agent tournant sur un tlphone portable qui se connecte Medi-MAS en utilisant internet sur le GPRS.

    Aucun bug n'a t trouv. Il faut nanmoins faire attention ce que les agents importantsde MediMAS fonctionnent (agents core du mdecin, de l'assistant du laboratoire et duchef du laboratoire, l'agent intgrateur et l'agent s'occupant des alertes).

    4.4. Mdecin

    4.4.1. Buts

    L'agent GUI du mdecin doit remplir les tches suivantes : Le mdecin doit pouvoir voir sur son interface graphique les alertes en attente.

  • 4.4. Mdecin 32

    Le mdecin doit pouvoir conrmer qu'il a t inform de la disponibilit d'un rsultat. Le mdecin doit pouvoir visualiser le dtail d'une analyse. L'agent doit pouvoir se connecter et dconnecter correctement de MediMAS. L'agent doit envoyer un message l'agent d'audit lorsqu'il dbute ou termine uneaction.

    4.4.2. Dveloppement

    Les comportements

    Les comportements que l'on utilisera avec cet agent sont encore une fois pratiquementsimilaires ceux qui ont t utiliss avec l'agent GUI qui fonctionne avec Java SE, c'est--dire : SendNotificationResponderBehaviour : reoit les notications de disponibilit de rsultat etmaintient une liste de ceux-ci.

    SendResultInitiatorBehaviour : demande l'agent core du mdecin de chercher le dtaild'une analyse puis de lui envoyer.

    SendResultResponderBehaviour : reoit le dtail des rsultats et demande une mise jourdu GUI.

    CheckResultAsTreatedInitiatorBehaviour : informe son core agent qu'un rsultat a t conrm. CheckResultAsTreatedResponderBehaviour : reoit la conrmation de son core agent quel'agent s'occupant des alertes a bien supprim l'analyse conrme de la liste des analysesen attente et ensuite il va demander une mise jour du GUI.

    La Figure 4.2 montre un diagramme de classe pour ces comportements. On voit surce diagramme que nos comportements tendent les mmes classes que dans l'implmen-tation du GUI de l'agent du laboratoire, c'est--dire HospREInitiatorTemplateBehaviour ouHospREResponderTemplateBehaviour.

    PhysicianGUI

    Le GUI qui est implment dans cette classe est spar en deux parties. La Figure 4.3nous montre ces deux partie. La premire partie permet l'achage de la liste des rsultatsen attente et la deuxime partie permet l'achage du dtail d'un rsultat prcis. Au lieud'utiliser les mots urgents et critiques, nous utiliserons une icne contenant un c poursignier que le rsultat est critique, contenant un u pour les rsultats urgents et contenantun c et un u pour les rsultats critiques et urgents. Le code source de cette interface estdisponible dans l'annexe C.2.

    4.4.3. Test

    Pendant les tests un dfaut de l'agent est apparu. La quantit de mmoire disponiblen'est pas susante pour traiter tout les messages lorsque qu'il y a plusieurs analyses si-multanment. Pour diminuer les eets de ce problme, il est possible de changer les dlaisavant l'envoi des alertes. Ces dlais peuvent tre changs dans la classe HospitalConstantsdu paquet hospital.utils (NORMAL PENDINGTIME, URGENT PENDINGTIME et CRITICAL PEN-DINGTIME).

  • 4.5. Chef du laboratoire 33

    4.5. Chef du laboratoire

    L' agent GUI du chef du laboratoire n'a pas t dvelopp dans le cadre de ce projet. Cetagent a beaucoup de point commun avec l'agent gui du mdecin. Il doit tout comme cedernier grer des notications de disponibilit de rsultat (rception, achage, conrma-tion) et mettre disposition de l'utilisateur le dtail des analyses.

  • 4.5. Chef du laboratoire 34

    Figure 4.2.: Diagramme de classe pour les comportements de l'agent GUI du mdecin

  • 4.5. Chef du laboratoire 35

    Figure 4.3.: Le GUI de l'agent du mdecin

  • 5Mode d'emploi

    5.1. Pr-requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    5.2. Installation et conguration . . . . . . . . . . . . . . . . . . . . 36

    5.3. Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    5.1. Pr-requis

    Pour pouvoir faire fonctionner les agents qui ont t implments, nous avons besoin : du jar contenant les chiers de l'agent, d'un tlphone portable ou d'un mulateur de tlphone portable, de MediMAS 1 [14] .Plus prcisment, le tlphone portable doit supporter le prole MIDP 2.1 et permettrel'envoi de paquets vers internet (internet par GPRS). Pour la conguration de la connexionde votre tlphone, le mieux est de vous rfrer la documentation fournie par le fabricantde votre tlphone ou votre oprateur.

    Si vous ne possdez pas de tlphone portable compatible, il existe de nombreux mula-teurs. Sun fournit avec son Wireless Toolkit des mulateurs gnriques [21]. Des mula-teurs pour des modles spciques sont fournis par la plupart des fabricants (p.ex Nokia[22], Sony Ericsson [18] et Samsung [17]).

    Dans le cadre de ce projet, les objets dvelopps ont t tests sur un Nokia 6500 et uneversion lgrement adapte sur un htc TyTN pro.

    5.2. Installation et conguration

    La manire la plus simple de transfrer le jar d'un ordinateur vers votre tlphone estd'utiliser les programmes fournis par le constructeur. Nokia, par exemple, fournit dans sonNokia PC Suite un utilitaire nomm Nokia Application Manager. Dans le dossier exten-sionMediMAS du cd-rom (cf. Annexe G), vous trouverez les sources des agents dvelopps.Dans le rpertoire des deux agents dvelopps, vous trouverez un rpertoire deployed o

    1Ce projet a t dvelopp pour la version 3.0 de MediMAS

    36

  • 5.3. Utilisation 37

    Figure 5.1.: Exemple de conguration avec le midlet Cong

    se trouve un chier jar et un chier jad que vous pouvez transfrer sur votre tlphone etun chier bat qui vous permet de dmarrer l'agent sur un mulateur.

    Lorsque l'application aura t transfre, vous devez eectuer les tapes suivantes survotre tlphone portable ou votre mulateur :

    1. Ouvrez le dossier contenant vos applications.

    2. Ouvrez le dossier de l'agent que vous voulez congurer.

    3. Ouvrez Config, qui est un Midlet permettant de congurer l'agent.

    4. Pour entrer la conguration, il vous faudra pour chaque paramtre appuyer sur Set,entrer dans le champ key le nom du paramtre que vous voulez congurer et mettresa valeur dans le champ value. Les deux prochaines tapes sont eectuer de cettemanire.

    5. Entrez l'adresse ip (key=host) et le port (key=port).

    6. Entrez le prol de la personne lie l'agent. Les champs obligatoires sont le type del'agent (key=type et value=LabAssistant, Physician ou Labdirector), le nom (key=name),le prnom (key=firstname) et la date de naissance (key=birthday). Les champs optio-nels sont par exemple la rue (key=street), la ville (key=city), le pays (key=country),le numro de tlphone (key=phonenumber), la fonction (key=function), le laboratoire(key=laboratory) et l'hpital (key=hospital).

    7. A ce stade l, vous devriez avoir dans votre Cong quelque chose de similaire cequ'on voit sur Figure 5.1.

    8. La conguration de notre agent est maintenant termine.

    5.3. Utilisation

    Les oprations pour dmarrer un agent sont les suivantes :

    1. Ouvrez le dossier contenant vos applications.

    2. Ouvrez le dossier de l'agent.

    3. Dmarrez l'agent.

  • 5.3. Utilisation 38

    4. Autorisez l'accs au rseau.

    5. Pressez ensuite sur Next lorsque le logo de MediMAS apparat.

    6. Vous tes maintenant sur l'cran principal de l'interface de votre agent.

    La Figure 5.2 nous montre les quatre dernires tapes pour l'agent de l'assistant dulaboratoire.

  • 5.3. Utilisation 39

    Figure 5.2.: Dmarrage de l'agent de l'assistant du laboratoire

  • 6Conclusion

    6.1. Dveloppement possible de MediMAS

    Un mdecin ne vas pas forcment tre devant son ordinateur ou avoir l'agent GUI de sontlphone portable dmarr lorsque une notication concernant une analyse urgente etcritique va arriver. On pourrait amliorer l'agent du mdecin pour que celui-ci avertisse lemdecin par SMS ou par beeper de la disponibilit du rsultat d'une analyse pouvant trecruciale pour la sant du patient. Le navigateur web est actuellement une des applicationsles plus utilises. Au lieu d'utiliser un autre programme, on pourrait utiliser directementun navigateur web [Kel06] pour que la personne physique puisse interagir avec son agent.On pourrait imaginer un site web sur lequel on peut se connecter son agent. Toujoursdans cet optique, une autre possibilit serait la cration d'une extension pour navigateurou client mail qui jouerait le rle d'interface graphique de l'agent. Ces quelques extensionsne sont bien sr pas les seules possibles.

    6.2. Impressions sur Java ME

    Depuis quelques annes, le nombre de tlphones portables a explos. Java ME a logique-ment prot de ce succs. Java ME est surtout utilis pour la cration de petits jeux etd'applications trs simples. La cause de cela est les limitations du matriel. Un autre pro-blme est la dirence entre les modles et entre les constructeurs. Si on souhaite crerune application Java ME qui exploite au mieux les possibilits de son support, il fautpresque crer une application par tlphone. A long terme, Java ME ne pourra continuerd'exister que si son dveloppement continue de suivre le dveloppement de la tlphoniemobile.

    6.3. Impressions sur les agents

    Les agents sont une technologie dont l'utilisation va encore se dvelopper dans les annes venir. De nombreux systmes pourraient tre amliors en utilisant des agents. Onpourrait par exemple utiliser un systme multi-agents pour distribuer dans une entreprisedes mails envoys une adresse du genre [email protected]. Ce systme pourraitfonctionner de la manire suivante. La distribution se ferait sur la base du contenu du

    40

    [email protected]

  • 6.3. Impressions sur les agents 41

    mail. On aurait dans ce systme un agent jouant le rle de serveur et des agents clients.L'agent serveur recevrait les mails envoys l'adresse [email protected]. Puis ilanalyserait son contenu et transmetterait le mail l'agent qu'il considre le plus intress.Cet agent pourrait soit accepter le mail, soit le refuser ou encore le transmettre un ouplusieurs agents qu'il considre comme intresss.

    [email protected]

  • AGuide d'installation et d'utilisationdes outils et technologies utiliss

    A.1. Java SE

    Pour assurer le bon fonctionnement des diverses applications de ce projet, il est conseilld'utiliser au minimum la version 5 du Java SE Development Kit (JDK). Pour les utilisa-teurs de Windows, il sut d'ouvrir l'excutable qui est disponible sur le site ci-dessouspour installer Java.

    Pour tlcharger Java SE : http://java.sun.com/javase/downloads/index.jsp

    A.2. Sun Wireless Toolkit

    Le Sun Wireless Toolkit fournit une srie d'outils relatifs Java ME. Il permet la crationde la structure d'un projet et l'excution d'application Java ME sur un mulateur. Ilfournit des outils permettant de tester les application Java ME (moniteur de mmoire etde rseau) et d'autres outils plus spciques. Dans le cadre de ce projet, nous utiliseronsles librairies Java ME et les mulateurs de ce Toolkit. La version CLDC est ncessaire.Pour les utilisateurs de Windows, il sut d'ouvrir l'excutable qui est disponible sur lesite ci-dessous pour installer le Sun Wireless Toolkit.

    Pour tlcharger le SunWireless Toolkit : http://java.sun.com/products/sjwtoolkit/

    A.3. Environnement de Dveloppement Intgr (IDE)

    Le choix de l'IDE est souvent dict par des prfrences personnelles. Nanmoins, il estconseill d'utiliser Eclipse ou Netbeans dans notre cas. Ces deux IDEs facilitent le d-veloppement en Java SE et ME et permettent utilisation d'Ant et l'interraction avec leSun Java Wireless Toolkit. Les dveloppements de ce projet ont t eectus en utilisantEclipse.

    42

    http://java.sun.com/javase/downloads/index.jsphttp://java.sun.com/products/sjwtoolkit/

  • A.4. JADE et LEAP 43

    A.3.1. Eclipse

    Pour utiliser Java ME avec Eclipse, nous avons besoins du plugin Eclipse ME et du SunWireless Toolkit. Ce Toolkit va fournir eclipse les librairies de Java ME et direntsmulateurs gnriques. Pour installer Eclipse, il sut de dcompresser l'archive que vouspouvez rcuprer sur le site ci-dessous.

    Pour tlcharger Eclipse : http://www.eclipse.org/downloads/

    Pour installer le plugin Eclipse ME, vous pouvez utiliser le Software Updates d'Eclipseou dcompresser directement l'archive du plugin dans le dossier d'Eclipse.

    Pour tlcharger le plugin EclipseME : http://eclipseme.org/

    A.3.2. Netbeans

    Les paquets Netbeans qui sont requis sont Base IDE, Java SE et Mobility. Vous pouveztlcharger une distribution contenant directement ces paquets (distribution Mobilityou All) ou ajouter ces paquets en utilisant le gestionnaire de Plugin de Netbeans.

    Pour tlcharger Netbeans : http://www.netbeans.org/

    A.4. JADE et LEAP

    Vous avez disposition sur le site internet de JADE les direntes version de JADELEAP, direntes extensions pour JADE et les cinq archives suivantes : jadeBin : contient les jars permettant d'excuter JADE et une petite dmo ; jadeDoc : contient de nombreux documents notamment la documentation de l'API, unguide du programmeur et un guide de l'administrateur ;

    jadeSrc : contient les chiers sources ; jadeExamples : contient une srie d'exemples ; jadeAll : regroupe les quatres archives prcdentes.Pour tlcharger JADE et LEAP : http ://jade.tilab.com/download.php

    A.4.1. Quelques commandes basiques

    Dmarrer JADE avec l'interface graphique du remote monitoring agent :

    1 java cp jade . j a r jade . Boot gu i

    java : commande permettant l'excution de programme Java -cp : les JARS suivants cette option sont inclus dans le classpath jade.jar : JAR principal de JADE jade.Boot : classe Java grant l'excution de JADE -gui : option permettant de lancer le gui du remote monitoring agent

    Dmarrer un agent dans un nouveau container :

    1 java cp MonAgent . j a r ; jade . j a r ; i i o p . j a r ; jadeTools . j a r ; h t t p . j a r ; commonscodec1.3. j a r jade .Boot con ta ine r conta inername NomduContainer MonAgent : monPaquet . ClassedelAgent ( )

    MonAgent.jar : contient les classes de l'agent

    http://www.eclipse.org/downloads/http://eclipseme.org/http://www.netbeans.org/

  • A.5. MediMAS 44

    iiop.jar : librairie permettant l'utilisation du protocole IIOP (Internet Inter-ORB Pro-tocol)

    jadeTools.jar : librairie contenant quelques outils utiles (snier, agent de test ...) http.jar : librairie permettant l'utilisation du protocole http commons-codec-1.3.jar : ce paquet permet principalement l'encodage et le dcodage dedirents formats (Base64, Hexadecimal ...)

    -container : demande la cration d'un nouveau container -container-name NomduContainer : option permettant la dnition du nom du contai-ner

    NomdelAgent :PaquetdelAgent.ClassedelAgent() : dtermine le nom de l'agent, spciele paquet o il se trouve et sa classe principale

    De plus amples informations sont disponibles dans le guide de l'administrateur fournitavec JADE [Mun08].

    A.5. MediMAS

    MediMAS est un logiciel open source distribu sous licence GNU GPL. Il est distribupar le groupe gnie logiciel du dpartement d'informatique de l'universit de Fribourg.Ce projet a t dvelopp pour la version 3.0.

    A.5.1. Conguration pour une utilisation avec Ant

    1. Rcuprez l'archive sur le site du projet MediMAS [14].

    2. Dcompressez cette archive.

    3. Dans le chier build.properties, congurez : le chemin vers le dossier lib de MediMAS (libs.dir), le chemin vers votre JRE (java.dir) , le chemin vers votre JDK (tools.compile.dir). le chemin vers le dossier contenant les librairies de JADE (libs.jade).

    4. Vriez que le dossier ext du dossier lib de votre JRE contient un chier nommsqlitejdbc.jar et un chier nomm sqlitejdbc.dll.

    5. Modiez le chemin vers le rpertoire de MediMAS qui se trouve dans les chiersbat.

    6. Vous pouvez maintenant en excutant ces derniers dmarrer MediMAS et ces agents.

    Pour tlcharger MediMAS : http://diuf.unifr.ch/softeng/projects/medimas/Pour tlcharger sqlitejdbc.jar et sqlitejdbc.dll : http://sqlite.org/download.html

    http://diuf.unifr.ch/softeng/projects/medimas/http://sqlite.org/download.html

  • BVersion Java SE de l'exempleCalculatrice (cf. section 2.2.3)

    B.1. calculette.agents

    1 /Agent s occupant du c a l c u l /package c a l c u l e t t e . agents ;

    3

    5 import c a l c u l e t t e . behaviours . CalculBehaviour ;import c a l c u l e t t e . onto logy . Ca lcu le t teOnto logy ;

    7 import jade . content . lang . s l . SLCodec ;import jade . core . ;

    9 import jade . domain . DFService ;import jade . domain . FIPAException ;

    11 import jade . domain . FIPANames ;

    13 public class Ca lcu la to r extends Agent {

    15 /

    17 /private s t a t i c f i n a l long ser ia lVers ionUID = 2351295530634821914L ;

    19

    public void setup ( ) {21

    / / enreg is t rement du language23 th is . getContentManager ( ) . regis terLanguage (new SLCodec ( ) , FIPANames . ContentLanguage . FIPA_SL0 )

    ;

    25

    / / enreg is t rement de l onto logy27 th is . getContentManager ( ) . r eg i s te rOn to logy ( Ca lcu le t teOnto logy . ge t Ins tance ( ) ) ;

    29 / / A jou te r e t Dmarrer l es comportementsaddBehaviour (new CalculBehaviour ( th is ) ) ;

    31 }

    33

    protected void takeDown ( ) {35

    t ry {37 DFService . d e r e g i s t e r ( th is ) ;

    } catch ( FIPAException e ) {39 e . p r in tS tackTrace ( ) ;

    }41 System . out . p r i n t l n ( " Agent : " + th is . getAID ( ) . getName ( ) + " i s now te rm ina t i ng . " ) ;

    }43 }

    Listing B.1: Calculator.java

    45

  • B.1. calculette.agents 46

    /Agent f a i s a n t l e l i e n ent re l i n t e r f a c e graphique de l u t i l i s a t e u r2 et l agent Ca l cu la to r /

    package c a l c u l e t t e . agents ;4

    6

    8 import java . u t i l . I t e r a t o r ;

    10 import c a l c u l e t t e . behaviours . GetResultBehaviour ;import c a l c u l e t t e . behaviours . SendOperandBehaviour ;

    12 import c a l c u l e t t e . gu i . Calculet teUserGUI ;import c a l c u l e t t e . gu i . Calculet teUserGUIConstant ;

    14 import jade . content . lang . s l . SLCodec ;import jade . domain . DFService ;

    16 import jade . domain . FIPAException ;import jade . domain . FIPANames ;

    18 import jade . gu i . GuiEvent ;import c a l c u l e t t e . onto logy . Ca lcu le t teOnto logy ;

    20 import c a l c u l e t t e . onto logy . Number ;

    22 public class Calcu le t teUser extends jade . gu i . GuiAgent {

    24 / / Oprandesprivate Number operand1 = new Number ( ) ;

    26 private Number operand2 = new Number ( ) ;

    28 / / GUIt ransient protected Calculet teUserGUI myGUI ;

    30

    private s t a t i c f i n a l long ser ia lVers ionUID = 2077365724896900733L ;32

    public void setup ( ) {34

    / / Crat ion du GUI36 myGUI = new Calculet teUserGUI ( " C a l c u l e t t e " , th is ) ;

    38 / / A f f i chage du GUImyGUI . ShowCorrect (140 , 180) ;

    40

    / / enreg is t rement du language42 th is . getContentManager ( ) . regis terLanguage (new SLCodec ( ) , FIPANames . ContentLanguage . FIPA_SL0 )

    ;

    44

    / / enreg is t rement de l onto logy46 th is . getContentManager ( ) . r eg i s te rOn to logy ( Ca lcu le t teOnto logy . ge t Ins tance ( ) ) ;

    48 / / Dmarrer les comportementsaddBehaviour (new GetResultBehaviour ( th is ) ) ;

    50

    }52

    / / Fermeture54 protected void takeDown ( ) {

    System . out . p r i n t l n ( " 1 " ) ;56 i f (myGUI!= nul l ) {

    myGUI . dispose ( ) ;58 myGUI . s e t V i s i b l e ( fa lse ) ;

    th is . doDelete ( ) ;60 System . e x i t ( 0 ) ;

    }62 t ry {

    DFService . d e r e g i s t e r ( th is ) ;64 } catch ( FIPAException e ) {

    e . p r in tS tackTrace ( ) ;66 }

    System . out . p r i n t l n ( " Agent : " + th is . getAID ( ) . getName ( ) + " i s now te rm ina t i ng . " ) ;68 }

    70

    / / t r a i t e m e n t des vnements du GUI72 protected void onGuiEvent ( GuiEvent ev ) {

  • B.2. calculette.behaviours 47

    i f ( ev . getType ( ) == Calculet teUserGUIConstant .ADD_EVENT ) {74 handleAddBehaviour ( ev ) ;

    }76 }

    78

    80 / / Recuperat ion de l oprande1pub