目標:將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中,或查詢出來.