Code Monkey home page Code Monkey logo

dddplus-archetype-demo's Introduction

dddplus-archetype-demo

Using dddplus-archetype build a WMS in 5 minutes. 利用 dddplus-archetype 5分钟搭建一个仓储中台WMS!

Requirement DDDplus version

演示简介

仓储系统,WMS(warehouse managment system),在整个供应链中起着至关重要的作用,它主要由四大部分组成:

  • 入库管理
  • 在库管理
  • 出库管理
  • 基础数据

本演示目标:

  • 快速搭建一个WMS的入库(inbound,简称ib)中台骨架
  • 完成一个不算简单的use case:创建上架任务

第一分钟:利用dddplus-archtype创建项目

mvn archetype:generate                              \
    -DarchetypeGroupId=io.github.dddplus            \
    -DarchetypeArtifactId=dddplus-archetype         \
    -DarchetypeVersion=1.0.2-SNAPSHOT               \
    -DgroupId=io.wms -DartifactId=wms-ib            \
    -Dpackage=io.wms.ib -Dversion=1.0.0-SNAPSHOT    \
    -B

github上查看该步骤提交的代码.

该过程,不需要开发代码,完全自动生成。

第二分钟:实现创建上架任务用例的骨架

业务介绍

创建上架任务,是指采购的货品已送达仓库,完成了扫码、验收,现在要存放到库房的货架上。

具体地,仓库工人会对货品进行验收,利用手持设备扫描每个商品条码,都完成后点击验收完毕按钮,服务器会调用创建上架任务API。

本演示就是要完成该API,通过Apache Dubbo形式提供。

上架,这里使用英文shelving

开发内容

  • wms-ib-api 模块,定义对外暴露的API
  • wms-ib-facade 模块,实现该API
  • wms-ib-application 模块,编排领域服务,在 use case 层实现该API
  • wms-ib-domain 模块,实现核心业务逻辑
    • 定义领域模型、领域服务
    • wms-ib-spec 模块,定义领域模型规范
    • 通过依赖倒置定义基础设施层需要实现的技术细节接口
  • wms-ib-infrastructure 模块,实现领域层要求的技术细节接口
    • 定义物理模型
  • wms-ib-test 模块,单元测试模块,主要针对domain层编写测试用例

github上查看该步骤提交的代码.

后三分钟:完成创建上架任务业务逻辑

业务分析和抽象

需要领域专家和研发同学共同参与完成。

创建上架任务从业务上被抽象成如下步骤来完成:

  • 根据上架任务编号进行防重校验
  • 通过RPC调用人工智能系统:推荐储位服务
    • 一个sku,可能推荐到多个储位
    • 因此需要根据储位数量重新拆分上架任务明细
      • 例如:上架要求是2个明细项,推荐储位计算后可能拆分成3个
  • 储位库存预占
  • 落库保存,等待后续的任务分配
  • 上架任务的冗余数据预加载,以提升真正上架时的工人效率

多场景下业务多态

真正的上架任务,其实非常复杂:

  • 业务场景
    • 采购入库
    • 退货入库
    • 内配入库
    • 搬仓入库
    • 加工入库
    • 调拨入库
    • etc
  • 上架操作方式
    • 整箱上架
    • 拆箱上架
    • etc
  • 每个仓库的设备、场地、规模、运营要求等不同,上架会有不同
  • 标准件商品和异形商品上架会不同
  • 不同KA可能在对上架任务有要求,例如是否允许混分、拆包
  • 有些行业可能对上架也有特殊要求,例如:医药,冷链等

开发内容

  • wms-ib-domain 模块
    • 定义领域步骤
    • 补充领域模型
  • wms-ib-infrastructure 模块,实现所有相关
    • 包括事务
    • 此处省略了 cache/DAO/MQ/RPC dubbo 等实现

github上查看该步骤提交的代码.

后续

  • 根据业务的多态性,针对更多的业务场景,定义扩展点
  • 根据业务复杂度和自治性,抽象出多个支撑域
  • 根据组织上的前中台架构,和业务特征,定义 Partner 和 Pattern,并绑定扩展点实现

dddplus-archetype-demo's People

Contributors

dependabot[bot] avatar funkygao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.