Chapitre 3 : Approche proposée et presentation
de l~outil d~veloppe
d'un programme JADE vers le diagramme de séquence AUML. En
effet, Les rôles du diagramme de séquences AUML sont :
1. présenter les interactions entre agents avec une
dimension temporelle.
2. présenter tous les agents/rôles
impliqués.
3. présenter les messages échangés suivant
un ordre chronologique.
Cependant, dans JADE on ne trouve pas une classe
spécifique pour les rôles pour cela on ne peut pas
représenter les rôles mais nous avons représenté les
interactions qui existent entre les agents à travers les messages
échangés. A ce stade, nous avons trouvé des
difficultés pour représenter les différents messages
échangé entre les agents suivant un ordre chronologique. Pour
résoudre ce problème nous avons redéfinir la class
ACLMessage parce que tous les messages dans JADE sont des instances de
cette classe.
Habituellement, Dans la méthode addReceiver de
la class ACLMessage on a seulement comme paramètre :
l'identificateur de l'agent récepteur, mais cette information n'est pas
suffisante pour déterminer le rôle de l'agent récepteur
ainsi que le placement du message dans la ligne de vie. Pour cela, nous avons
redéfini la classe ACLMessage pour redéfinir la
méthode addReceiver. Nous avons ajouté comme
paramètre dans cette méthode le nom du rôle de l'agent
récepteur ainsi que le placement du message dans la ligne de vie comme
il est illustré par la figure suivante.
import jade.core.AID;
import jade.lang.acl.ACLMessage;
public class ACLMessage_with_role
extends ACLMessage {
public void addReceiver(AID r, String
name_role,int numero) {
addReceiver(r);
}
}
Figure 3.4: la class ACLMessage_with_role
Chapitre 3 : Approche proposée et presentation
de l~oatil d~veloppe
Dans le diagramme de séquence AUML on ne trouve pas
seulement des messages échangés entre les agents suivant un ordre
chronologique mais on trouve aussi des nouveaux types de branchements afin de
prendre en compte l'indéterminisme du comportement d'un agent. Le
tableau suivant illustre l'équivalence entre les différents
branchements qui existent dans le diagramme de séquence AUML et le
programme JADE.
Code JADE
|
Notation AUML
|
ACLMessage_with_role message = new
|
|
ACLMessage_with_role(ACLMessage.INFORM);
message.setContent(contenu
_du_message);
|
|
|
|
|
|
|
|
|
|
message.addReceiver(agent_recepteur,
role_recepeteur,placement_message);
send(message);
|
|
INFORM
|
|
|
if(condition)
|
|
{
|
|
ACLMessage_with_role message = new
|
|
|
|
|
|
|
|
ACLMessage_with_role(ACLMessage.INFORM);
|
|
|
|
|
|
message . setContent (contenu du
message) ;
message.addReceiver(agent_recepteur,
role_recepeteur,placement_message);
send(message);
|
|
|
[condition]
INFORM
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INFORM
|
|
|
|
|
|
|
|
|
|
INFORM
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AC1
|
|
A
|
|
|
|
...
|
|
|
Generation des diagrammes A d partir de programmes
JADE
|