Java 코드를 통해 사용 가능한 에이전트 컨테이너를 찾는 방법을 알려줄 사람이 있습니까? JADE 에이전트 프레임 워크를 사용하고 있는데 새 컨테이너를 만드는 방법을 알아 냈지만 기존 컨테이너를 찾을 수 없으므로 에이전트를 배치 할 수 있습니다.Jade Agent Containers
답변
진행중인 서비스를 통해 정보를 수신할지 또는 메시지의 현재 스냅 샷을 수신할지 여부에 따라이 작업을 수행하는 두 가지 방법이 있습니다.
현재 사용 가능한 에이전트 컨테이너의 ID 스냅 샷을 보려면 AMS (Agent Management Service)에 요청 메시지를 보내고 응답을 기다립니다.
private void queryAMS() throws CodecException, OntologyException {
QueryPlatformLocationsAction query = new QueryPlatformLocationsAction();
Action action = new Action(myAgent.getAID(), query);
ACLMessage message = new ACLMessage(ACLMessage.REQUEST);
message.addReceiver(myAgent.getAMS());
message.setLanguage(FIPANames.ContentLanguage.FIPA_SL);
message.setOntology(JADEManagementOntology.getInstance().getName());
myAgent.getContentManager().fillContent(message, action);
myAgent.send(message);
}
private void listenForAMSReply() throws UngroundedException, CodecException,
OntologyException {
ACLMessage receivedMessage = myAgent.blockingReceive(MessageTemplate
.MatchSender(myAgent.getAMS()));
ContentElement content = myAgent.getContentManager().extractContent(
receivedMessage);
// received message is a Result object, whose Value field is a List of
// ContainerIDs
Result result = (Result) content;
List listOfPlatforms = (List) result.getValue();
// use it
Iterator iter = listOfPlatforms.iterator();
while (iter.hasNext()) {
ContainerID next = (ContainerID) iter.next();
System.out.println(next.getID());
}
}
는 지속적인 서비스로이 정보를 얻으려면, 그리고는 AMS에 등록 각 컨테이너의 ContainerID를받을 : 옥 관리 온톨로지와 QueryPlatformLocationsAction 용어, 송신 및 수신 방법을 사용하는 것 , AMSSubscriber를 확장하는 Behavior를 작성하십시오. 이 오래된 질문이지만, 누군가를 위해,
러스
in 새로운 JADE는 AMS와 통신하는 것 외에 다른 방법이 있습니까? – Purushottam
AMS는 에이전트가 시스템 레벨 정보에 액세스 할 수있게 해줍니다.이 작업은 정확하게이 작업을 위해 설계되었습니다! 유사한 작업을 수행하기 위해 커널 서비스를 작성할 수도 있지만, 실제로는 매우 까다 롭습니다. – DoctorRuss
을이 도움이
희망 다음 AddedContainer 이벤트에 대한 핸들러를 등록하고 새로 가능한 컨테이너의 ContainerID에 액세스 할 수 있습니다 거기에 더 비슷한 질문이 있습니다. 대답은 컨테이너를 "지속적인 서비스"로 만드는 것에 초점을 맞추고 있습니다 : http://stackoverflow.com/questions/9094522/getting-a-list-of-all-jade-containers – edmundo096