当前位置: 首页 > 工具软件 > Cougaar > 使用案例 >

cougaar学习笔记之---序列化Asset到MySQL中

童子明
2023-12-01

   目标:将Task中的DirectObject指向的Asset序列化在MySQL中.
   基本步骤:
       1. 开发DatabaseService
       2. 开发LogicProvider(AssetPersistenceLogicProvider)--为什么要用LogicProvider, 实现数据转换的同步.
       3. 为每种特殊的Asset提供相应的AssetPersistence
   详细说明:
   1. 开发DatabaseService--参数bol2中的例子
   DatabaseService的功能:提供数据库服务, 包括:excuteQuery, excuteStmt. 即提供CRUD服务.
   实现方式:使用Cougaar中标准的Service的方式来实现。
   实现细节:
      * DataBaseService: 服务接口
      * DataBaseServiceImpl: 服务实现
      * DataBaseServiceProvider: 服务提供者(实现的ServiceBroker接口)
   服务注册:
      通过以上的方式, 已经实现的一个服务, 需要将这个服务注册到ServiceBroker上。可以在任何一个组件的Load方法中插入以下代码来注册:
DatabaseServiceProvider dbServiceProvider
    = new DatabaseServiceProvider(getServiceBroker());
getServiceBroker().addService(DatabaseService.class, dbServiceProvider);

   服务使用:
      这后, 可以通过上面这个SB来获取自定义的服务:
dbService = (DatabaseService) sb.getService(this,DatabaseService.class, null);
  

   2. 开发LogicProvider
   功能: 监听特殊的Asset, 并调用相应的AssetPersistence
   实现方式:使用Cougaar中标准的LogicProvider的方式来实现
   实现细节:
       * AssetPersistLogicProvider: 监听特殊的Asset, 并调用相应的AssetPersistence(实现EnvelopeLogicProvider, ABAChangeLogicProvider接口).
       * AssetPersistenceDomain: Load AssetPersistLogicProvider(实现DomainAdapter接口).
       * 需要在LDMDommains.ini中注册AssetPersistenceDomain:
AssetPersistDomain=com.justep.business.content.model.persistence.AssetPersistDomain


   3. 开发特殊的AssetPersistence
   功能:实现特殊的Asset的SQL语句, 之后调用DatabaseService,将数据存储到MySQL中,或查询出来.  

 

 类似资料: