2014-01-29 3 views
0

값을 받아들이고 다음 에이전트로 메시지를 전달하는 에이전트를 만들었습니다. 값을 입력하는 데 문제가있어서 내 메시지도 전송되지 않습니다. 아래에 내 Agent 클래스가 있습니다. 누구든지 그것을 고칠 수있는 일을 알고 있습니까?Netbeans에서 실행중인 Jade 프로그램이 메시지를 전송하지 않습니다.

public class Prgm extends Agent { 

     int val; 

     protected void setup() { 
       Objects[] args = getArguments(); 
       if (args!=null && args.length > 0) 
         val = Integer.parseInt((String) args[0]); 
       addBehaviour(new OneShotBehaviour(this) { 
         public void action() { 
           if (val == 1) { 
             ACLMessage msg = new ACLMessage(ACLMessage.INFORM); 
             msg.setLanguage("english"); 
             msg.SetOntology("DG Status"); 
             msg.SetContent("DG connected"); 
             msg.addReceiver(new AID("r1", AID.ISLOCALNAME)); 
             myAgent.send(msg); 
           } else { 
             ACLMessage msg = new ACLMessage(ACLMessage.INFORM); 
             msg.addReceiver(new AID("r1", AID.ISLOCALNAME)); 
             msg.setLanguage("english"); 
             msg.setOntology("DG Status"); 
             msg.setContent("DG not connected"); 
             send(msg); 
           } 
         } 
       }); 

     } 
+1

'getArguments()'는 무엇을합니까? – npinti

답변

0

온톨로지를 사용할 필요가없는 경우에는 사용하지 마십시오. 문자열의 경우 다음을 사용할 수 있습니다.

ACLmessage.setContent("string message") and String stringmsg=ACLmessage.getContent() 

Java 직렬화를 더 시도해야하는 경우에는 온톨로지를 사용하는 것보다 더 간단합니다.

또한이 줄은 받아 들일 수 없다고 생각합니다. new AID("r1", AID.ISLOCALNAME). 일반적으로 사용 가능한 에이전트 또는 서비스를 쿼리하는 df (디렉토리 촉진자) 에이전트에 문의합니다. 이 같은 것을 시도하십시오

DFAgentDescription template = new DFAgentDescription(); 
    ServiceDescription sd= new ServiceDescription(); 
    sd.setType(Service); 
    sd.setName(agentName); 

    template.addServices(sd); 

    try { 
     DFAgentDescription[] result = DFService.search(this, template); 
     listAgents.clear(); 
     for(int i = 0; i<result.length;++i) 
     { 
      listAgents.addElement(result[i].getName()); 

     } 
     //System.out.println(listAgents); 

    } catch (FIPAException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     log(this.getAID() +"!!error in requesting service ="+Service); 
    } 

    return (AID) listAgents.get(0);