分类: Java
2006-11-08 09:35:29
一个Agent如何以程序的方式声称另一个Agent:可以通过以下方式进行创建:
String name = "
AgentContainer c = getContainerController();
try {
AgentController a = c.createNewAgent( name, "Pong", null );
a.start();
}
catch (Exception e){}
其中,createNewAgent方法的第一个参数是要创建的Agent的名称,第二个是Agent的类名,实际使用时要包括他所在的命名空间(包名),第三个参数是要传入的参数的名称。
例子:package jadePrime.acl;
/**
* Program which creates another Agent and sends
------------ it some messages
comm2.java
*
*/
import jade.core.Agent;
import jade.core.behaviours.*;
import jade.core.AID;
import jade.wrapper.AgentContainer;
import jade.wrapper.AgentController;//这两个是必须要引用的包
import jade.lang.acl.*;
public class Comm2 extends Agent {
String
name = "
AID
protected void setup(){
AgentContainer c=getContainerController();
System.out.println("find container!");
try{
AgentController a=c.createNewAgent(name,"jadePrime.acl.Pong",null);
a.start();
System.out.println("++++pong
has created:"+
}
catch (Exception e){
System.out.println("Create Agent Error!");
addBehaviour(new SimpleBehaviour(this){
int n=0;
public void action()
{
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.setContent("Message #" + n );
msg.addReceiver(
System.out.println("+++ Sending: " + n);
send(msg);
block( 1000 );
}
public boolean done(){return ++n>3;}
});
}
}
}
当我们创建一个Comm2的Agent时,在控制台上会打印出创建alice成功的消息。