为什么要建设中间件?
不能完全去掉金蝶ERP
- 公司早期没有上计划、采购、生产、仓库等系统,都在ERP上面进行,因此基础资料、计划、采购、生产、销售、仓库、财务等数据都在ERP上,数据比较完整且准确
- 虽然上线VPS、MES、WMS、SRM、QMS系统后,计划、生产、采购、仓库可以使用这些系统代替,但是仍然需要依赖金蝶ERP的MRP运算以及财务模块
- 将ERP作为结果数据的汇集中心,将各个系统的产生结果数据回写到ERP,将ERP作为公司各个业务模块数据分析报表的数据来源。
需要搭建供应链以及销售端相关系统与ERP数据同步的桥梁
为什么不直接连接ERP数据库读取和写入数据
ERP没有本地化,只能通过接口的方式读写数据
初期ERP托管在金蝶的云服务,考虑成本预算问题,并没有买断部署到本地,因此没有数据库的操作权限,只能通过金蝶ERP的webapi接口进行同步。
直接写入数据到ERP数据库需要对ERP内部逻辑完全熟悉
直接写入数据到erp数据这种方式会对ERP系统形成入侵,开发工作量巨大,同时一不小心就会影响ERP运行,是不合理的方式。
实现系统间数据同步统一管控
- 避免每个系统重复开发同步功能,节省开发成本
- 方便对数据同步进行统一管理,例如可视化、异常处理、限流等等
怎么建设中间件?
架构
基于上述的背景,中间件的架构如上图,它的作用主要是通过api的方式定时从ERP拉取数据到中间件数据库,其它系统从中间件数据库读取数据,回写数据时,其它系统通过中间件的接口投递消息到回写队列,回写队列再通过ERP的api同步数据到ERP
遇到的问题与解决方案
ERP数据删除操作是物理删除
因为是物理删除,涉及的单据多,没有删除通知功能,其它系统无法知道ERP删除了单据,加上没有数据库权限,不能添加触发器,所以一开始找了金蝶ERP的工程师开发了插件,把删除的数据标记起来