演示如何使用DDDplus实现一套订单履约中台OMS
。
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
- 中台架构特色的DDD分层架构
- 也可以通过dddplus-archetype,快速从零开始搭建中台的分层架构,并融入最佳实践
- domain层是如何通过依赖倒置模式与infrastructure层交互的
- Repository同理
- 为什么依赖倒置统一存放在facade包
- 扩展点:订单的防并发
- 前台对中台的步骤编排
- 扩展属性通过扩展点的实现
- 中台统一定义,兼顾前台个性化的错误码机制
- 中台特色的领域模型
- spec jar里定义受限的领域模型输出给业务前台:通过接口,而不是类
- 一种中台控制力更强的shared kernel机制
- domain层是如何实现的领域模型接口的:订单主档
- Creator的作用
- 领域步骤,业务模式等,中台如何统一定义,并输出给前台使用?
- 中台如何输出资源给业务前台使用
- 如果业务前台要使用中台的MQ怎么办?能否中台封装一下,不直接暴露给前台
- 库存支撑域给订单核心域的能力输出
- 按需打包
- 这样才能做到一套代码,支撑国内、国际业务
- 灵活的部署形式
订单履约中台,通过spec jar为业务前台赋能,输出中台标准,并提供扩展机制。
订单履约中台本身的个性化业务,即个性化的业务模式包。
KA,关键客户的个性化业务通过扩展点的实现完成。
ISV,独立软件开发商的个性化业务通过扩展点的实现完成。
Fresh,生鲜业务前台的个性化业务通过扩展点的实现完成。
这个业务BP,被中台要求不能使用Spring框架开发,不能在业务扩展包里使用AOP等Spring机制,只能严格实现中台定义的扩展点。
为了演示,ISV和KA这2个业务前台BP在开发业务扩展包时,可以使用Spring框架。
- 库存支撑域
- 更多的支撑域...
使用dddplus-archetype,可以快速搭建中台的工程骨架。
mvn archetype:generate -DarchetypeGroupId=io.github.dddplus -DarchetypeArtifactId=dddplus-archetype -DarchetypeVersion=1.0.1 -DgroupId=com.foo -DartifactId=demo -Dpackage=com.foo -Dversion=1.0.0-SNAPSHOT -DinteractiveMode=false