0

クリーン/六角形アーキテクチャ パラダイムを使用してアプリケーションを設計していますが、これについては初心者です。いくつか質問があります。

シナリオは次のとおりです。

  • 「エンティティ」情報と関連する「ドキュメント」を提供する外部 SOAP サービスがあります。
  • すべてのエンティティについて、アプリケーションは次のことを行う必要があります。
    • すべてのエンティティ ドキュメントを CMS に保存する (コンテンツといくつかのエンティティ属性)
    • 格納されたドキュメント参照を使用して DDBB にエンティティを格納する

Java のようなアプローチでの最初のソリューションを見てみましょう。

エンティティとドキュメント

class Entity {
  private String id;
  // other attributes ... 
  private Document xml; 
  private Document pdf; 
  // some business logic
}

class Document {
  private long id;
  //other attributes
  InputStream getStream() {...}
}

ドメイン層での FRepositori の抽象化

class EntityRepositori {
  Entity create(Entity entity);
  ...
}

ドメイン層での DocumentRepositori の抽象化

class DocumentRepositori {
  Document create(Document document)
  ...
}

SOAP サービスのアプリケーション層での ExternalService 抽象化

class ExternalService {
  List<Entity> getEntities();
  ...
}

アプリケーション層でのユースケースの実装

class IncorporateEntityUseCase {
  IncorporateFUserCase(EntityRepositori, DocumentRepositori, ExternalService){...}
  void incorporate() {
    List<Entity> entities = externalService.getEntities();
    for (Entity entity : entities) {
        Document xml = dRepository.create(entity.getXmnl());
        Document pdf = dRepository.create(entity.getPdf());
        entity.setXml(xml);
        entity.setPdf(pdf);
        entityRepository.create(entity);
    }
  }
}

質問

  1. ExternalService については、Entity と Document で抽象化を定義するのが正しいですか、それとも UseCase 実装がエンティティに変換する ValueObject を返す必要がありますか?
  2. Document については、集約ルートとして設計し、Entity から Document オブジェクトの参照を排除する必要がありますか?
4

1 に答える 1