Events CQRS+;ES:与聚合无关的命令/事件,但对投影很重要
我有应用程序聚合,它可以处理注册,安装,卸载,隐藏,显示,变更所有者,发布,取消发布。。。应用程序中大约有20个命令。每个命令检查应用程序的不变量,例如应用程序可以是:Events CQRS+;ES:与聚合无关的命令/事件,但对投影很重要,events,domain-driven-design,cqrs,event-sourcing,aggregateroot,Events,Domain Driven Design,Cqrs,Event Sourcing,Aggregateroot,我有应用程序聚合,它可以处理注册,安装,卸载,隐藏,显示,变更所有者,发布,取消发布。。。应用程序中大约有20个命令。每个命令检查应用程序的不变量,例如应用程序可以是: 发布当名称、描述和其他详细信息有效时 仅在发布时隐藏 不是由所有者安装的,而是在发布后安装的 发布已取消当没有安装时 应用程序在命令有效时生成相应的事件。事件由预测和流程经理处理 我有应用程序和统计投影-它们处理应用程序聚合中的事件,两个投影都是100%基于事件的,因此可以完全删除投影并从头开始重建应用程序和统计数据预测由用
- 发布当名称、描述和其他详细信息有效时
- 仅在发布时隐藏
- 不是由所有者安装的,而是在发布后安装的
- 发布已取消当没有安装时
您认为在应用程序聚合中创建打开命令以发出打开事件是解决此问题的好方法吗?应用程序聚合能否拒绝打开命令? 如果不能,它真的是命令吗 我们向聚合发出命令以验证它们,如果聚合的当前状态不允许执行命令,则可能会拒绝它们
如果不能拒绝<强> Open/<强>命令,并且仍然决定用事件来解决用户跟踪,则可以考虑简单地发布<强>应用程序打开事件,而不向聚合发出命令。
另一种选择是完全跟踪另一个系统中的用户操作和统计信息,可能只是向数据库表中添加行。看起来您必须决定这是访问控制还是真正的域功能。。。也许是在另一个有限的上下文中?谢谢,这似乎是Analytics BC的责任,但Opened event可能有助于应用程序聚合中的应用程序评分算法-在这个阶段很难说。是的,Open命令可以被拒绝,即应用程序在未发布时无法打开。我已经解决了这个问题,将所有这些统计/分析内容转移到单独的BoundedContext中。无论如何,谢谢你对这个问题给予不同的看法。