赞
踩
通过事件风暴进行ddd的标准流程是?
事件风暴(Event Storming)是一种DDD的实践方法,核心思想是通过大量的黏贴纸来描述和组织业务流程及事件,以此来促进团队成员对业务领域的理解和沟通。
以下是通过事件风暴进行DDD的标准流程:
定义目标和范围:明确本次事件风暴的目标是什么,范围覆盖哪些业务流程,参与人员包括哪些角色(如业务专家、开发人员、产品经理等)。
准备工具和环境:需要一张大的白板或者海报纸,各色标签贴纸、记号笔等。一般用橙色表示事件,蓝色表示命令,红色表示聚合等。
列举业务事件:让所有参与者一起列举出他们能想到的所有业务事件,并用黄色便签纸写下事件的名称,贴在白板上。事件应描述为“某某已经发生”,比如“订单已创建”、“支付已完成”等。
组织和排序事件:将列出的事件按照它们发生的顺序和关联性进行组织和排序。把相互关联的事件放在一起,形成一个业务流程。
确定聚合:找出那些影响事件发生的对象,这些就是可能的聚合。聚合负责保证业务规则的一致性。
引入命令:确定哪些命令会导致事件的发生,用蓝色便签纸表示。命令是对聚合的一个操作,它会改变聚合的状态并可能触发事件。
明确界限上下文:根据业务流程的不同,划分出不同的界限上下文。
识别领域事件和领域服务:找出流程中的领域事件和领域服务,领域事件表示业务流程中的重要变化,领域服务则是无法归类到聚合的一些业务操作。
验证和修正模型:让业务专家验证这个模型是否符合实际的业务流程,不断迭代和修正模型。
生成并验证软件设计:根据事件风暴的结果生成软件设计,然后通过编码和测试来验证设计的正确性。
定义目标和范围:明确本次事件风暴的目标是什么,范围覆盖哪些业务流程,参与人员包括哪些角色(如业务专家、开发人员、产品经理等)。
现在你是领域专家,我会按照流程步骤进行事件风暴,你帮我对本步骤做优化。
定义目标和范围:
本次事件风暴的目标是完成网页打印小程序的设计,
范围:网页打印
好的,关于网页打印小程序的设计,以下是更具体的目标和范围定义:
目标:
范围:
这样的定义可以帮助我们更清晰地理解和划分业务流程,为后续的事件风暴步骤奠定基础。
准备工具和环境:需要一张大的白板或者海报纸,各色标签贴纸、记号笔等。一般用橙色表示事件,蓝色表示命令,红色表示聚合等。
线下就好,后期AI更先进了可以直接让AI画图和修改
列举业务事件:让所有参与者一起列举出他们能想到的所有业务事件,并用黄色便签纸写下事件的名称,贴在白板上。事件应描述为“某某已经发生”,比如“订单已创建”、“支付已完成”等。
使用事件风暴列举业务事件
使用事件风暴的方法,我们可以列举如下的业务事件:
网页地址输入事件:当用户在输入框中输入或粘贴网页地址时触发。
打印参数设置事件:当用户设置了打印页数、颜色、纸张大小等打印参数时触发。
打印预览生成事件:当系统根据用户输入的网页地址和设置的打印参数生成打印预览时触发。
打印任务提交事件:当用户确认打印预览无误,点击“打印”按钮提交打印任务时触发。
打印进度更新事件:当打印任务的进度发生变化时触发。例如,当打印任务被添加到打印队列,或者正在打印,或者打印完成。
打印结果反馈事件:当打印任务完成,系统生成打印结果并反馈给用户时触发。
打印记录保存事件:当用户选择保存打印记录时触发。
网页加载失败事件:当系统无法加载用户输入的网页地址时触发。
打印异常事件:当打印过程中出现问题时触发。例如,打印机缺纸,打印任务被取消等。
组织和排序事件:将列出的事件按照它们发生的顺序和关联性进行组织和排序。把相互关联的事件放在一起,形成一个业务流程。
使用platuml展现这个流程。
这是一种可能的顺序和关联性组织:
当使用plantuml来展示这一流程时,代码可能如下:
@startuml
:网页地址输入;
if (网页加载失败) then (yes)
:处理失败事件;
stop
else (no)
:打印参数设置;
:打印预览生成;
if (打印预览确认) then (yes)
:打印任务提交;
:打印进度更新;
if (打印异常) then (yes)
:处理异常事件;
else (no)
:打印结果反馈;
:打印记录保存;
endif
else (no)
stop
endif
endif
@enduml
这将创建一个流程图,显示了各个业务事件的流程和可能的决策点。
作为领域专家,完成下面两个步骤
确定聚合:找出那些影响事件发生的对象,这些就是可能的聚合。聚合负责保证业务规则的一致性。
引入命令:确定哪些命令会导致事件的发生,用蓝色便签纸表示。命令是对聚合的一个操作,它会改变聚合的状态并可能触发事件。
确定聚合:在上述事件中,可能的聚合有:
引入命令:对应的命令可能有:
明确界限上下文:根据业务流程的不同,划分出不同的界限上下文。
在这个业务场景中,我们可以划分出以下几个界限上下文:
网页加载上下文:负责处理用户输入的网页地址,加载网页并生成预览。
打印任务上下文:负责处理打印任务的创建,参数设定,进度更新和任务完成等操作。
打印结果反馈上下文:负责打印任务完成后,生成打印结果并反馈给用户。
打印记录保存上下文:负责在打印完成后,保存打印记录。
在这些界限上下文中,不同上下文的聚合可能存在交互和通信,例如,打印任务上下文中的“打印任务”聚合在打印完成后,可能需要与“打印记录保存”上下文中的“打印记录”聚合进行交互,保存打印记录。但界限上下文之间的交互应保持尽可能的松耦合,以保持系统的灵活性和可维护性。
识别领域事件和领域服务:找出流程中的领域事件和领域服务,领域事件表示业务流程中的重要变化,领域服务则是无法归类到聚合的一些业务操作
识别领域事件:在我们的流程中,我们可以识别出以下的领域事件:
网页加载完成:这是用户提供的网页地址被成功加载的标志。
打印预览已生成:这表示针对用户设置的打印参数,预览已经成功生成。
打印任务已提交:用户提交打印任务,准备开始打印。
打印进度已更新:打印任务的状态改变,如:开始打印、打印中、打印完成等。
打印结果已反馈:打印任务完成后,结果被反馈给用户。
打印记录已保存:用户选择保存打印记录后,记录被成功保存。
识别领域服务:这些是一些无法归类到具体聚合,但又对业务流程至关重要的操作:
网页加载服务:负责根据用户提供的网页地址加载网页。
预览生成服务:根据用户设置的打印参数,生成打印预览。
打印服务:负责处理打印任务,包括打印进度的更新和打印结果的生成。
记录保存服务:在打印完成后,根据用户的选择,保存打印记录。
验证和修正模型:让业务专家验证这个模型是否符合实际的业务流程,不断迭代和修正模型。
验证和修正模型:
用魔法打败魔法,用AI做业务专家把前面的文档给他反复修改迭代
生成并验证软件设计:根据事件风暴的结果生成软件设计,然后通过编码和测试来验证设计的正确性。
生成并验证软件设计:
这已经是另一个故事了~
事件风暴是一种DDD的实践方法,通过大量的黏贴纸来描述和组织业务流程及事件,以此来促进团队成员对业务领域的理解和沟通。
事件风暴的过程包括定义目标和范围、准备工具和环境、列举业务事件、组织和排序事件、确定聚合、引入命令、明确界限上下文、识别领域事件和领域服务、验证和修正模型、生成并验证软件设计等步骤。
AI真香!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。