본문 바로가기

IT for developer/Java

(5장) JADE PROGRAMMING FOR BEGINNERS

 AGENT COMMUNICATION – THE ACLMESSAGE CLASS

JADE 에이전트의 가장 큰 특징은 통신 기능의 제공이다. 통신 패러다임은 비동기적 메시징 방식을 채택했다.

각 에이전트는 메세지 큐를 가지고 있다 . 메세지큐에 메세지를 쓰면 받으려는 에이전트에서 알려준다. (JADE Runtime이 이를 수행해 준다.)



5.1 The ACL language

FIPA (http://www.fipa.org) 에서 정의한 통신을 위한 메세지 형태
- 송신자.
- 수신자 리스트
- 통신 의도 (performative)
- 컨텐츠
- 언어
- 온톨로지
- 컨트롤 필드

jade.lang.acl.ACLMessage 에 구현되어 있음.

5.2 Sending messages

ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(new AID("Peter", AID.ISLOCALNAME));
msg.setLanguage("English");
msg.setOntology("Weather-forecast-ontology");
msg.setContent("Today it’s raining");
send(msg);


5.3 The book trading example messages
// Message carrying a request for offer
ACLMessage cfp = new ACLMessage(ACLMessage.CFP);
for (int i = 0; i < sellerAgents.lenght; ++i) {
cfp.addReceiver(sellerAgents[i]);
}
cfp.setContent(targetBookTitle);
myAgent.send(cfp);


5.4 Receiving messages

JADE runtime이 메세지 큐에 메세지를 전달하면 에이전트는 메세지를 받을 수 있다. receive()메소드는 큐에 메시지 또는 null을 리턴한다.

ACLMessage msg = receive();
if (msg != null) {
// Process the message
}

5.5 Blocking a behaviour waiting for a message