DE LOJA
PFM-CIS-UNL
1. TEMA
ACL Message
2. DESCRIPCIN:
Jade sigue los estndares FIPA para que idealmente agentes Jade podran interactuar
con agentes escritos en otros idiomas y que se ejecutan en otras plataformas.
Envo/recepcin de mensajes
Mtodos de ACLMessage
Mtodos ms importantes de la clase ACLMessage.
El resto de mtodos get/set son similares, simplemente vara el tipo del valor introducido o
devuelto. Por ejemplo, getSender() devolver un AID mientras que getLanguage() devolver
una cadena. El Performative puede indicarse directamente pasando el valor al constructor
de ACLMessage, lo cul es recomendable porque todos los mensajes deben contener al
menos el Performative.
Seleccin de mensajes
Para seleccionar los mensajes que un agente desea recibir podemos utilizar la
clase MessageTemplate.
Esta clase permite definir filtros para cada atributo del mensaje ACLMessage y se utiliza como
parmetro en los mtodos receive y blockingReceive.
En esta clase se definen un conjunto de mtodos estticos que nos devuelven como resultado
un objeto de tipo MessageTemplate.
3. EJEMPLO
Comunicacin SMA
public class Template extends Agent {
MessageTemplate mt1 = MessageTemplate.and(
MessageTemplate.MatchPerformative(ACLMessage.INFORM),
MessageTemplate.MatchSender(new AID("Agente",
AID.ISLOCALNAME)));
protected void setup() {
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.setContent("Ping");
for (int i = 1; i <= 2; i++) {
msg.addReceiver(new AID("Agente" + i, AID.ISLOCALNAME));
}
send(msg);
// Set-up Behaviour 1
addBehaviour(new CyclicBehaviour(this) {
public void action() {
System.out.print("Behaviour ONE: ");
ACLMessage msg = receive(mt1);
if (msg != null) {
System.out.println("gets "
+ msg.getPerformative() + " from "
+ msg.getSender().getLocalName() + "="
+ msg.getContent());
} else {
System.out.println("gets NULL");
}
block();
}
});
// Set-up Behaviour 2
addBehaviour(new CyclicBehaviour(this) {
public void action() {
System.out.print("Behaviour TWO: ");
ACLMessage msg = receive();
if (msg != null) {
System.out.println("gets "
+ msg.getPerformative() + " from "
+ msg.getSender().getLocalName() + "="
+ msg.getContent());
} else {
System.out.println("gets NULL");
}
block();
}
});
}
}
4. BIBLIOGRAFA