LogicProvider是cougaar中agent上的一种插入逻辑功能的实现方式,它的特点是:同步(synchronization)。适用范围:适于反应灵敏的操作,如数据格式的转换。
开发步骤:
第一步,代码实现
代码实现包括两个类**Domain和**LogicProvider。
1. **Domain
关键点:
public String getDomainName() {
return "RcvMessageDomain"; //这个名称将来会用在发布配置中
}
protected void loadLPs() {
//RceMessageLogicProvider就是对应的**LogicProvider
addLogicProvider(new RcvMessageLogicProvider(rootPlan, self));
}
2. **LogicProvider
关键点:
public void execute(EnvelopeTuple m, Collection changeReports) {
Object object = m.getObject();
if (m.isAdd()) {
//处理逻辑
} else if (m.isChange()) {
//处理逻辑
} else if (m.isRemove()) {
//处理逻辑
}
}
在logicProvider中,可以使用从**domain传递过来的rootPlan来代替BlackboardService的功能,与Blackboard进行交互.
第二步,发布配置
有两种配置方案, 一种是修改%COUGAAR_INSTALL_PATH%/configs/common/LDMDomains.ini文件,增加类似于"glm=org.cougaar.glm.ldm.GLMDomain"的配置;
另一种是在Cougaar应用的启动配置中,使用下面的配置
<vm_parameter>
-Dorg.cougaar.domain.**Domain="**.**.**.**Domain"
</vm_parameter>
注意:修改Cougaar应用的启动配置之后,需要在run/dubug中根据配置文件重新生成cougaar的启动参数。