page d'accueil - didacticiel - présentation de MAGIQUE - questions fréquentes |
Utilisation de MAGIQUE
Voici un exemple simple d'utilisation de MAGIQUE:
/******************************************************************\ * Le premier agent qui possède les compétences 'add' et 'mul' * \******************************************************************/ import fr.lifl.magique.*; import fr.lifl.magique.skill.*; public class MyFirstAgent extends Agent { /** constructeur. */ public MyFirstAgent(String name) { super(name); } /** la compétence 'add'. */ public Integer add(Integer a, Integer b) { return new Integer(a.intValue()+b.intValue()); } /** la compétence 'mul'. */ public Integer mul(Integer a, Integer b) { return new Integer(a.intValue()*b.intValue()); } /** Lancer une instance de mon agent. */ public static void main(String args[]) { Platform p = new Platform(4444); p.addAgent(new MyFirstAgent("boss")); } } /******************************************************************\ * Le second agent qui utilise les competences du premier agent * \******************************************************************/ import fr.lifl.magique.*; import fr.lifl.magique.skill.*; public class MySecondAgent extends Agent { /** constructeur. */ public MySecondAgent(String name) { super(name); } /** la compétence 'compute'. */ public void compute() { Integer a = new Integer(5); Integer b = new Integer(2); Integer c = new Integer(7); Integer res = (Integer)askNow("add", a, b); // appel synchrone res = (Integer)askNow("mul", res, c); // appel synchrone System.out.println(res); } /** Lancer une instance de mon agent. */ public static void main(String args[]) { Platform p = new Platform(4445); MySecondAgent myAgent = new MySecondAgent("callTheBoss"); p.addAgent(myAgent); myAgent.connectToBoss("boss@" + args[0] + ":4444"); myAgent.compute(); } } /******************************************************************\ * Lancer les agents * \******************************************************************/ Sur une machine A: java -classpath .:magique.jar MyFirstAgent Sur une machine B: java -classpath .:magique.jar MySecondAgent adresse_de_la_machine_A Et vous obtenez l'affichage: '49'
Les inconvénients de MAGIQUE:
Vous ne pouvez utiliser que des objets implémentant Serializable
comme paramètres d'appels de compétence; concretement il est
impossible d'utiliser les types int, boolean, double, ...
L'appel à une competence utilise le nom de la competence sous
forme d'une chaine de caracteres; toute erreur de frappe ne sera
donc pas détectée à la compilation.
Les avantages de MAGIQUE:
C'est hyper-simple d'utilisation.
Aucune connaissance en réseau n'est nécessaire pour faire des
applications distribuées !!