接口失败不可怕,可怕的是三个系统都说不是自己的问题
我们自研 WMS 的对外接口文档,从 1.0 版改到了 1.27 版,一年多改了 28 版,列了 52 个接口。
接口本身不难写。最频繁、最折腾人的,是同步失败:一单数据卡住,要两三个系统一起查,业务在旁边等,处理周期拉得很长。多系统对接,最大的问题就在这里。
这篇讲清三件事:WMS 要和谁对接、怎么传;失败了为什么最难查;最后兜底的为什么总是业务。
一、WMS 要对接谁,接口怎么传
一个自动化工厂的 WMS,至少要和这几类系统打交道:
- SAP,企业计划和财务系统:物料主数据同步、各类业务过账、冲销
- MES,管产线生产的系统:生产领料出库、签收回调、线边退料入库、库存查询
- QMS,质量系统:到货托盘在缓存区和质检区之间的移动
- SRM,供应商协同系统:给供应商的补货需求、收货和退回数量反馈
- LES 和设备系统:配送指令、AGV 状态回传、空托盘呼叫和回库
所有接口都走一个接口平台。传的方式分两种:
- 实时:大多数接口都是,一单一传,比如出库申请、配送指令。业务过账既有实时的,也有按天汇总的
- 定时批量:给 SRM 的补货需求,每天早上推一次。补货本来就是按天算的计划,不需要一单一传
物料主数据两种都用:有变化就实时推,每晚再定时补推一次当天的增量,防止漏掉。
二、WMS 接口最常见的问题:同步失败,而且要几家一起查
同步失败是频率最高的问题。它难,不在于失败本身,在于一条数据往往要经过好几个系统。
拿 AGV 配送指令来说:WMS 发出指令,经 LES 转给设备系统;AGV 在途、送达的状态,再经 LES 转回 WMS。中间任何一环卡住,WMS 这边看到的只是「状态没回来」。到底卡在哪,要 WMS、LES、设备三方一起翻日志。每一方先查自己,都说自己这边正常。
接口本身也一直在变。文档改了 28 版,里面有好几版是改字段的。一方改了,另一方没跟上,失败就来了。
除了同步失败,还有三个常见的:
- 主数据不同步:上游建了一个新物料,WMS 里还没有,单据就进不来
- 上下游没同步上线:一头切到了新系统,另一头还在旧的,接口两头对不上
- 上游冲销:SAP 那边把一笔过账冲销了,WMS 这边要人工冲回来
三、接口失败,兜底的为什么总是业务
我们有接口监控日志,失败了也会自动重推。可重推只能救「网络抖了一下」这一类。数据本身错了,比如主数据缺、状态对不上,推多少次都是失败。
所以最后,往往是业务先发现账对不上,再回头找 IT,IT 再去拉几个系统一起查。
要查得快,我们靠三件事:
- 一个单号查到底:每张单据带一个外部单号,同一个单号不允许重复推。几个系统都认这个号,查的时候拿一个号就能串起来。单据要改或要取消,也不另发一张,带同一个单号,再标明这次是覆盖还是取消
- 每个接口写清失败了谁先查:接口清单里加一列负责人,别让三方互相等
- 重推失败的单子,每天出一张清单:主动去找,不等业务来报
接口失败的单子,你们是每天主动出清单,还是等业务来报?
读到和自己项目像的地方?
相关笔记
写完就发,不发广告:订阅 RSS