サービスの実装クラスサンプル。前述のDomainDrivenService、SaveFileServiceの両方に対応し、バッチからの呼び出し、ログファイルからのサービス実行、APIとしてのサービス呼び出しのいずれにも対応している。
コード中の「メタデータリポジトリ」のような「~リポジトリ」クラスは、ドメイン駆動のドメイン層に当たるクラスであり、業務ロジックの本体を記述する。ドメイン層のクラスは通常、DIの仕組みを使って自動的に設定する。
package service.impl;
import service.DomainDrivenService;
import service.SaveFileService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipSaveFileService;
import service.param.SopSaveFileService;
import domain.MetaDataRepository;
/**
* ファイル保存サービス(実装)
*/
public class SaveFileServiceImpl implements DomainDrivenService,
SaveFileService {
/** メタデータリポジトリ */
private MetaDataRepository metaDataRepository = null;
public MetaDataRepository getMetaDataRepository() {
return metaDataRepository;
}
public void setMetaDataRepository(MetaDataRepository metaDataRepository) {
this.metaDataRepository = metaDataRepository;
}
@Override
public ServiceOutputParameter doService(ServiceInputParameter sip) {
// 入力パラメータからサブスタンスIDを取得する
String fileName = ((SipSaveFileService) sip).getFileName();
// サービスを実行する
doService(fileName);
// サービス出力パラメータを作成する
SopSaveFileService sop = new SopSaveFileService();
// 出力パラメータを作成し、呼び出し側に戻す
return sop;
}
/*
* (非 Javadoc)
*
* @see service.SaveFileService#doService(java.lang.String)
*/
@Override
public void doService(String fileName) {
// リポジトリの保存メソッドを呼び出す
metaDataRepository.saveFile(fileName);
}
}
0 件のコメント:
コメントを投稿