本节及后边的章节都以实际的例子进行描述,并且完整的按照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的三阶段
从问题出发,逐级抽象,层层深入细化
- 战略设计
- 战术设计
- 技术实现
事件风暴属于战略设计