3. WMS系统基础架构概览
在开发召回管理接口之前,理解WMS(仓储管理系统)的整体架构至关重要。WMS作为企业物流与供应链的核心执行系统,其架构设计直接影响接口的调用方式、数据流向与异常处理策略。本节将从核心业务模块、API网关与微服务架构两个维度进行剖析。
3.1 WMS核心模块
一个成熟的WMS通常围绕“进、存、出、盘”四大核心流程构建,每个模块都承担着特定的业务职责,并与召回管理接口产生直接或间接的交互。
| 核心模块 | 主要职责 | 与召回接口的关联 |
|---|---|---|
| 入库模块 | 收货、质检、上架、批次/序列号登记 | 提供召回批次的基础库存数据来源 |
| 出库模块 | 波次创建、拣货、复核、打包、发货 | 召回锁定后,需拦截该批次的正常出库 |
| 库存模块 | 库存台账、批次库存、库存状态、库存移动 | 召回锁定与解锁的核心操作对象 |
| 盘点模块 | 循环盘点、年度盘点、差异调整 | 确认召回批次的实际库存数量与状态 |
架构提示:在微服务架构下,上述四个模块通常被拆分为独立的微服务(如
inbound-service、outbound-service、inventory-service、cycle-count-service),每个服务拥有独立的数据库,通过API网关对外暴露统一接口。
3.2 WMS微服务架构与API网关
现代WMS普遍采用微服务架构以应对高并发、高可用的业务需求。API网关作为系统的统一入口,承担着路由、认证、限流、协议转换等关键职责。
3.3 召回批次库存锁定与出库拦截流程
在WMS微服务架构下,召回管理接口的核心操作涉及库存服务与出库服务的协同。以下流程图展示了从召回指令下发到库存锁定、出库拦截的完整链路。
关键设计点:
- 库存锁定:在
inventory-service中,将召回批次的库存状态从“可用”改为“召回锁定”,并记录锁定时间与操作人。 - 出库拦截:在
outbound-service中,通过监听库存状态变更事件或主动查询,将包含锁定批次的出库单置为“拦截”状态,阻止拣货与发货。 - 幂等性:召回锁定接口必须支持幂等,避免重复锁定导致库存数量异常。
3.4 接口调用示例
以下是一个典型的召回批次库存锁定接口的请求与响应示例,采用RESTful风格,通过API网关转发至库存服务。
POST /api/v1/recall/lock
Content-Type: application/json
{
"recall_id": "REC-20250321-001",
"batch_no": "BATCH-20250301",
"sku": "SKU-8801",
"lock_quantity": 500,
"warehouse_code": "WH-01",
"reason": "质量缺陷召回",
"operator": "system"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"code": 0,
"message": "success",
"data": {
"lock_id": "LOCK-20250321-001",
"batch_no": "BATCH-20250301",
"locked_quantity": 500,
"available_quantity": 0,
"status": "locked",
"locked_at": "2025-03-21T10:30:00+08:00"
}
}
异常场景处理:
- 若锁定数量大于当前可用库存,接口应返回
400错误码,并提示“库存不足”。 - 若批次已处于锁定状态,应返回
409冲突码,并返回当前锁定明细。 - API网关应配置超时与熔断策略,防止库存服务异常导致连锁故障。