事件风暴

1. 基础概念

术语

  1. 执行者 -----> 是指执行的角色,系统的主体,是导致系统状态变化的触发源

    1. 人员,系统的用户,操作人员等
    2. 系统,系统本身执行的,或者调度的,自动触发的 ,第三方系统
    3. 定时任务,定时的触发任务
  2. 命令 -----> 是执行者发起的操作,构成要件是执行者的行为
    1. 是某个场景中领域事件的触发动作,对应一个用例
  3. 领域对象 -----> 是对对象,人或者系统的信息表示,它通过较为简单的信息结构来代表我们需要理解的复杂事务或系统
    1. 创建订单,修改订单 ,删除订单等 ,领域对象:订单
  4. 领域事件 -----> 是和领域相关的事情,实在业务上真实发生的事实,这些事件对系统会产生关键影响,是观察业务系统变化的关键点,领域事件一般是领域专家关心的,一般已动词的过去式表示,表示已发生什么事件,是过去已经发生过的事实
    1. 识别领域事件的线索

      1. 是否产生了某种数据
      2. 系统状态是否发生变化,无论这种状态存放到数据库还是内存
      3. 是否对外发送了某些消息
  5. 读模型 -----> 为了达到一个目的,需要在系统中读出一些数据
    1. 读模型来源于领域对象,展现的形式不一样,一个读模型中可能包含多个领域对象
2. 事件风暴工作坊实践流程
  • 产品愿景,识别软件价值和定位,进行业务的导入,团队共识业务需求信息
  • 初步进行领域划分,识别出核心域,分而治之 ,对问题域的初步划分,分解问题
  • 事件风暴,观察业务系统变化的关键点,找出系统状态的变化规律
  • 命令风暴,找出系统状态的触发者和行为
  • 寻找模型,根据领域名词,设别领域对象,识别对象之间的关系,设计模型
  • 限界上下文划分,分解问题 ,战略规划
  • 规范化的输出,已团队共识的模型或者UML输出等
3. 步骤
  1. 共识白板中的图例,各自表示的是什么

  2. 从一个初步划分的领域开始 ,按照时间轴,从左到右的,写出事件(对时间的顺序要求不是很高,尽量按照时间的先后顺序识别)

  3. 识别命令 ,和 执行者 ,并明确执行者的角色,比如,第三方系统,系统操作人员,定时任务

  4. 识别读模型

  5. 根据业务识别出来的命令,事件,找出具有代表性的名词,建立初步的模型,并整理分类

  6. 识别模型之间的关系,画出领域分析模型

  7. 根据分析模型,细化模型,设计出领域设计模型,并用uml展示

  8. 根据设计模型 设计 聚合,实体,值对象,细化模型

  9. 划分限界上下文 ,规范文档输出

业务需求

愿景和目标,统一认识,对于目标的共识

对于 :精装管理业务流程的业务人员(销售,订单,财务)

他们想 :更好的管理客户,项目,订单,以及更快的协作,完成订单,跟踪订单

这个 :精装订单系统

是一个 :内部管理系统

它可以 :通过对客户,项目,订单的在线化管理,提升业务方的协作效率,更好的跟踪 客户 和订单的情况

不同于 : OA管理系统

它的优势是 :结合业务的实际运行情况,基于定制化的管理系统,提升效率

1. 需求描述

​ 销售人员 登录APP,如果没有账号则注册账号,登录成功后,可以在系统上录入客户的基本信息,根据客户的房屋信息创建项目,一个客户可以创建一个或者多个项目,销售人员根据客户的意向情况,创建订单,收取意向金,收取的意向金需要财务进行确认,并记录审核的情况, 财务确认后,订单专员可以看到订单列表,审核订单信息,审核未通过,则通知销售人员原因

​ 订单专员可以给订单绑定合同,如果该客户下没有合同,可以为客户创建合同,并绑定,有合同,就直接绑定合同号,绑定的合同号会流转到下游的系统中,订单专员可以填写排期单信息,确定订单没有问题后,可以做订单下达 ,当订单的生命周期完结后,订单专员可以完成订单 ,订单中途出现意外情况 ,可以作废订单

订单状态机:

  1. 订单已创建 ------> 订单创建的初始状态
  2. 订单已生成合同号 ------> 订单绑定合同号成功
  3. 订单已下达 ------> 订单下达成功
  4. 订单已完成 ------> 订单完成了
  5. 订单已废弃 ------> 比如客户不想在公司做了 等情况 或者 没有用的订单不用跟踪了,废弃订单
2. 规则
  1. 意向金:向客户收取的定金 ,可以任意的填写 ,至少收取1千以上
  2. 财务审核确认,线上支付的不需要财务确认,现金需要财务进行确认
  3. 合同号生成规则:Gr + 年月日时分秒
  4. 合同号必须绑定 ,不绑定不能做订单下达
  5. 排期单必须填写,不填写不能做点单下达
  6. 用户名必须唯一,必须填写电话号码 和邮箱,并验证 ,密码长度不能低于6位
3. 术语
  1. 项目:在家装行业,项目的基本信息,一般就是客户的房屋信息,把房屋信息当作项目信息来管理
  2. 合同号:合同的标识
  3. 下游系统,另外一个服务或者第三方的系统
4. 干系人
  1. 销售 ,客户 ,订单专员 ,财务人员

  2. 分析

    1. 销售是支持者,录入和收集客户的基本信息应该要尽量完善,这样有利于设计师的设计和报价,面向的是客户,挖掘更多的客户信息,有利于签单
    2. 需要对客户进行分层,不同的客户,尽量匹配比较适合的设计师和销售
    3. 财务人员审核的周期控制等
    4. 订单专员审核的步骤可能很繁琐,需要考虑他的痛点以及效率
5. 流程图

6. 领域分析模型

参考资料

感谢各位老师的输出整理

  1. 公众号:作者:少个分号,公众号名称:DDD和微服务, https://mp.weixin.qq.com/s/3Ef7jzetIb7r_abH-i4Z8g
  2. 51CTO 课程 ,领域驱动设计课程 ---> 事件风暴
  3. 解构领域驱动设计 ---> 事件风暴

学习与尝试 --> 事件风暴的更多相关文章

  1. 从零开始学习jQuery (五) 事件与事件对象

    本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...

  2. JavaScript学习06 JS事件对象

    JavaScript学习06 JS事件对象 事件对象:当事件发生时,浏览器自动建立该对象,并包含该事件的类型.鼠标坐标等. 事件对象的属性:格式:event.属性. 一些说明: event代表事件的状 ...

  3. asp.net学习之GridView事件、GridViewRow对象

    原文:asp.net学习之GridView事件.GridViewRow对象 1. GridView控件的事件 GridView有很多事件,事件可以定制控件的外观或者行为.事件分为三类     1.1 ...

  4. 学习 JS滚轮事件(mousewheel/DOMMouseScroll)

    学习 JS滚轮事件(mousewheel/DOMMouseScroll) 1-1 滚轮事件兼容性的差异   IE,chrome,safari 浏览器都使用 onmousewheel, 只有firefo ...

  5. 学习笔记---Javascript事件Event、IE浏览器下的拖拽效果

    学习笔记---Javascript事件Event.IE浏览器下的拖拽效果     1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcE ...

  6. JavaScript高级程序设计学习笔记之事件

    1.事件流 事件流描述的是从页面中接收事件的顺序. 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播 ...

  7. vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结

    vue—你必须知道的   目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...

  8. Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle<T>

    Caliburn.Micro学习笔记目录 今天 说一下Caliburn.Micro的IEventAggregator和IHandle<T>分成两篇去讲这一篇写一个简单的例子 看一它的的实现 ...

  9. 学习jQuery的事件dblclick

    Insus.NET一直以来都是asp.net的开发的,少使用javascript.现在学习asp.net mvc了,jQuery是一个必须掌握的客户端语言. 不用急,慢慢来.一步一步.这篇练习jQue ...

随机推荐

  1. IPC机制与线程的操作

    目录 Queue模块 IPC机制(进程间通信) 生产者消费者模型 线程理论 创建线程的两种方式 线程实现TCP服务端的并发 线程join方法 线程数据共享 线程对象属性和方法 守护线程 GIL全局解释 ...

  2. python之生成器与模块

    目录 生成器对象 自定义range方法 生成器表达式 模块 简介 模块的导入方式 第一种:import ... 第二种:from ... import ... 补充 生成器对象 生成器对象其实本质还是 ...

  3. 《Mybatis 手撸专栏》第9章:细化XML语句构建器,完善静态SQL解析

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你只是在解释过程,而他是在阐述高度! 如果不是长时间的沉淀.积累和储备,我一定也没有 ...

  4. 02-C高级编程

    Day01 笔记 1 typedef使用 1.1 起别名 - 简化struct关键字 1.2 区分数据类型 1.3 提高代码移植性 2 void使用 2.1 不可以利用void创建变量 无法给无类型变 ...

  5. IDEA初始化基础配置

    0.前言 这篇博客是给认识的那帮新手搞的,刚进入IT行业的崽们 这个东西配置好了,也可以选择弄成在线文档,下一次安装IDEA时,有一个import导入配置,然后就可以自己配置好了( 虽然方便,但不建议 ...

  6. redis主从复制(九)

    先来简单了解下redis中提供的集群策略, 虽然redis有持久化功能能够保障redis服务器宕机也能恢复并且只有少量的数据损失,但是由于所有数据在一台服务器上,如果这台服务器出现硬盘故障,那就算是有 ...

  7. Python爬虫-正则

    介绍: 是 一门全新的语言,一种使用表达式的方式对字符串进行匹配的语法规则 我们抓取到的网页源代码本质上就是一个超长的字符串,想从里面提取内容,用正则再适合不过 优点:速度快.效率高.准确性高 缺点: ...

  8. yearning_sql审核平台搭建

    Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案.提供基于Inception的SQL检测及执行. GitHub:https://github. ...

  9. 【前端面试】(三)JavaScript相等(==)和全等(===)运算符的区别

    视频链接: JavaScript相等()和全等(=)运算符的区别 - Web前端工程师面试题讲解 参考链接: JavaScript == 与 === 区别 区别 对于string.number 等基础 ...

  10. Java实现无界面计算器

    ## 要求### 1.四个方法加减乘除### 1.循环加switch### 1.传递2个数源码如下: ``` public class Jisuanqi { public static void ma ...