Как отправить сообщение агенту в основном контейнере через http в Jade?

Я хочу подключиться к агенту, созданному в основном контейнере, который работает на компьютере. Предположим, что идентификатор основного контейнера — [email protected]. Как я могу подключиться к агенту внутри этого контейнера и передать данные? Заранее спасибо.


person Inco Mob    schedule 16.09.2013    source источник


Ответы (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);

затем вы можете использовать метод getAgent() ContainerController для получения 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.

person peter    schedule 09.12.2013