0

複雑なモデルを持つ「プロセス」アプリケーションがあります(ここでは簡略化されています)。アプリケーションには、次のような Web サービスがあります。

Webservice             | Application behind webservice
------------------------------------------------------
ProcessDTO             | Process
    .getLabel()        |     .getLabel()
                       |     .getSubComponents()
                       |     .execute(input) // calls ProcessComponent.execute
                       | ProcessComponent
                       |     .execute(input)
ProcessService         | ProcessRepository
    .findProcess(id)   |     .findProcess(id)
    .executeProcess(..)|

問題は、この Web サービスを使用してアプリケーション内のエンティティを統合するにはどうすればよいかということです。Process


ProcessDTOをエンティティとして直接使用するのではなく、エンティティを作成することを考えていました。

たとえば、別のアプリケーションでModuleは、Process.

ORM に接続できるので、「関連付け」の部分は問題になりません。問題は、プロセスをどのように実行するかです。Module

  • : を呼び出すと、ProcessServiceドメイン ロジックを提供しない貧弱な Process エンティティになってしまうため、これは醜いです。さらに、それはModuleエンティティにサービスを使用させることになりますが、それはあまり良くありませんよね?

  • execute()にメソッドを追加することによってProcess?しかし、エンティティメソッドは良くないサービスも呼び出します

4

1 に答える 1

1

DDD では、外部 Web サービスは腐敗防止レイヤー(ACL) によってカプセル化する必要があります。ACL では、Web サービスの DTO コントラクトをローカルに定義された値オブジェクトにマップする必要があります。

外部サービスを呼び出す限り、これは、観察したエンティティではなく、対応するユース ケースをホストするアプリケーション サービスによって実行する必要があります。

于 2013-04-25T15:08:11.613 に答える