本节及后边的章节都以实际的例子进行描述,并且完整的按照DDD的流程实现该系统

题目如下:

背景介绍
一个面向学校师生的网上考试系统
需求描述
1.老师可以创建一门课程○一门课程包含多个视频和一场考试 (视频仅由老师在google drive的文件夹里进行管理)○课程发布之后,学生可以观看视频学习课程和参加考试
2.老师可以维护一个已存在的考试题库○题库里面会有很多题目,目前只有填空题○老师可以浏览,创建,删除和修改题库中的题目
3.老师可以通过选择题库中的题目来创建试卷○一张试卷由多道题目构成
4.老师可以修改试卷
5.老师可以在课程中创建一场考试○一场考试包含一张试卷○学生可以在规定日期之内开始作答试卷○一场考试不得超过两个小时○考试中的试卷的总分必须是100分○考试试卷的题目数量在5-20道之间○试卷中不能出现相同的题目
6.学生可以答卷○答卷要发答题纸○学生在开始答卷后,需要在规定时间内完成考试○学员答卷后,分数由系统自动判别得出
7.题库中的题目发生变化后,未添加到考试中的试卷也需要发生变化,已经创建的考试中的试卷不会发生变化
8.阅卷在答卷后触发
9.考试成绩达标,会调用第三方证书服务(RESTful)生成证书○证书只会生成一次○证书中包含课程名称
10.老师可以查看报表统计数据○成绩区间统计○课程通过率统计
术语表课程:course
题库:quiz bank
填空题:blank quiz
试卷:paper
考试:examination
答题纸:answer sheet
答案:answer
参考答案:reference answer
证书:certification
阅(卷): review
组(卷):assemble
重组(卷):reassemble
分发(答题纸):assign
交(卷):hand in
提交(答案): submit
发布(课程): publish
生成(证书): generate

什么是领域事件

事件风暴中的事件特指领域事件,是领域专家关心的事件,业务上真实发生的事,这件事有业务价值

事件风暴的步骤

  • 1.找出领域事件:橘黄色的便利贴,一个便利贴代表一个事件,采用"something has been done"的形式
  • 2.事件排序:事件需要按照时间顺序排好,不同的事件需要保证相对顺序

这个过程中如果有问题,需要及时与领域专家进行沟通

便利贴


不同的便利贴的颜色代表不同的意义,本节只会用到橘黄色的事件便利贴,其他颜色的遍历贴后边的设计会用到

事件风暴TIPS

  • 1.事件风暴的输入是业务,表现形式为:用户旅程,Epic
  • 2.事件风暴中的大部分事件会在将来的系统中呈现为系统事件,或者数据库的更改
  • 事件风暴这一步,在事件工作坊中至关重

练习

将上边题目中的事件转换为事件风暴

回顾上节

DDD的三阶段
从问题出发,逐级抽象,层层深入细化

  • 战略设计
  • 战术设计
  • 技术实现

事件风暴属于战略设计

DDD(Domain-Driven Design)领域驱动设计-(二)事件风暴相关推荐

  1. DDD(Domain Driven Design) 领域驱动设计从理论到实践 四

    - 接上 SOA 架构 ​     面向服务架构(Service Oriented Architecture,SOA)对于不同的人来说意思不同.这里梳理一下SOA原则: 服务契约 : 通过契约文档,服 ...

  2. DDD(domain driven design)-领域驱动设计

    domain driven design-领域驱动设计 领域驱动设计概述 背景 软件架构模式的演进 概念 分层架构与六边形架构 分层分包 复杂是我们软件生涯的一生之敌. 分层架构 & 面向过程 ...

  3. DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴寻找聚合

    回顾 上文我们讲了事件风暴,找出了系统中所有的事件,都通过"something has been done"的形式描述,如"填空题被创建"等 DDD整体的三个阶 ...

  4. 阿里技术专家 分享 DDD(Domain-Driven Design 领域驱动设计)

  5. DDD(Domain-Driven Design 领域驱动设计) 与产品设计

    DDD(Domain-Driven Design 领域驱动设计) 与产品设计 DDD (Domain-Driven Design 领域驱动设计) 或许也叫 Dream-Driven Design,某度 ...

  6. DDD(Domain-Driven Design)领域驱动设计-(一)整体概述

    前言 最近公司通过8节课组织了DDD培训,在此以系列文章作为总结,本篇文章主要介绍DDD整体概述 什么是DDD?(领域驱动设计) 传统架构方式 如果对于传统的web开发比较熟悉的同学一定会了解传统的三 ...

  7. ddd java repository_初探领域驱动设计(2)Repository在DDD中的应用

    概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...

  8. ddd 访问权限_DDD领域驱动设计实战 - 创建实体身份标识的常用策略

    从简单到复杂依次为: 3.1.1 用户提供唯一标识 这时用户将输入一些可识别的数值或符号,或从已有标识中选其一,然后创建实体对象.这是一种非常简单方案,但也可能变得复杂. 由于需用户自己生成高质量的标 ...

  9. ddd 访问权限_DDD 领域驱动设计-如何 DDD?

    注:科比今天要退役了,我是 60 亿分之一,满腹怀念-

最新文章

  1. SVN 撤回(回滚)提交的代码
  2. 2021年深度学习哪些方向比较有研究潜力?
  3. SparkSQL核心编程
  4. linux开启nscd服务缓存加速
  5. SAP Hybris Discount group,折扣组,折扣记录,用户组几组概念的关联
  6. 异步和同步的机制问题
  7. Java —— 连接邮箱,读取收件箱中的邮件
  8. Awvs详细使用教程
  9. 计算机网络原理实验实验七:分析IP报文结构
  10. Word2007 生成目录英文变成大写的解决办法
  11. Spark2.x学习笔记:Spark SQL的SQL
  12. Oracle+SQL优化第二弹
  13. clover写入efi_clover如何使用UEFI引导和EFI驱动选择
  14. STM32 FLASH的擦写寿命
  15. 计算机辅助翻译stm,计算机辅助翻译报告.doc
  16. 软件开发——软技能(一、IDE)
  17. php 开启dcom,快速解决PHP调用Word组件DCOM权限的问题讲解
  18. 电脑上不了网?常见问题的解决办法
  19. RocketyKerrigell(啄木鸟社区)
  20. 点面科技申报的两项创新产品被上海市经信委立项

热门文章

  1. 为什么mysql启动不了了_Mysql为什么启动不了
  2. Jenkins+maven+SVN构建java项目中遇到的问题及解决
  3. 安装RabbitMq启动运行出现服务无法启动 发生系统错误1067解决方案
  4. 解决js跨域使用nginx配置问题
  5. 异常处理简单例子--python except Exception as e
  6. 解决启动nginx时报80端口被占用的问题
  7. tomcat报错:This is very likely to create a memory leak问题解决
  8. Springboot中关于跨域问题的一种解决方法
  9. Java:转换列表 String 到一个字符串
  10. 如何在Node.js上的Express.js中获取GET(查询字符串)变量?