Woj*_*arz 5 domain-driven-design event-sourcing axon
我想使用 Axon 框架实现 CQRS 和 ES
我有一个相当复杂的 HTML 表单,它表示招聘过程的六个步骤。
ES 将有助于生成选定日期的历史统计数据并跟踪表单的变化。
管理员始终可以执行多项操作:
表单更新(仅差异)从 UI 应用程序发送到后端。
假设我只想对服务器端应用程序进行更改,问题是什么应该是命令,什么应该是事件,我考虑三个选项:
Form Update Event Interviewer Assigned, Notifications Turned Off,Rejected on technical interviewNotifications Turned Off会成功,但Interviewer Assigned由于分配未经授权的用户而失败。也许我应该在命令生成之前检查所有约束?Assign Interviewer,Turn Off Notifications每个命令都会生成事件 ex:Interviewer Assigned, Notifications Turned OffAssign Interviewer可能由于分配未经授权的用户而失败。这最终会导致状态不一致,因为有些事件将存储在存储库中,有些则不会。也许我应该在命令生成之前检查所有约束?我想提请您注意的问题是:您是否为您存储的信息创建权威,或者您只是跟踪来自外部世界的信息?
\n\nUdi Dahan 写了竞争条件不存在;提出这个有趣的观点
\n\n\n\n\n时间上的微秒差异不应\xe2\x80\x99 对核心业务行为产生影响。
\n
如果您的系统中有未经授权的用户,那么在为他们分配特定步骤的责任之前对其进行授权对业务来说真的很重要吗?系统真的能判断出“错误”是责任被分配给了错误的用户,而不是用户被错误地未授权吗?
\n\nGreg Young 谈论了仓库系统中的异常报告,指出在这种情况下模型的责任不是阻止数据更改,而是在数据更改产生不一致状态时进行报告。
\n\n如果您仍然更新数据,企业的成本是多少?
\n\n如果消息的语义是 aDecision Has Been Made或 that Something In The Real World Has Changed,那么您的模型不应尝试阻止记录该信息。
FormUpdated由于您提到的原因,这不是特别令人满意的事件;您必须做大量额外的工作才能将其转换为特定领域的术语。如果有选择的话,您宁愿这样做一次。在进行过程中,考虑将事件从领域不可知的形式转换为领域特定的形式是合理的。
HttpRequestReceived ->\nFormSubmitted ->\nInterviewerAssigned\nRun Code Online (Sandbox Code Playgroud)\n\n其中中间表示是短暂的。
\n| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |