Pour parler d'un véritable système multi-agents
et non pas d'un ensemble d'agents agissant d'une manière individuelle,
il est nécessaire de voir comment les agents communiquent et
s'échangent les messages.
Chaque agent JADE possède une sorte de boite aux
lettres sous forme d'une liste qui contient les messages « conformes aux
spécifications de la FIPA (FIPA-ACL)» qui lui sont envoyés
par les autres agents selon l'ordre chronologique de leur arrivée.
La classe ACLMessage du package
jade.lang.acl de JADE représente les messages qui peuvent
être échangés par les agents. Cependant, les informations
nécessaires pour envoyer un message JADE sont: l'ensemble des
récepteurs du message, le contenu du message et l'acte de communication.
Cependant, La communication de messages se fait en mode asynchrone.
Lorsqu'un agent souhaite envoyer un message, il doit
créer un nouvel objet ACLMessage, compléter ces champs avec des
valeurs appropriées et enfin appeler la méthode send()
et lorsqu'un agent souhaite recevoir un message « La réception d'un
message JADE est aussi simple que l'envoi » il suffit d'appeler la
méthode reveive() ou la méthode
blockingReceive() de la classe Agent pour récupérer le
première message non encore lu de l'agent. Cependant, Tous les attributs
de la classe ACLMessage peuvent être obtenus et modifiés par les
méthodes set/get (). Le contenu des messages peut être aussi bien
du texte que des objets car la sérialisation Java est supportée
[Fer05].
Les messages JADE sont composés en général
de :
ü L'émetteur du message : un champ rempli
automatiquement lors de l'envoi d'un message.
ü L'ensemble des récepteurs du message : un
message peut être envoyé à plusieurs agents
simultanément.
ü L'acte de communication : qui représente
le but de l'envoi du message en cours (informer l'agent récepteur, appel
d'offre, réponse à une requête,...)
ü Le contenu du message.
ü Un ensemble de champs facultatifs : la langue
utilisée, l'ontologie, le timeOut,
l'adresse de réponse...
Exemple d'envoi de message dans JADE
[Ben09] ACLMessage message = new ACLMessage
(ACLMessage.«
nom_de_acte_de_communication »);
message.addReceiver(«nom_du_recepteur
» );
Generation des diagrammes AlliviL d partir de
programmes JADE