TD Agent

1. Modèle de programmation par agents

1.2. Rappels

    Les agents AAA sont des objets java passifs qui se comportent suivant un modèle d’exécution événement/réaction. Un message est représenté par une notification. Lorsqu’un agent reçoit une notification, il doit exécuter la réaction appropriée. Un agent est donc un ensemble de règles condition = réaction. Les agents ne peuvent communiquer entre eux que via des notifications. Chaque agent est identifié de manière unique par un identificateur (agentId).

    Propriétés :

1.3. En pratique

1.3.1. Les agents

    Tout agent doit hériter de la classe Agent qui contient le comportement de base de tous les agents. Les méthodes suivantes sont définies dans Agent :

1.3.2. Les notifications

    Une notification est un objet java serializable. Toutes les notifications doivent étendre la classe Notification.java. Pour pouvoir émettre des notifications externes à destination d'agents (internes), comme on ne se trouve pas dans une réaction on ne dispose pas de sendTo, on s'adresse directement au composant "Channel" du bus à messages dont la mission est l'acheminement des dits messages en utilisant le code suivant : Channel.sendTo(AgentId, Notification);

1.3.3. Les serveur d’agents

    Tous les agents s’exécutent dans des serveurs d’agents. Un serveur d’agents est un unique flot d’exécution qui gère un ensemble d’agents. Plusieurs serveurs peuvent résider sur la même machine. Tous les serveurs d’agents sont interconnectés et peuvent communiquer entre eux. Chaque serveur possède un thread d’exécution en charge d’activer la réaction d’un agent en fonction des notifications reçues. Cela implique qu’une seule réaction d’agent s’exécute à la fois au sein d’un serveur d’agent. Chaque serveur d’agents met en œuvre une part du bus logiciel.

1.3.4. Fichier de configuration

    Dans la version actuelle du bus à agents, tous les serveurs d’agents sont connus statiquement et doivent être enregistrés dans un fichier de configuration "a3servers.xml". Ce fichier de configuration doit être disponible sur tous les sites exécutant un serveur d’agent. A ce fichier au format "xml" est associé à un fichier décrivant sa structure "a3config.dtd". Voici un exemple de fichier a3servers.xml qui définit deux serveurs d’agents (0 et 1) qui s’exécutent sur la même machine.

1.3.5. Lancement d’un serveur d’agent
1.4. Un exemple

    L’exemple suivant à pour but de montrer les principes de programmation des agents AAA. Dans cet exemple, deux agents vont être créés et déployés :

1.4.1. Les Classes de l'application
1.4.2. Lancement
NB : Les serveurs d’agents doivent avoir accès au fichier de config a3server.xml et à a3config.dtd. Le classpath doit contenir le chemin vers les fichiers jar nécessaires (a3.jar et xerces.jar) ainsi que vers le package "work.tp.is.tp1.v1". Lors de chaque exécution veillez à effacer les racines de persistance des serveur d’agents et les fichiers d’audit si nécessaire !

2. Travail à réaliser

2.1 Réaliser le programme principal
    Ecrivez le programme principal "Launch" qui permet de déployer dans 2 serveurs différents 2 agents ag0 et ag1 respectivement de type HelloWorldClient et HelloWorld de telle sorte que ag0 envoie ses notifications à ag1.

2.2. Lancer l’exemple
    Il s’agit de lancer l’exemple décrit plus haut pour vérifier la validité de l’installation de l’environnement A3. La chaîne Hello World doit s’afficher à l’écran.

2.3. Vérification des propriétés
    Ecrivez des programmes permettant de vérifier les propriétés des agents AAA :