Я новичок в Jade и многоагентных системах. Я пытаюсь создать систему с несколькими агентами, которым придется общаться, отправляя сообщения ACL. Я прочитал документацию о структуре создания класса агента.
Вот мой код:
public class ServerCommunicationAgent extends Agent {
public static String serverAddress = "http://LO-LESTER-077:8080";
private static final long serialVersionUID = 1L;
protected void setup() {
System.out.println(getLocalName() + ": correctly started");
boolean state = true;
// A Class that has a socket with my server
CommunicationService.getInstance().ServerCommunicationAgent(state);
// Sends a tick every millisecond
addBehaviour(new TickerBehaviour(this, 10000) {
private static final long serialVersionUID = 1L;
@Override
protected void onTick() {
ACLMessage message = new ACLMessage(ACLMessage.INFORM);
message.setContent("OK");
message.setLanguage("English");
message.setOntology("Test Dialogue");
message.setConversationId("TestID");
message.addReceiver(new AID("SecurityAgent", AID.ISLOCALNAME));
send(message);
}
});
}
// This method is called from CommunicationService when i have a response
public void LaunchServiceAgent(final String Agent, final String Location){
System.out.println(": Agent received service request: " + Agent + " in " + Location + " and has to call " + Agent + Location);
addBehaviour(new Behaviour(this) {
private static final long serialVersionUID = 1L;
@Override
public void action() {
ACLMessage messages = new ACLMessage(ACLMessage.INFORM);
messages.setContent("Hello world");
messages.setLanguage("English");
messages.setOntology("Test Dialogue");
messages.setConversationId("TestID");
messages.addReceiver(new AID(Agent + Location, AID.ISLOCALNAME));
send(messages);
}
@Override
public boolean done() {
return false;
}
});
}
Итак, как я объяснил в своем коде, когда агент запускается, он отправляет сообщение на мой сервер. Он получает сообщение через метод LaunchServiceAgent. Я правильно получаю свое сообщение, но не могу отправить его другому агенту с помощью ACLMessage. Я думаю, что мой код правильный, потому что мой TickBehaviour работает нормально.
Итак, мой вопрос: как мне правильно отправить сообщение другому агенту из моего метода?
Спасибо за любой ответ :)