cougaar學習筆記之---序列化Asset到MySQL中
目標:將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中,或查詢出來.