学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid=1940048&ctype=0
文章目录
- 概念
- 组成部分
- 具体场景
- 事件风暴
- 寻找聚合
- 改进
- 具体流程
- 参考
概念
事件风暴是Alberto Brandolini 发明的一种头脑风暴方法,可以:
- 分析交流学习领域知识
- 梳理业务流程,理解系统职责
- 进一步设计领域模型
组成部分
Domain Event:领域事件。在这个业务中,已经发生的有意义的事情,是一个事实。
Query Model/Infromation:读模型。当领域事件发生过之后,会产生一些查询模型。
actor:用户、角色。 用户观察到这些查询模型之后,会决定做一些操作。
Command/Action: 命令。
External System/Aggregate/consistent business rule:外部系统,聚合。 这一些操作会在外部系统或者聚合上去做,可能又会产生一些领域事件。
Policy:策略。系统自动监听领域事件,发布命令。
这就是事件风暴最主要的组成部分,建模的时候就是要把这些东西找出来,并且让它们的逻辑关系通畅。
具体场景
网上找了一个事件例子说明,图片来源:https://www.jianshu.com/p/797d96c1faab/
事件风暴
图片来源:https://www.jianshu.com/p/797d96c1faab/
寻找聚合
改进
原版的事件风暴没有非常的强调逻辑要通顺的,主要是强调协作,领域专家和程序员一起商量、共创、画图,把模型建立出来,并没有强调建模细节的过程以及聚合到什么程度。作者进行了优化
具体流程
事件命令完备:主要是找到所有的命令和事件。
聚合完备:找出聚合,将相同ID的事件,分配给同一个聚合。确保所有命令的功能都能分解到聚合来承担。
聚合优化:聚合上下限,不能太大,不能太小。
参考
https://www.jianshu.com/p/797d96c1faab/