在Netbeans上运行Jade程序而不是传输消息

时间:2014-01-29 05:59:47

标签: java netbeans agents-jade

我创建了一个接受值的代理,然后将消息传递给下一个代理。我输入值时遇到问题,因此我的消息也没有被转移。这是我的Agent课程,如下所示。有谁知道我能做些什么来解决它?

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 个答案:

答案 0 :(得分: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);