0

我有一个带有复杂模型的“流程”应用程序(此处简化)。该应用程序具有这样的网络服务:

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

问题是:如何Process使用此 Web 服务将实体集成到应用程序中?


我正在考虑创建一个Process实体,而不是直接将 DTO 用作实体。

例如,在另一个应用程序中,我有Module一个Process.

我可以连接到我的 ORM 中,所以“关联”部分不是问题。问题是如何Module执行流程?

  • 通过调用ProcessService: 这很难看,因为我最终会得到一个不提供任何域逻辑的贫血进程实体。此外,这将使Module实体使用服务,这不太好,对吧?

  • 通过添加一个execute()方法Process?但是实体方法也调用了一个不好的服务

4

1 回答 1

1

在 DDD 中,外部 Web 服务应该由反腐败层(ACL) 封装。在 ACL 中,Web 服务的 DTO 契约应该映射到本地定义的值对象。

至于调用外部服务,这应该由托管相应用例的应用程序服务来完成,而不是由您观察到的实体来完成。

于 2013-04-25T15:08:11.613 回答