Demo of DDDplus
演示如何使用DDDplus实现一套订单履约中台OMS
。
目录
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
- 扩展点:订单的防并发
- 前台对中台的步骤编排
- 扩展属性通过扩展点的实现
- 业务约束规则的显式化
- 中台统一定义,兼顾前台个性化的错误码机制
- 中台特色的领域模型
- 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,可以快速搭建中台的工程骨架。