08 | 什么办法可以在讨论中自然形成统一语言?
徐昊
该思维导图由 AI 生成,仅供参考
你好,我是徐昊。今天我们来聊聊事件建模法(Event-based modeling)。
对于大多数人而言,业务建模中最难的一步并不是获得模型,而是说服业务方接受模型作为统一语言。虽然我们上节课讲到可以把角色 - 目标 - 实体法当作一种共创方法,但在实际操作的过程中,角色 - 目标 - 实体法仍然存在收集 - 建模 - 说服这三步。那么,有没有一种方法,可以在讨论的过程中更自然地完成模型共创呢?
答案是肯定的。事件建模法就是这样一种更易于模型共创的方法。不同于原味面向对象范式关注实体之间的关联与交互,事件建模法通过事件捕捉系统中信息的改变,再发掘触发这些改变的源头,然后通过这些源头发现背后参与的实体与操作,最终完成对系统的建模。
目前有两种比较有代表性的事件建模法,一种是目前 DDD 社区热捧的事件风暴法(Event Storming),另一种是我从 Peter Coad 的彩色建模中演化出的四色建模法。这节课我们先来学习事件风暴法,下节课我再展开讲解四色建模法。
不过在学习这两种具体的建模方法之前,我们有必要先了解事件建模法的两个基本原则,分别是通过事件表示交互和通过时间线划分不同事件。
事件建模法的基本原则(1):通过事件表示交互
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
事件建模法是一种通过事件捕捉系统中信息的改变,再发掘触发这些改变的源头,然后通过这些源头发现背后参与的实体与操作,最终完成对系统的建模的方法。本文介绍了事件建模法的两个基本原则,分别是通过事件表示交互和通过时间线划分不同事件。通过引入多条时间线,可以将业务维度展开到领域模型中,帮助更好地理解子域间的交互。事件建模法是一种元方法,可以根据业务需要发明自己的方法。文章深入浅出地介绍了事件建模法的基本原则和优点,对于想要了解该方法的读者具有很高的参考价值。 事件风暴法是一种事件建模方法,以响应式编程作为范式,通过事件、命令与策略之间的响应关系,组织逻辑。通过头脑风暴发现领域事件,以“对于事件的响应”为主要维度寻找事件间的关联;通过阅读模型和聚集发现事件与领域模型之间的关联。事件风暴法是一种简单明快的事件建模方法,通过具体案例展示了其建模流程和特点。文章还提出了一些思考题,引发读者对事件建模法的思考和讨论。 总的来说,本文通过介绍事件建模法和事件风暴法,使读者了解了这两种方法的基本原则、应用场景和优势,为读者提供了一种新的思考和解决问题的方法。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《如何落地业务建模》,新⼈⾸单¥68
《如何落地业务建模》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(18)
- 最新
- 精选
- 冯置顶我又想了一下,对于各种类型的系统,只要能找出可追溯的东西,比如钱的流向。再总结出一个合适的分析套路,就能形成一个这种类型的系统的分析方法
作者回复: 嗯。你学会了
2021-07-14412 - 冯事件风暴是一种团队协作方式,通过还原系统的运行轨迹发现关键的领域概念,而事件的发生顺序就是对系统行为的追溯。所以是不是凡是可追溯的东西,都能作为展开的维度? 事件和阅读模型的关系,事件是发生了一个动作的标志,这个动作还会影响系统,进而产生数据。阅读模型的一个功能就是这种数据的外在表现
作者回复: nice
2021-07-146 - hxfirefox对领域事件有疑问,在例子中content requested、content viewed看着都是个交互事件,而非领域事件,这样在事件风暴寻找领域事件应该如何去理解?
作者回复: 与领域模型有关的就是领域事件 无关是交互。所以建模之前都是交互事件
2021-07-1645 - Oops!“Place Order-Order Placed 产生的阅读模型是订单(Order),Pay Order-Order Paid 产生的阅读模型是订阅(Subscription)和支付(Payment)。” 这个推导过程跨度有点大,这个阅读模型具体是怎么推导出来的呢?
作者回复: 根据产生了什么信息 被怎么读取 推理
2021-07-1045 - 梦倚栏杆对于策略类(内核架构)的系统,怎么来分析新需求呢?有没有规范化的套路,老师有什么好的建议吗?
作者回复: 找到一个隐喻 把问题简化
2021-07-182 - Jxin本章理解 1.事件意味着一种因果关系,这就使得一个静态的概念,却具备流动的张力。在识别和理解事件时,可以考虑为什么要产生这一事件,以及有什么要响应这一事件,进而思考推出产生事件的前序动作以及响应事件的后续动作,从而驱动参与者的“心流”不断思考下去,不断展开沟通。 2.应用事件不产生数据,领域事件产生数据。会产生数据的事件往往都是关键事件,而这些关键事件背后往往隐藏着我们需要构建的领域模型,这就是通过事件流梳理出领域模型的基本思路。换句话说,领域模型意味着关键事件的留存。 3.事件风暴定义了七个概念,来约束沟通时的表达方式。有利于更清晰的与业务方达成共识。这七个概念不仅有业务视角的概念也有实现视角的概念。比如,站在业务视角,用户执行了决策命令触发了事件。站在实现视角,是聚合履行了发布事件的职责,实现了功能。 课后题: 1.事件的表现形式只能是事件吗?这个问题有点模糊,回答不了。 2.既有事件又存在阅读模型不是一种冗余吗? 不是,至少存在阅读模型的概念更有利于沟通。 3.除了“事件 - 响应”外,还有什么办法可以展开维度?事件除了作为因,也可作为果。比如为什么要产生这个事件,怎么产生这个事件;比如这个事件留存了什么,留存的东西应该是什么样的,怎么定义它。
作者回复: 应用事件也会产生数据。但不会涉及领域模型数据
2021-07-142 - 邓志国事件事件记录的就是各种应该被记录的单据,有点像业务的操作日志。对对象状态变化,一种是修改对象,产生日志;一种是创建日志,进而推出状态变化。事件我觉得是记录了操作日志。
作者回复: 这种东西。法律要求必须记
2021-07-181 - SochiLee“阅读模型是包含写入与查询的所有数据形态的总集,而聚合只是阅读模型中符合对象风格的子集”这句话的意思是:阅读模型=聚合+查询数据、聚合=写入数据+查询查询,对吗?
作者回复: 这里更多只关注读
2021-08-122 - 黑色蚕宝宝想请教下,关于这一篇文件的插图是用什么软件绘制的
编辑回复: 老师是用keynote画的~
2021-08-02 - 狩月订单上下文是以buyer聚合的, 必须要这样聚合吗? 如果直接访问订单呢? 这个聚合根的选择有什么方法没
作者回复: 请看前面的课 有讲到
2021-07-12
收起评论