Domain driven design 在CQRS中,如何将聚合上允许的方法列表传递给UI?
我有一个聚合根“Order”,它有许多方法,可以在内部设置其“Status”字段:Domain driven design 在CQRS中,如何将聚合上允许的方法列表传递给UI?,domain-driven-design,cqrs,Domain Driven Design,Cqrs,我有一个聚合根“Order”,它有许多方法,可以在内部设置其“Status”字段: 提交 搁置 起飞等待 证实 取消 等等 可用操作取决于订单的当前状态(例如,如果订单已处于保留状态,则无法将其置于保留状态)。问题是我需要提供一个查询来告诉UI哪些命令可用,这样我就可以隐藏操作,否则会引发invalidooperationexception 如何将干冲突降至最低?最简单的解决方案是将当前状态和可用转换投射到读取/查询模型,并将其与要显示的数据一起选择 例如: PlaceOnHoldComma
- 提交
- 搁置
- 起飞等待
- 证实
- 取消
- 等等
invalidooperationexception
如何将干冲突降至最低?最简单的解决方案是将当前状态和可用转换投射到读取/查询模型,并将其与要显示的数据一起选择 例如:
PlaceOnHoldCommand
生成OrderPlacedOnHoldEvent
,该事件(除了放在EventStore中)由OrderTransitionsEventHandler发布和处理,它将与订单关联的DB表的可用转换反规范化。客户端选择可用的转换并相应地进行操作(隐藏不可用的按钮或类似的东西)
这当然是一种选择。但是,不要指望会有任何重复。CQR有助于管理复杂性,有时这意味着会发生轻微违反DRY的情况。+1-同意。没什么可补充的了——这就是你要做的,这很性感!谢谢