目标:将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中,或查询出来.