领域事件:
领域专家所关心的在领域中的一些事件.
将领域中所发生的活动建模城一系列的离散事件. 每个事件都用领域对象来表示.
领域事件是领域模型的组成部分, 表示领域中所发生的事情.
重要的事件肯定会在系统其他地方引起反应, 因此理解为什么会有这些反应同样也很重要.--- Martin Fowler
一个领域事件可以理解为是发生在一个特定领域中的事件, 是你希望在同一个领域中其他部分知道并产生后续动作的事件. 但是并不是所有发生过的事情都可以称为领域事件. 一个领域事件必须对业务有价值, 有助于形成完整的业务闭环, 也即一个领域事件将导致进一步的业务操作.
领域事件可以是业务流程中的一个步骤.
如果在通用语言中存在 "当 a 发生时, 我们就需要做到 b." 这样的描述, 则表明 a 可以定义成一个领域事件. 领域事件的命名一般也是 "产生事件的对象名称 + 完成的动作的过去式" 的形式.
例如: 订单的发货事件 OrderDispathedEvent
领域事件的优点:
领域事件可以是一种基于事件的架构. 事件架构的好处是可以把处理的业务解耦, 实现系统的可扩展性, 提高主业务流程的内聚性.
领域事件的特点: 解决领域的聚合性问题, 也是领域分析的工具. 领域事件可以通过观察者模式和订阅模式进行实现. 比较常见的实现就是事件总线.
事件风暴:
事件风暴也称为事件建模, 类似头脑风暴, 通过事件风暴的方法可以快速分析复杂业务领域, 完成领域建模的目标.
事件风暴是一项团队活动, 旨在通过领域事件识别出聚合根, 今儿划分微服务的限界上下文. 在活动中, 团队先通过头脑风暴的形式罗列出领域中的所有的领域事件, 整合之后形成最终的领域事件集合, 然后对于每一个事件, 标注出导致该事件的命令, 然后再为每个事件标注出命令发起方的角色, 命令可以是用户发起的, 也可以是第三方系统调用或者是定时器触发等. 最后对事件进行分类这里出聚合根以及限界上下文.
能够引发事件的事情包括用户行为, 外部系统所发生的事情以及时间的流逝. 事件也有助于找到领域的边界, 对属于的不同阐述可能就意味着存在边界.
来源: http://www.bubuko.com/infodetail-3166075.html