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 !!