jade.core
提供了一个简单的消息传递系统,该系统具有多种传输协议(同一Java虚拟机中的Java事件,属于同一JADE平台的Java虚拟机之间的RMI,以及用于与不同代理平台进行通信的标准IIOP协议)和多线程执行软件代理的环境,具有抢先的代理间调度和协作的代理内调度。
其包含JADE系统的微内核。该软件包中包含三个主要内容:
- Agent class : 具有基本的消息传递和行为调度功能
- Distributed objects: 运行时环境以支持代理平台
- pre-built behaviours:基本任务构造需求
jade.core.behaviours
jade.core的子软件包,其中包含用于实现基本代理行为的类。 JADE代理使用协作的非抢先式调度在单个Java线程中调度其行为。
jade.lang.acl
含对FIPA代理通信语言(ACL)的支持,包括ACLMessage类,解析器,编码器和用于表示ACL消息模板的帮助类。
jade.content
支持用户根据给定的内容语言和本体创建和处理复杂的内容表达的类。
当代理A与另一个代理B通信时,一定数量的信息 I 会通过ACL消息从A传输到B。 在ACL消息中,I 表示为与适当的内容语言(例如SL)一致并以适当的格式(例如字符串)编码的内容表达式。 A和B都有自己的内部表示方式(可能不同)。考虑到代理程序内部表示一条信息的方式必须允许轻松处理该条信息,因此很显然, ACL内容表达式不适用于代理内部。
jade.domain
含FIPA特定的代理和本体。此软件包中包含标准的FIPA系统代理实施:
- AMS : 代理程序来管理平台代理程序的代理程序平台生命周期,并保存有关它们的白页信息。
- DF : 代理以保留有关代理的黄页信息,从而允许通过DF联合的多域应用程序。
jade.gui
包含了一套通用的创建图形用户界面(GUIs)以显示和编辑AgentID,Agent描述,ACL消息(ACLMessages)的类。
jade.proto
包含FIPA标准协议的角色行为。对于FIPA规范规定的每个交互协议,代理可以扮演两个角色:
- Initiator :代理根据一个特定的交互协议与一个或多个其他代理联系以开始新的对话。
- Responder : 响应从其他代理收到的消息,该代理遵循特定的交互协议进行新的对话。
jade.wrapper
该包与jade.core.Profile和jade.core.Runtime类一起提供对JADE进程内接口的支持,该接口允许外部Java应用程序将JADE用作一种库并从应用程序内部启动JADE Runtime。 该软件包的类包装了JADE平台的主要参与者,并允许与他们互动,尤其是控制他们的生命周期。
Agent类
第一章, 我们已经先创建了一个Agent, 现在我们来进一步了解一下这个类。
package cn.bcrab.agent;
import jade.core.Agent;
public class HelloWorldAgent extends Agent {
protected void setup() {
System.out.println("Hello world! I'm an agent!");
System.out.println("My local name is " + getAID().getLocalName());
System.out.println("My GUID is " + getAID().getName());
System.out.println("My addresses are " + String.join(",", getAID().getAddressesArray()));
this.takeDown();
}
public void takeDown(){
System.out.println("Agent takedown!");
}
}
一个新agent的产生过程:
1 执行了agent的构造器,赋予agent一个ID(见jade.core.AID类)
2 注册到AMS上,处于激活状态
3 最终执行setup()方法。
- 通过getAID()得到agent的标识。
- 任何行为都可以调用Agent.doDelete()方法来停止agent执行。
- 当agent准备转到删除状态,即它将要被销毁,就要执行Agent.takeDown()方法。
- 程序员可以通过重载takeDown()方法来实现任何必须的清除行动。当调用这个方法时,agent仍然是注册到AMS上的,因此可以发送消息到其他的agent,但是只要在takeDown()方法完成之后,agent就会被注销,它的线程也会被销毁。
相关代码
https://gitee.com/2010jing/JADE-tutorial/tree/tutorial02/
reference
网友评论