Запустите нефритовых агентов, используя качели - PullRequest
3 голосов
/ 25 марта 2012

Я закодировал программное обеспечение для обновления базы данных, которое позволяет мне развертывать Jade Mobile Agent для обновления базы данных. Для того, чтобы он работал, мне нужно запустить его с помощью графического интерфейса AMS. Я хотел иметь возможность запустить его из графического интерфейса. Теперь я сделал хороший графический интерфейс и мне нужно знать только код, который позволяет запускать мой мобильный агент при нажатии кнопки «Обновить». Какой код? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 06 мая 2012

Чтобы запустить агент или сделать что-либо связанное с 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 голосов
/ 15 декабря 2014

Это метод, который я написал для запуска одного агента из другого. Вам нужно будет отредактировать его для использования в нескольких контейнерах.

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();
        }
}
...