【问题标题】:Getting a list of all JADE containers获取所有 JADE 容器的列表
【发布时间】:2012-02-01 10:47:46
【问题描述】:

我想获取当前平台中所有容器的列表。 This question 类似,但答案已过时,方法是向 AMS 代理查询。有没有比通过我认为复杂的 ACL 消息进行通信更简单的方法,应该有一种方法来获得一个简单的容器列表。感谢您的帮助

【问题讨论】:

    标签: javaagents agents-jade


    【解决方案1】:

    您可以通过使用 AMSSubscriber 类来实现这一点,并在添加或删除容器时监听事件。请参阅下面的示例代码:

    public class myAgent extends Agent {
    
      private ArrayList<ContainerID> availableContainers = new ArrayList<ContainerID>();
    
      /**
       * Agent initializations
      **/
      protected void setup() {
    
        AMSSubscriber subscriber = new AMSSubscriber(){
          protected void installHandlers(Map handlers){
            EventHandler addedHandler = new EventHandler(){
              public void handle(Event event){
                  AddedContainer addedContainer = (AddedContainer) event;
                  availableContainers.add(addedContainer.getContainer());
              }
            };
        handlers.put(IntrospectionVocabulary.ADDEDCONTAINER,addedHandler);
    
    
            EventHandler removedHandler = new EventHandler(){
              public void handle(Event event){
                  RemovedContainer removedContainer = (RemovedContainer) event;
                  ArrayList<ContainerID> temp = new ArrayList<ContainerID>(availableContainers);
                  for(ContainerID container : temp){
                      if(container.getID().equalsIgnoreCase(removedContainer.getContainer().getID()))
                          availableContainers.remove(container);
                  }
              }
            };
            handlers.put(IntrospectionVocabulary.REMOVEDCONTAINER,removedHandler);
          }
        };
        addBehaviour(subscriber);
      }
    }
    

    参考:1) 使用 JADE 开发多智能体系统 作者:Fabio Luigi Bellifmine、Giovanni Caire、Dominic Greenwood(第 111 页) 2)Jade API

    【讨论】:

    • 我如何知道可用容器的列表?它不允许我访问 int size() 因为它是私有成员。怎么办?
    • 向 ArrayList 添加一个公共的 setter/getter。例如:public int getAvailableContainersSize(){return availableContainers.size();}
    • 我仍然不知道如何显示所有容器的列表,请你帮我把代码放在哪里以及什么......
    • 看看这个link你可能对如何实现有所了解。
    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 2020-10-09
    • 2017-05-27
    • 2013-08-11
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多