2013-09-16 39 views

回答

1

您需要一個ContainerController(無論是主容器還是代理容器都無關緊要),這是您所關注的代理平臺的一部分。

獲取一個簡單的方法就是創建一個新的代理容器並將其連接到平臺。

import jade.core.Runtime; 
import jade.core.Profile; 
import jade.core.ProfileImpl; 

... 

Runtime myRuntime = Runtime.instance(); 

// prepare the settings for the platform that we're going to connect to 
Profile myProfile = new ProfileImpl(); 
myProfile.setParameter(Profile.MAIN_HOST, "myhost"); 
myProfile.setParameter(Profile.MAIN_PORT, "1099"); 

// create the agent container 
ContainerController myContainer = myRuntime.createAgentContainer(myProfile); 

然後,您可以使用ContainerController的getAgent()方法來獲取AgentController。

AgentController myAgentController = myContainer.getAgent("agent-local-name"); 

最後,如果您想要將數據傳遞給代理,則可以使用O2A(對象2代理)消息。這基本上允許您通過代理控制器將任何對象傳遞給代理。

Object myObject = "Real-Object-Would-Go-Here"; 
myAgentController.putO2AObject(myObject, false); 

的劑(優選內的行爲)內,可以偵聽像這樣的對象:

// start accepting O2A communications 
setEnabledO2ACommunication(true, 0); 
// start monitoring them 
addBehaviour(new CyclicBehaviour(this) { 
    @Override 
    public void action() { 
     // get an object from the O2A mailbox 
     Object myObject = myAgent.getO2AObject(); 

     // if we actually got one 
     if(myObject != null) { 
      // do something with it 
     } else { 
      block(); 
     } 
    } 
}); 

來源:JADE文檔

相關問題