2012-03-25 60 views
3

我已经编写了一个数据库更新软件,它允许我部署一个jade移动代理以更新数据库。为了运行它,我需要使用AMS gui启动它。我希望能够从gui中启动它。我现在已经做了一个很好的秋千,我只需要知道允许我点击“更新”按钮时启动我的移动代理的代码。代码是什么?提前致谢。使用swing启动Jade代理

回答

1

要启动代理或执行与JADE相关的任何操作,您需要使用JADE库和API编写代码,而不管您使用了哪个前端(此例中为Swing) 一个建议是,为了保持模块化是创建另一个文件,它可以完成许多您想要的操作之一,并让您的Swing GUI与该文件交互(通过套接字),从而触发您的操作。 该文件将充当服务器,将听取前端并完成相应的工作。但所有命令都要使用JADE API进行编码。一个这样的代码:

ContainerController cc = Runtime.instance().createAgentContainer(newProfileImpl());

Object arguments[] = new Object[1];``arguments[0]=new Object();

AgentController dummy = cc.createNewAgent("mob2","mobiletrial", arguments);

dummy.start();

+0

我过去所做的是创建一个启动其他代理的“协调代理”。通常通过bools(而不是套接字)使用swing和interface来访问协调器。 – Clintus 2017-09-07 11:53:15

0

这是我写的,从another.You'll启动一个代理的方法已经进行编辑的多容器使用。

void launchAgent(final String AgentName, final String AgentType) 
{ 
    log(Level.FINER,"attempting to launch angent name: "+AgentName+" type: "+AgentType); 
    CreateAgent ca = new CreateAgent(); 
    ca.setAgentName(AgentName); 
    ca.setClassName(AgentType); 
    ca.setContainer(new ContainerID(AgentContainer.MAIN_CONTAINER_NAME, null)); 
    Action actExpr = new Action(this.getAMS(), ca); 
    ACLMessage request = new ACLMessage(ACLMessage.REQUEST); 
    request.addReceiver(this.getAMS()); 

    request.setOntology(JADEManagementOntology.getInstance().getName()); 


    request.setLanguage(FIPANames.ContentLanguage.FIPA_SL); 
    request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); 
    try { 
     getContentManager().fillContent(request, actExpr); 

     addBehaviour(new AchieveREInitiator(this, request) { 
      protected void handleInform(ACLMessage inform) { 
      log(Level.INFO,"Agent successfully created name:"+AgentName+" type: "+AgentType); 
      } 

     protected void handleFailure(ACLMessage failure) { 
      log(Level.SEVERE,"Agent launch failed name: "+AgentName+" type: "+AgentType); 
      } 
      }); 
     } 
    catch (Exception e) { 
     e.printStackTrace(); 
     } 
}