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


page précédente