2012-03-25 57 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(); 
     } 
}