Domain driven design CQRS-命令、时态

Domain driven design CQRS-命令、时态,domain-driven-design,cqrs,Domain Driven Design,Cqrs,我一直在研究DDD和CQR,我想知道如何正确地呈现一个场景,在这个场景中,应用程序实际上被用来报告用户已经做了什么(在用户界面和命令名中) 假设我正在做一个应用程序来跟踪用户的活动,并且有一组预定义的有效活动:游泳、吃饭等。撇开关于这个领域是否足够协作以进行CQR的讨论(因为,即使不是这样,我也肯定会有一些非常协作的领域,它们可以进行类似的语义分析),我想知道:在用户界面上,我是使用类似命名的命令显示“游泳”、“吃饭”等按钮,还是使用“报告游泳”、“记录午餐”等按钮?答案在你的问题中。我想说,线

我一直在研究DDD和CQR,我想知道如何正确地呈现一个场景,在这个场景中,应用程序实际上被用来报告用户已经做了什么(在用户界面和命令名中)


假设我正在做一个应用程序来跟踪用户的活动,并且有一组预定义的有效活动:游泳、吃饭等。撇开关于这个领域是否足够协作以进行CQR的讨论(因为,即使不是这样,我也肯定会有一些非常协作的领域,它们可以进行类似的语义分析),我想知道:在用户界面上,我是使用类似命名的命令显示“游泳”、“吃饭”等按钮,还是使用“报告游泳”、“记录午餐”等按钮?

答案在你的问题中。我想说,线索在于你如何描述应用程序

“用于报告用户已完成的操作”

按钮的作用是报告过去的活动,因此命令应命名为“报告游泳”,事件应命名为“报告游泳”


我遇到过类似的情况,发现“报告”命令和“报告”事件工作得很好

听起来像是在记录事件。已经发生的事情应该以某种方式进行跟踪。因此,您根本不会发送任何命令。只需发布相应的事件,并根据需要在您的域中处理它们。

是否可以事件是否可以直接从客户端引发?或者(如果客户端是受信任的源)或者,您可以在应用程序服务级别引发事件。没有规则规定每个事件必须来自域模型内,或者必须有一个前置命令。从系统的角度来看,事件可能不知从何而来。这就是它与外部组件集成的方式。域如何接收这些事件?Ap从家长的角度看,它们不是来自命令总线(出于明显的原因;-))。这是否意味着,除了命令总线之外,还有一个带有“事件处理程序”的事件总线来运行域,或者…?@GoloRoden一旦应用程序的不同部分(上下文、域、服务,你称之为)通过事件相互通信,它们将需要一些处理这些事件的方法。这可能发生在每个服务级别(每个服务订阅公共总线上的事件)或编排级别(服务外部的sagas、流程管理器、业务流程引擎等)。谢谢,@danielfishr。听起来很合理。如果没有更好的答案,我会接受的。