客户需求
A公司是客户,下采购单;B公司是供应商之一,收到邮件通知后,希望从A公司ERP系统获取相关订单数据并导入自己公司的ERP系统。
分析和方案
典型的现代供应链系统工作方式,告别传统手工录单。
通常,两家公司的系统是不一样的,只能通过Internet通信,像下图这样。
如果是在局域网,可以直接在B公司系统中注册A公司系统的数据库为外部源。
* 但是,在广域网,应该禁止直接暴露数据库端口1433,这非常危险。*
本案采用ESAP构建当下流行的API微服务,A公司仅暴露需要的数据,B通过api获取采购订单数据。
实现场景
模拟A公司系统
假设A使用ES系统,下若干采购单给不同供应商。
订单数据使用sql查询结果如下:
构建订单查询API
配置好ESAP,在ESAP根目录/sql/api2/
下配置getpurchaseorder
sql模板:
{ {define "getpurchaseorder"} }
select
订.交期,
订.号,
订.供方,
单.品,
单.品名,
单.数,
单.单位
from 订
inner join 单 on 订.excelserverrcid=单.excelserverrcid
where 订.类='采购'
and 订.供方=:name
{ {end} }
api访问效果如下,name代入特斯拉
获得特斯拉相关采购订单:
模拟B公司系统
假设B公司使用NX,在外部接口中注册这个接口。
根据esap查询结果,getpurchaseorder
关键表结构设置如下:
建立待确认采购单
模板,设置表间公式从API提数,表字段一一对应。
最终效果
特斯拉供应商:
华为供应商:
小结
主要应用esap构建API微服务。
A公司可以是任意基于sql的系统。
B公司系统需要支持API提数。
本文涉及的数据库备份可在ESAP水镜禅院中下载。
2019-04-03