本田Honda EDI项目案例:非EDI标准的数据格式转换与传输

近期知行帮助东风本田Honda的供应商E公司成功实施EDI项目,与以往采用X12、EDIFACT等EDI标准的项目不同,Honda向其供应商提供API接口,以JSON的格式传输库存信息以及生产计划。

EDI需求概览

Honda提供公开的WSRM系统供应商API接口,主要包含三种接口:

1.库存信息

供应商库存接口,每日库存结余不再变化时发送,建议发送时间(如20:00-23:59)。

方向:供应商发送给Honda

接口文档所含信息包括:测试环境地址、请求信息(字段信息以及描述、字段类型、请求格式)以及响应信息(响应结果以及响应格式)。这里需要注意,result 返回结果如果是1,则表示成功;如果是0,则表示失败,会返回错误信息。示例如下:

{"result": "1","message": ""
}
2.生产计划

供应商生产计划接口,当日及未来生产计划变化时发送,默认覆盖上一次,发送时间(00:00-23:59)。

方向:供应商发送给Honda。

接口文档所含信息包括:测试环境地址、请求信息(字段信息以及描述、字段类型、请求格式)以及响应信息(响应结果以及响应格式)。这里需要注意,result 返回结果如果是1,则表示成功;如果是0,则表示失败,会返回错误信息。示例如下:

{"result": "1","message": ""
}
3.生产计划数据查询

供应商库存生产计划接口数据查询,查询已发送的数据是否被接收。方向:Honda发送给供应商,这个功能不是必须要做的,供应商可以根据实际情况选择是否收这个接口数据。

扩展阅读:Honda API 介绍文档

实施方案

针对以上需求,知行的项目经理与E公司的业务以及IT人员沟通后,最终决定采用数据库+API方案。

E公司根据Honda提供的接口字段文档,从本地的业务系统中提出对应字段并存放至一张专用于存放Honda库存信息/生产计划的数据库表中。知行之桥EDI系统将会从指定的数据库表中获取数据进行下一步的格式转换,并自动调用Honda的提供的两个接口,将数据推送给Honda。

基于知行之桥EDI系统对接 Honda EDI

实现与Honda 的EDI对接需要在知行之桥EDI系统中搭建如下所示的工作流:

Honda_EDI_case1.png

为了满足Honda需求,需要使用到11个端口(即上图中的方框,一个方框代表一个端口,各自封装了包括连接数据库、文件格式转换以及接口调用等不同的功能),其中2个Branch端口为免费端口,其余9个端口为付费端口。

本项目主要传输两种类型的数据:库存信息以及生产计划,在EDI系统中需要将这两种单据分开处理,并调用不同的接口将数据提供给Honda。

端口及功能

SQL Server端口:负责从指定数据库表中获取数据到EDI系统,选择的操作为 Select。
Batch Merge端口:负责合并数据。从E公司业务系统抓取的数据中,可能会涉及到多个零件,这时一张表中可能会包含多条数据,需要通过Batch Merge端口进行合并,呈现在接口中,便是1条信息,其中包含了多个零件的数据。
XML Map端口:负责实现源文件和目标文件的格式转换。这里主要实现从E公司抓取的数据(通过SQL Server端口已转换为XML格式)到Honda需要的数据(先转换为XML格式)之间的映射处理。
JSON端口:实现XML与JSON之间的格式转换,无需代码。
REST端口:作为REST API中的客户端,对服务器发起操作请求。
Script端口:检查数据是否推送成功,这个端口可以写一些自定义的脚本语言。

Honda_EDI_case2.png

在Script端口的设置选项卡下,将 操作 设置为 Legacy。在 脚本 处添加如下代码:

<rsb:set attr="jsonIn.uri" value="[Filepath]"/>
<rsb:set attr="jsonIn.jsonpath" value="/json"/><rsb:call op="jsonDOMSearch" in="jsonIn"><rsb:set attr="message.code" value="[jsonpath('result')]"/><rsb:set attr="message.desc" value="[jsonpath('message')]"/></rsb:call>
<rsb:notequals attr="message.code" value="1"><rsb:throw code="noMatached" desc="[message.code]:[message.desc]"/>
</rsb:notequals>

根据用户需要,还可以在Script端口后再添加一个EmailSend端口,用于将推送成功的信息通过邮件发送给指定收件人。

测试流程
API接口连接测试

根据接口文档构造json格式的接口数据,推送至接口,根据返回的参数判断是否成功,result是1表示成功,是0表示失败,失败原因可参考返回的错误信息
常见错误:加密参数不对、时间戳超时(1分钟内有效)

数据库连接测试

根据客户提供的数据库信息配置数据库连接,获取数据,此项目使用select查询功能

业务测试

让客户在数据库表中写入测试数据,通过API接口推送

结果验证:

1.result是1表示成功,是0表示失败
2.通过查询接口查询已推送的数据

项目回顾
1.Honda接口调用的加密要求

Honda要求在sign也就是签名中需要使用用户名+时间戳+经MD5多次加密的密码。

知行之桥EDI系统支持MD5加密,需要在XMLMap端口中,编写如下脚本来实现:

<arc:set attr="supply.timestamp" value="[_|now(yyyyMMddHHmmss)]" />
<arc:set attr="supply.string" value="user_name=namecode&timestamp=[supply.timestamp]&password=0123456789" />
<arc:set attr="supply.sign" value="[supply.string | md5hash(false)|tolower()]" />

需要注意,这里的时间戳有时间要求,每个单据都有自己的时间戳,即XMLMap端口接收数据的时间,从生成时间戳到推送数据,需要限时1分钟。在测试流程中,由于借助Postman工具进行测试,并没有直接调用接口,会存在一定的时间延迟。项目上线后,切换至生产接口,每条数据推送的时间基本可以控制在30S内,每次推送30-40个物料。

2.测试阶段的辅助验证

上文我们有提到,库存信息和生产计划的两个接口都能够通过返回结果来判断是否推送成功,如果是1,则表示成功;如果是0,则表示失败,会返回错误信息。

但Honda提供了三个API接口,还有一个接口主要用于供应商库存生产计划接口数据查询,查询已发送的数据是否被接收。在测试阶段,我们可以通过这个接口,可以进行双重验证。

以上便是Honda EDI项目的全部内容了,如果您希望了解更多Honda的对接信息,或者有关EDI对接的相关信息,欢迎交流。

阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/383787.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库中的事务

一、理解事务 1、本质 事务由一组DML语句组成&#xff0c;这一组语句要么全部成功&#xff0c;要么全部失败。在逻辑上&#xff0c;事务就是一组sql语句&#xff0c;但在实际中&#xff0c;公共的数据库一定会高并发地接受各种事务的请求&#xff0c;所以一个事务要有4个属性…

【RT摩拳擦掌】RT600 4路音频同步输入1路TDM输出方案

【RT摩拳擦掌】RT600 4路音频同步输入1路TDM输出方案 一&#xff0c; 文章简介二&#xff0c;硬件平台构建2.1 音频源板2.2 音频收发板2.3 双板硬件连接 三&#xff0c;软件方案与软件实现3.1 方案实现3.2 软件代码实现3.2.1 4路I2S接收3.2.2 I2S DMA pingpong配置3.2.3 音频数…

经典文献阅读之--World Models for Autonomous Driving(自动驾驶的世界模型:综述)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…

ctfshow-web入门-php特性(web132-web136)

目录 1、web132 2、web133 3、web134 4、web135 5、web136 1、web132 存在 robots.txt 访问 /admin 需要传三个参数&#xff0c;并且需要满足&#xff1a; if($code mt_rand(1,0x36D) && $password $flag || $username "admin"){if($code admin){ech…

设计模式-Git-其他

目录 设计模式&#xff1f; 创建型模式 单例模式&#xff1f; 啥情况需要单例模式 实现单例模式的关键点&#xff1f; 常见的单例模式实现&#xff1f; 01、饿汉式如何实现单例&#xff1f; 02、懒汉式如何实现单例&#xff1f; 03、双重检查锁定如何实现单例&#xff…

dsp c6657 SYS/BIOS学习笔记

1 SYS/BIOS简介 SYS/BIOS是一种用于TI的DSP平台的嵌入式操作系统&#xff08;RTOS&#xff09;。 2 任务 2.1 任务调度 SYS/BIOS任务线程有0-31个优先级&#xff08;默认0-15&#xff0c;优先级0被空闲线程使用&#xff0c;任务最低优先级为1&#xff0c;最高优先级为15&am…

Superset二次开发之筛选器native Filters 水平布局

引言 Apache Superset作为一个功能强大的开源数据探索和可视化平台&#xff0c;提供了丰富的配置选项来定制化用户体验。其中&#xff0c;HORIZONTAL_FILTER_BAR 是一个重要的配置项&#xff0c;专注于优化和改进Superset中的筛选器条布局与交互。 什么是HORIZONTAL_FILTER_B…

Linux嵌入书学习—数据结构——栈(seqstak)

一、栈&#xff1b; 定义&#xff1a; 是限定仅在表尾&#xff08;栈顶&#xff09;进行插入和删除操作的线性表 栈又称为 后进先出&#xff08;Last In First Out&#xff09; 的线性表&#xff0c;简称 LIFO 结构 栈顶&#xff08;Top&#xff09; 栈顶是栈中允许进行添加&…

开源邮箱套件介绍系列1:SOGo

项目网站&#xff1a;SOGo | Free Open Source Webmail 提示&#xff1a;如下内容大部分来自官方网站&#xff0c;通过AI智能翻译而来。 1. SOGo功能概述 SOGo提供了多种访问日历和消息数据的方式。您的用户可以使用网页浏览器、Microsoft Outlook、Mozilla Thunderbird、Ap…

jackson序列化(jackson codec)

Jackson 是一个用于 Java 平台的开源 JSON 库&#xff0c;它提供了灵活且高效的方式来处理 JSON 数据的序列化(Java对象 → JSON字符串)和反序列化(JSON 字符串→ Java对象)。 以下是 Jackson 的一些主要特点和功能&#xff1a; 高性能&#xff1a;Jackson 通过使用基于流的处理…

32单片机开发bootloader程序

一&#xff0c;单片机为什么要使用bootloader 1、使用bootloader的好处 1) 程序隔离&#xff1a;可以同时存在多个程序&#xff0c;只要flash空间够大&#xff0c;或者通过外挂flash&#xff0c;可以实现多个程序共存&#xff0c;在多个程序之间切换使用。 2&#xff09;方便程…

【树状数组】2659. 将数组清空

本文涉及知识点 树状数组 LeetCode2659. 将数组清空 给你一个包含若干 互不相同 整数的数组 nums &#xff0c;你需要执行以下操作 直到数组为空 &#xff1a; 如果数组中第一个元素是当前数组中的 最小值 &#xff0c;则删除它。 否则&#xff0c;将第一个元素移动到数组的…

监测Nginx访问日志状态码,并做相应动作

文章目录 引言I 监测 Nginx 访问日志情况,并做相应动作1.1 前提准备1.2 访问日志 502 情况,重启 bttomcat9服务1.3 其他案例:访问日志 502 情况,重启 php-fpm 服务II 将Shell 脚本check499.sh包装成systemd服务2.1 创建systemd服务2.2 配置service2.3 开机启动2.4 其他常用…

内网对抗-隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线

知识点&#xff1a; 1、隧道技术篇-传输层-工具项目-Frp&Nps&Chisel 2、隧道技术篇-传输层-端口转发&Socks建立&C2上线Frp Frp是专注于内网穿透的高性能的反向代理应用&#xff0c;支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过…

垃圾桶为什么要装缓冲器?

在我们日常生活中&#xff0c;垃圾桶是一个再常见不过的物品。然而&#xff0c;您是否留意过垃圾桶盖上的缓冲器&#xff1f;这个看似不起眼的小装置&#xff0c;其实有着不可忽视的重要作用。首先&#xff0c;垃圾桶装缓冲器能够有效地降低噪音。想象一下&#xff0c;在一个安…

【文心智能体】00后疯感工牌生成器,低代码工作流的简单应用以及图片快速响应解决方案,干活满满,不容错过哦

背景 文心智能体平台&#xff0c;开启新一轮活动&#xff0c;超级创造营持续百日活动。 在AI 浪潮席卷的今天&#xff0c;如雨后春笋般丛生的 AI 应用&#xff0c;昭告着时代风口显然已随之到来。 如何能把握住时代红利&#xff0c;占据风口&#xff0c;甚至打造新风向&#x…

基于微信小程序+SpringBoot+Vue的自习室选座与门禁系统(带1w+文档)

基于微信小程序SpringBootVue的自习室选座与门禁系统(带1w文档) 基于微信小程序SpringBootVue的自习室选座与门禁系统(带1w文档) 本课题研究的研学自习室选座与门禁系统让用户在小程序端查看座位&#xff0c;预定座位&#xff0c;支付座位价格&#xff0c;该系统让用户预定座位…

人工智能:大语言模型提示注入攻击安全风险分析报告下载

大语言模型提示注入攻击安全风险分析报告下载 今天分享的是人工智能AI研究报告&#xff1a;《大语言模型提示注入攻击安全风险分析报告》。&#xff08;报告出品方&#xff1a;大数据协同安全技术国家工程研究中心安全大脑国家新一代人工智能开放创新平台&#xff09; 研究报告…

57 数据链路层

用于两个设备&#xff08;同一种数据链路节点&#xff09;之间传递 目录 对比理解“数据链路层” 和 “网络层”以太网 2.1 认识以太网 2.2 以太网帧格式MAC地址 3.1 认识MAC地址 3.2 对比理解MAC地址和IP地址局域网通信MTU 5.1 认识MTU 5.2 MTU对ip协议的影响 5.3 MTU对UDP的…

sql_exporter通过sql收集业务数据并通过prometheus+grafana展示

下载并解压安装sql_exporter wget https://github.com/free/sql_exporter/releases/download/0.5/sql_exporter-0.5.linux-amd64.tar.gz #解压 tar xvf sql_exporter-0.5.linux-amd64.tar.gz -C /usr/local/修改主配置文件 cd /usr/local/ mv sql_exporter-0.5.linux-amd64 s…