如何落地业务建模
徐昊
Thoughtworks 中国区 CTO
24830 人已学习
新⼈⾸单¥68
登录后,你可以任选2讲全文学习
课程目录
已完结/共 32 讲
如何落地业务建模
15
15
1.0x
00:00/00:00
登录|注册

08 | 什么办法可以在讨论中自然形成统一语言?

通过阅读模型和聚集发现事件与领域模型之间的关联
以“对于事件的响应”为主要维度寻找事件间的关联
通过头脑风暴发现领域事件
根据事件顺序组织业务逻辑
通过事件表示行为
开始完善、细化领域模型
根据命令与事件,寻找产生了变化的聚合,以及新生成的阅读模型
通过事件寻找策略以及由策略触发的SIC
根据事件寻找触发它的命令与行动者
通过头脑风暴寻找领域事件
以响应式编程作为范式
由Alberto Brandolini在2012年创造
区分交互事件与领域事件
引入多条时间线
通过事件发现背后参与的实体与操作
事件捕捉系统中信息的改变
事件风暴法的应用
事件建模法的共同性质
事件风暴法的建模流程
事件风暴法的概述
通过时间线划分不同事件
通过事件表示交互
小结
事件风暴法
事件建模法的基本原则
事件建模法

该思维导图由 AI 生成,仅供参考

你好,我是徐昊。今天我们来聊聊事件建模法(Event-based modeling)。
对于大多数人而言,业务建模中最难的一步并不是获得模型,而是说服业务方接受模型作为统一语言。虽然我们上节课讲到可以把角色 - 目标 - 实体法当作一种共创方法,但在实际操作的过程中,角色 - 目标 - 实体法仍然存在收集 - 建模 - 说服这三步。那么,有没有一种方法,可以在讨论的过程中更自然地完成模型共创呢?
答案是肯定的。事件建模法就是这样一种更易于模型共创的方法不同于原味面向对象范式关注实体之间的关联与交互,事件建模法通过事件捕捉系统中信息的改变,再发掘触发这些改变的源头,然后通过这些源头发现背后参与的实体与操作,最终完成对系统的建模。
目前有两种比较有代表性的事件建模法,一种是目前 DDD 社区热捧的事件风暴法(Event Storming),另一种是我从 Peter Coad 的彩色建模中演化出的四色建模法。这节课我们先来学习事件风暴法,下节课我再展开讲解四色建模法。
不过在学习这两种具体的建模方法之前,我们有必要先了解事件建模法的两个基本原则,分别是通过事件表示交互和通过时间线划分不同事件。

事件建模法的基本原则(1):通过事件表示交互

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

事件建模法是一种通过事件捕捉系统中信息的改变,再发掘触发这些改变的源头,然后通过这些源头发现背后参与的实体与操作,最终完成对系统的建模的方法。本文介绍了事件建模法的两个基本原则,分别是通过事件表示交互和通过时间线划分不同事件。通过引入多条时间线,可以将业务维度展开到领域模型中,帮助更好地理解子域间的交互。事件建模法是一种元方法,可以根据业务需要发明自己的方法。文章深入浅出地介绍了事件建模法的基本原则和优点,对于想要了解该方法的读者具有很高的参考价值。 事件风暴法是一种事件建模方法,以响应式编程作为范式,通过事件、命令与策略之间的响应关系,组织逻辑。通过头脑风暴发现领域事件,以“对于事件的响应”为主要维度寻找事件间的关联;通过阅读模型和聚集发现事件与领域模型之间的关联。事件风暴法是一种简单明快的事件建模方法,通过具体案例展示了其建模流程和特点。文章还提出了一些思考题,引发读者对事件建模法的思考和讨论。 总的来说,本文通过介绍事件建模法和事件风暴法,使读者了解了这两种方法的基本原则、应用场景和优势,为读者提供了一种新的思考和解决问题的方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《如何落地业务建模》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • 置顶
    我又想了一下,对于各种类型的系统,只要能找出可追溯的东西,比如钱的流向。再总结出一个合适的分析套路,就能形成一个这种类型的系统的分析方法

    作者回复: 嗯。你学会了

    2021-07-14
    4
    12
  • 事件风暴是一种团队协作方式,通过还原系统的运行轨迹发现关键的领域概念,而事件的发生顺序就是对系统行为的追溯。所以是不是凡是可追溯的东西,都能作为展开的维度? 事件和阅读模型的关系,事件是发生了一个动作的标志,这个动作还会影响系统,进而产生数据。阅读模型的一个功能就是这种数据的外在表现

    作者回复: nice

    2021-07-14
    6
  • hxfirefox
    对领域事件有疑问,在例子中content requested、content viewed看着都是个交互事件,而非领域事件,这样在事件风暴寻找领域事件应该如何去理解?

    作者回复: 与领域模型有关的就是领域事件 无关是交互。所以建模之前都是交互事件

    2021-07-16
    4
    5
  • Oops!
    “Place Order-Order Placed 产生的阅读模型是订单(Order),Pay Order-Order Paid 产生的阅读模型是订阅(Subscription)和支付(Payment)。” 这个推导过程跨度有点大,这个阅读模型具体是怎么推导出来的呢?

    作者回复: 根据产生了什么信息 被怎么读取 推理

    2021-07-10
    4
    5
  • 梦倚栏杆
    对于策略类(内核架构)的系统,怎么来分析新需求呢?有没有规范化的套路,老师有什么好的建议吗?

    作者回复: 找到一个隐喻 把问题简化

    2021-07-18
    2
  • Jxin
    本章理解 1.事件意味着一种因果关系,这就使得一个静态的概念,却具备流动的张力。在识别和理解事件时,可以考虑为什么要产生这一事件,以及有什么要响应这一事件,进而思考推出产生事件的前序动作以及响应事件的后续动作,从而驱动参与者的“心流”不断思考下去,不断展开沟通。 2.应用事件不产生数据,领域事件产生数据。会产生数据的事件往往都是关键事件,而这些关键事件背后往往隐藏着我们需要构建的领域模型,这就是通过事件流梳理出领域模型的基本思路。换句话说,领域模型意味着关键事件的留存。 3.事件风暴定义了七个概念,来约束沟通时的表达方式。有利于更清晰的与业务方达成共识。这七个概念不仅有业务视角的概念也有实现视角的概念。比如,站在业务视角,用户执行了决策命令触发了事件。站在实现视角,是聚合履行了发布事件的职责,实现了功能。 课后题: 1.事件的表现形式只能是事件吗?这个问题有点模糊,回答不了。 2.既有事件又存在阅读模型不是一种冗余吗? 不是,至少存在阅读模型的概念更有利于沟通。 3.除了“事件 - 响应”外,还有什么办法可以展开维度?事件除了作为因,也可作为果。比如为什么要产生这个事件,怎么产生这个事件;比如这个事件留存了什么,留存的东西应该是什么样的,怎么定义它。

    作者回复: 应用事件也会产生数据。但不会涉及领域模型数据

    2021-07-14
    2
  • 邓志国
    事件事件记录的就是各种应该被记录的单据,有点像业务的操作日志。对对象状态变化,一种是修改对象,产生日志;一种是创建日志,进而推出状态变化。事件我觉得是记录了操作日志。

    作者回复: 这种东西。法律要求必须记

    2021-07-18
    1
  • SochiLee
    “阅读模型是包含写入与查询的所有数据形态的总集,而聚合只是阅读模型中符合对象风格的子集”这句话的意思是:阅读模型=聚合+查询数据、聚合=写入数据+查询查询,对吗?

    作者回复: 这里更多只关注读

    2021-08-12
    2
  • 黑色蚕宝宝
    想请教下,关于这一篇文件的插图是用什么软件绘制的

    编辑回复: 老师是用keynote画的~

    2021-08-02
  • 狩月
    订单上下文是以buyer聚合的, 必须要这样聚合吗? 如果直接访问订单呢? 这个聚合根的选择有什么方法没

    作者回复: 请看前面的课 有讲到

    2021-07-12
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部