ENode框架Conference案例分析系列之 - 业务简介

简介:

前言

ENode是一个应用开发框架。通过ENode,我们可以方便的开发基于DDD+CQRS+EventSourcing+EDA架构的应用程序。之前我已经写了很多关于ENode的架构以及设计原理的文章,但是因为没有和具体的例子结合来进行分析,所以可能很多人还是无法理解ENode的功能和设计。所以,接下来,我想通过一个较为完整的案例来一步步从业务分析到领域模型设计再到代码实现,以案例的方式讲解ENode如何帮助我们落实DDD的编码实现。

本文是这个系列的第一篇,所以需要先介绍这个案例的一些业务。

前段时间,我用业余时间开发了一个DDD的案例,叫Conference。它是一个支持多租户的会议管理和预定的系统。这个项目不是我个人想出来的,而是微软的一个CQRS实践的一个开源项目,项目主页:http://cqrsjourney.github.io/

Conference业务简介

Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台。这个系统的用户有两类:1)客户,可以创建和管理会议;2)会议座位预定者,可以预订会议座位。具体的关键业务描述如下:

  1. 客户创建一个会议,并录入会议的基本信息,比如名称、时间段、地点,等;会议创建后,系统会为客户自动生成一个AccessCode,客户可以通过AccessCode访问自己创建的会议;
  2. 客户定义某个会议的座位类型,可以定义多个,每个座位类型包含的信息有:名称、座位价格、座位数量;
  3. 客户发布或取消发布某个会议,当一个会议发布后,预订者就可以在线预订会议的座位了;如果取消发布,则该会议对预订者不可见;只有未发布状态的会议才能修改;
  4. 预订者在预订会议座位时,会生成订单,订单需要进行支付才会生效;
  5. 订单生成后,预订者可以有15分钟的时间付款,超过15分钟,订单预定的座位就会回收,允许其他人预定;
  6. 订单生成后,系统会为预订者生成一个AccessCode,用户可以通过AccessCode查看自己的订单;
  7. 预订者成功预订了座位后,可以指定每个座位的实际参会人信息
  8. 客户(会议的Owner)可以管理他创建的每个会议的所有订单,比如可以查看该会议的所有订单以及参会人信息,以方便联系参会人;

结束语

通过上面的业务介绍,我们不难理解,这个系统本质是一个简易的电子商务系统。它提供了商品管理、下订单、支付三大功能。大家可以看到,这个系统没有用户注册、登录的业务,而是简单的采用AccessCode来让用户访问自己的数据,因为这是一个学习案例。我之所以选择这个案例来进行分析,就是因为大家一般对电子商务系统的业务相对比较熟悉,这样我们讨论就有了一定的基础。下一篇文章,我想从DDD的角度,分析如何进行战略设计(划分子域以及BC)和战术设计(建立领域模型)。


目录
相关文章
|
5月前
|
资源调度 前端开发 JavaScript
第十章(应用场景篇) Single-SPA微前端架构深度解析与实践教程
第十章(应用场景篇) Single-SPA微前端架构深度解析与实践教程
201 0
|
4月前
|
存储 缓存 Linux
【实战指南】嵌入式RPC框架设计实践:六大核心类构建高效RPC框架
在先前的文章基础上,本文讨论如何通过分层封装提升一个针对嵌入式Linux的RPC框架的易用性。设计包括自动服务注册、高性能通信、泛型序列化和简洁API。框架分为6个关键类:BindingHub、SharedRingBuffer、Parcel、Binder、IBinder和BindInterface。BindingHub负责服务注册,SharedRingBuffer实现高效数据传输,Parcel处理序列化,而Binder和IBinder分别用于服务端和客户端交互。BindInterface提供简单的初始化接口,简化应用集成。测试案例展示了客户端和服务端的交互,验证了RPC功能的有效性。
333 5
|
5月前
|
人工智能 决策智能
【AI Agent系列】【阿里AgentScope框架】3. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 顺序结构与条件分支
【AI Agent系列】【阿里AgentScope框架】3. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 顺序结构与条件分支
141 2
|
5月前
|
人工智能 决策智能
【AI Agent系列】【阿里AgentScope框架】4. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 循环结构
【AI Agent系列】【阿里AgentScope框架】4. 深入源码:Pipeline模块如何组织多智能体间的数据流?- 循环结构
162 0
|
SQL 资源调度 NoSQL
DAG任务调度系统 Taier 演进之道,探究DataSourceX 模块
在Taier1.3新版本中,我们融合了「DataSourceX 模块」。这是十分重要的一个变化,移除Taier外部插件依赖,新增数据源插件相关特性,支持后续Taier对接更多的RDBMS类型的SQL任务。本篇文章,就带大家详细了解一下DataSourceX 的作用及设计。感兴趣的朋友欢迎点击正文阅读~
317 0
DAG任务调度系统 Taier 演进之道,探究DataSourceX 模块
|
JSON 网络协议 Dubbo
lagou 爪哇 3-1 分布式理论、架构设计(自定义RPC)笔记
分布式系统概念 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。俗的理解,所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分布式系统,同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,这些服务器可能放在不同的机柜中,也可能在不同的机房中,甚至分布在不同的城市。 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技 术,例如:RMI、Hessian、SOAP、ESB和JMS等,它们背后到底是基于什么原理实现的呢
127 0
lagou 爪哇 3-1 分布式理论、架构设计(自定义RPC)笔记
|
机器学习/深度学习 分布式计算 算法
深度解析开源推荐算法框架EasyRec的核心概念和优势
如何通过机器学习PAI实现快速构建推荐模型
|
Java Maven 项目管理
带你读《ODL技术内幕:架构设计与实现原理》之二:ODL项目管理设计详解
ODL不仅仅是一个SDN控制器平台,它还是一个优秀的模型驱动架构实现,以及一个典型的分布式系统设计范例。通过ODL,我们能学习的不仅仅是SDN,也能学到其通用的编程技术及软件架构设计,其分布式系统设计实现也非常值得我们借鉴。
16604 0
|
Java 数据格式 XML
带你读《ODL技术内幕:架构设计与实现原理》之三:ODL基本对象的设计与实现
ODL不仅仅是一个SDN控制器平台,它还是一个优秀的模型驱动架构实现,以及一个典型的分布式系统设计范例。通过ODL,我们能学习的不仅仅是SDN,也能学到其通用的编程技术及软件架构设计,其分布式系统设计实现也非常值得我们借鉴。
14011 0
|
大数据
DKhadoop大数据平台基础框架方案概述
大数据作为当下最为热门的事件之一,其实已经不算是很新鲜的事情了。如果是三五年前在讨论大数据,那可能会给人一种很新鲜的感觉。大数据作为当下最为重要的一项战略资源,已经是越来越得到国家和企业的高度重视,我们从大数据被上升到国家战略层面就可窥见一二!
1174 0
下一篇
无影云桌面