【发布时间】:2019-07-02 13:09:04
【问题描述】:
假设我有一个Order 聚合根,当我收到创建Order 的命令时,我应该在某些条件下检查其他订单,如果满足这些条件,则拒绝创建。检查这个条件绝对是业务逻辑,但我不应该首先创建订单,而条件不满足。
那么如何实现这个符合 DDD 原则的检查呢?
它是域服务、应用程序服务的一部分吗?
编辑:
Order 中有 TableId 属性。
例如,我需要检查表是否已被占用,如果是,则拒绝创建订单。此表服务可能驻留在另一个 AppDomain 中,可能需要网络调用。
我正在使用事件溯源、CQRS、命令处理程序。抱歉,我无法发布代码。
【问题讨论】:
-
视情况而定。提供的信息太少。当您使用 CQRS 时,请在命令处理程序中执行此操作。您从存储库中获取订单,如果它显然存在,如果它不存在添加它。涉及两个或多个聚合的更复杂的业务逻辑可能会进入域服务(即银行转账)
-
@Tseng 感谢您的反馈,我发布了关于问题的编辑以提供更多背景信息。
标签: domain-driven-design aggregateroot domainservices