1. 课程导论
1.1 ERP与WMS:制造与仓储的核心系统
在离散制造与流程制造企业中,ERP(企业资源计划)与WMS(仓库管理系统)是支撑生产与物流的两大核心平台。两者在业务边界、数据粒度与实时性要求上存在显著差异,理解这些差异是设计同步方案的前提。
| 对比维度 | ERP(以SAP、用友U9为例) | WMS(以WCS、FLUX为例) |
|---|---|---|
| 核心职能 | 计划层:工单排产、成本核算、财务记账 | 执行层:库位管理、波次拣货、RF扫码 |
| 数据粒度 | 工单级、订单级(批量汇总) | 托盘级、库位级、批次级(明细操作) |
| 实时性 | 分钟级~小时级(批处理为主) | 秒级~亚秒级(实时交互) |
| 库存视角 | 账面库存、可用库存(财务口径) | 物理库存、冻结库存、在途库存(实物口径) |
| 典型接口方式 | RFC、Web Service、中间表 | REST API、Socket、MQ消息 |
关键认知:ERP负责“什么时候生产、需要多少物料”,WMS负责“物料放在哪里、如何出库”。两者之间的物料预留同步是生产执行与仓储执行之间的“握手信号”。
1.2 生产工单与物料预留的业务关系
生产工单(Production Order)是ERP下达给车间的生产指令,而物料预留(Material Reservation)是工单对仓库发出的物料占用请求。两者在业务上形成“一对多”的关联:一个工单通常包含多个物料行项,每个行项对应一条预留记录。
典型的业务时序如下:
- 工单下达:ERP创建生产工单,状态为“已下达”。
- 预留生成:ERP根据BOM(物料清单)自动生成物料预留,标记物料、数量、需求日期。
- 预留同步:预留数据通过事件总线推送至WMS,WMS在库位中锁定对应库存。
- 投料反馈:WMS完成拣货出库后,将实际消耗量回写ERP,预留状态更新为“已发货”。
- 工单关闭:所有预留行项消耗完毕,ERP关闭工单。
常见痛点:传统点对点接口(ERP直连WMS)在预留变更、工单取消、物料替代等场景下容易产生数据不一致,导致“账实不符”或“缺料停线”。
1.3 事件总线架构的价值
事件总线(Event Bus)是一种基于消息中间件的异步通信模式,核心思想是:生产者发布事件,消费者订阅事件,双方通过消息队列解耦。在ERP与WMS的集成场景中,事件总线带来的价值体现在以下四个维度:
- 解耦:ERP无需关心WMS的内部处理逻辑,只需将“预留已创建”事件发布到总线;WMS也无需直接调用ERP接口,只需订阅对应事件。
- 可靠:MQ提供持久化、重试、死信队列等机制,确保预留消息不丢失、不重复。
- 可扩展:新增系统(如MES、SRM)只需订阅相关事件,无需修改现有接口。
- 实时:事件驱动模式将同步延迟从分钟级降至秒级,满足生产现场对物料状态的实时感知需求。
架构陷阱:事件总线不是银弹。如果事件粒度设计过粗(如整个工单作为一个事件),会导致WMS端处理逻辑复杂;如果过细(每个物料行项单独事件),则可能引发消息风暴。合理的粒度是“一个预留行项一个事件”。