dddplus-demo icon indicating copy to clipboard operation
dddplus-demo copied to clipboard

♨️ Demonstrate how to use DDDplus to build a complex OMS.演示如何使用DDDplus实现一套订单履约中台OMS

Demo of DDDplus

演示如何使用DDDplus实现一套订单履约中台OMS

Requirement DDDplus version

OMS业务入门

目录

  • Terms explained
  • 如何运行该演示
  • 演示代码入口
  • 项目基本介绍
  • 代码快速入门
  • 代码结构
    • 依赖关系
    • 一套订单履约中台代码库
    • 中台的个性化业务包
    • 三个业务前台代码库
      • KA业务前台
      • ISV业务前台
      • 生鲜业务前台
    • 支撑域
  • 如何快速搭建中台工程骨架

Terms explained

  • bp
    • Business Partner
    • 业务前台
  • cp
    • Central Platform
    • 中台
  • isv
    • Independent Software Vendors
  • ka
    • Key Account
    • 关键客户
  • oc
    • Order Center
    • 订单中心

如何运行该演示

git clone https://github.com/dddplus/dddplus-demo.git
cd dddplus-demo
mvn package
java -jar order-center-cp/cp-oc-main/target/dddplus-demo.jar
#java -jar order-center-cp/cp-oc-main/target/dddplus-demo.jar 9090 plugin

# in another terminal
curl -XPOST http://localhost:9090/order             # submit an order
curl -XPOST http://localhost:9090/reload?plugin=isv # plugin hot reloading

演示代码入口

  • 启动入口 OrderServer.java
  • Web Controller OrderController.java

代码快速入门

  • 中台架构特色的DDD分层架构
    • 也可以通过dddplus-archetype,快速从零开始搭建中台的分层架构,并融入最佳实践
    • domain层是如何通过依赖倒置模式与infrastructure层交互的
    • Repository同理
    • 为什么依赖倒置统一存放在facade包
  • 如何理解 Step
  • 扩展点:订单的防并发
    • 如何识别该业务属于KA业务前台
    • 一个扩展点声明
    • 该扩展点,KA业务前台的实现
    • 该扩展点,ISV业务前台的实现
    • 该扩展点,中台的一个业务场景实现
    • 扩展点被封装到DomainAbility
    • 扩展点被调用
  • 前台对中台的步骤编排
    • 动态的步骤编排
  • 扩展属性通过扩展点的实现
  • 业务约束规则的显式化
    • 如何使用
  • 中台统一定义,兼顾前台个性化的错误码机制
  • 中台特色的领域模型
    • spec jar里定义受限的领域模型输出给业务前台:通过接口,而不是类
    • 一种中台控制力更强的shared kernel机制
    • domain层是如何实现的领域模型接口的:订单主档
    • Creator的作用
  • 领域步骤,业务模式等,中台如何统一定义,并输出给前台使用?
    • 例如,业务前台是可以编排中台的步骤的,它必须要知道中台有哪些步骤
    • 领域步骤的统一输出
    • 业务模式的统一输出
  • 中台如何输出资源给业务前台使用
    • 如果业务前台要使用中台的MQ怎么办?能否中台封装一下,不直接暴露给前台
  • 库存支撑域给订单核心域的能力输出
    • 能力的实现
    • 订单核心域对库存支撑域的调用
  • 按需打包
    • 这样才能做到一套代码,支撑国内、国际业务
    • 灵活的部署形式

代码结构

依赖关系

order-center-cp

订单履约中台,通过spec jar为业务前台赋能,输出中台标准,并提供扩展机制。

order-center-pattern

订单履约中台本身的个性化业务,即个性化的业务模式包。

订单履约中台的多个业务前台

order-center-bp-ka

KA,关键客户的个性化业务通过扩展点的实现完成。

order-center-bp-isv

ISV,独立软件开发商的个性化业务通过扩展点的实现完成。

order-center-bp-fresh

Fresh,生鲜业务前台的个性化业务通过扩展点的实现完成。

这个业务BP,被中台要求不能使用Spring框架开发,不能在业务扩展包里使用AOP等Spring机制,只能严格实现中台定义的扩展点。

为了演示,ISV和KA这2个业务前台BP在开发业务扩展包时,可以使用Spring框架。

支撑域

  • 库存支撑域
  • 更多的支撑域...

如何快速搭建中台工程骨架

使用 dddplus-archetype,可以快速搭建中台的工程骨架。