博泽Brose EDI项目案例
Brose 是一家德国的全球性汽车零部件供应商,主要为全球汽车制造商提供机电一体化系统和组件,涵盖车门、座椅调节系统、空调系统以及电动驱动装置等。Brose 以其高质量的创新产品闻名,在全球拥有多个研发和生产基地,是全球第五大家族企业,也是全球领先的汽车零部件供应商之一。
梳理需求文档
EDI项目开始前,Brose 将会向交易伙伴提供本次对接中需要的EDI规范文档,包括 DELFOR物料需求计划(版本号:D04A)、DESADV发货通知(版本号:D20B)。本案例中,Brose作为采购商,向其供应商汽车行业A公司采购。因此A公司需要接收Brose发来的DELFOR物料需求计划,向Brose发送DESADV发货通知。
EDI连接测试
Brose支持的传输方式包括:OFTP2以及SFTP,由于Brose更推荐交易伙伴使用OFTP2,因此本案例将以OFTP2为例,为大家介绍如何建立OFTP2连接通道。
Brose与供应商需要交换包含OFTP2配置信息的文档,包含SSID、SFID、服务器、IP地址、端口号等信息。通过知行之桥EDI系统搭建对接Brose的OFTP2连接通道,需要先在 个人设置 选项卡下,配置A公司自己的OFTP连接信息。
接下来在 工作流 选项卡下创建一个OFTP端口(功能模块),点击下图左上方的OFTP端口,在右侧弹窗的 设置 选项卡下配置Brose的OFTP连接信息。
在测试阶段,向Brose发文件时,可以在OFTP 端口的 输入 选项卡下,点击 更多,上传测试文件。
接收来自Brose的文件时,可以点击 输入 选项卡旁边的 输出 选项卡,查看EDI系统收到的文件。
实施方案
A公司的EDI系统与Brose的EDI系统之间可以通过OFTP2传输通道建立连接,那么A公司应该如何将业务数据提供给EDI系统呢?
如果A公司内部有ERP系统或者其他业务系统,则可以选择与EDI系统进行集成。知行之桥EDI系统支持的集成方案包括:[中间数据库方案][]、[REST API][]、WebService、SFTP或共享文件夹等,用户可以根据实际需求进行选择。以REST API方案为例,基于知行之桥EDI系统,通过REST API 来集成A公司的ERP系统,EDI和ERP通过对方提供的接口调用文档,使用REST API来调用对方的接口,以JSON或者XML格式来进行业务数据的传输。
主要过程包括:
1.EDI整理所需业务字段
2.EDI实施顾问、ERP顾问以及A公司的业务负责人进行业务字段和结构确认
3.EDI和ERP各自进行接口的开发,提供给对方各自的接口调用文档
4.集成测试,API集成测试一般是与EDI业务测试同步进行的,便于验证能否将Brose发来的DELFOR数据解析进A公司的ERP系统,以及A公司ERP系统中提供的发货通知数据在被EDI系统进行格式转换后生成的DESADV报文能否顺利被Brose处理。
扩展阅读:REST API集成方案
项目成果
根据以上需求,在知行之桥EDI系统中搭建如下所示的工作流:
知行之桥EDI系统将不同的功能封装至一个个成熟的功能端口中,实现低代码操作。通过蓝色连接线连接各个功能端口,清晰展示数据流向,方便用户快速定位问题。
EDI 业务测试
DELFOR 物料需求计划
A公司需要接收Brose发来的DELFOR物料需求计划,在知行之桥EDI系统中,通过搭建如下所示的工作流即可实现:
物料需求计划的处理流程
1.通过OFTP连接通道收到Brose发来的DELFOR报文
2.借助EDIFACT、XML Map以及JSON端口将DELFOR报文转换为Json格式
3.借助REST端口调用A公司提供的接口,将包含物料需求计划数据的Json文档推送至A公司的业务系统中。在REST端口的 设置 选项卡下,配置必要的信息:将 方法&URL 设置为 POST,URL和认证类型由A公司的IT部门提供,正文类型设置为 raw,Content Type为application/json。
4.A公司的业务系统将会根据数据的接收情况回复不同的response,结构如下所示:
5.通过在Notify端口补充自定义脚本实现钉钉通知
为了及时提醒A公司的相关人员,Brose发来的物料需求计划在进入业务系统时保存失败,可以在Script端口添加代码,设置钉钉通知。
代码如下:
<arc:set attr="json.uri" value="[FilePath]" />
<arc:set attr="json.jsonpath" value="/json" />
<arc:call op="jsonDOMSearch" in="json" ><arc:set attr="response.status" value="[jsonpath(RTYPE)]" />
</arc:call>
<arc:if exp="[response.status|equals('E')]"><arc:set attr="check.sslcert" value="*"/><arc:call op="httpGet" in="check"><arc:catch code="*"><arc:set attr="notify.url" value="https://oapi.dingtalk.com/robot/send?access_token=52f30b4d79a6dae6d34d6e0ceb627de91ec33033a59a8bb955ec6c0137730476"/><arc:setm item="notify">url = https://oapi.dingtalk.com/robot/send?access_token=52f30b4d79a6dae6d34d6e0ceb627de91ec33033a59a8bb955ec6c0137730476postdata = {"at": {"isAtAll":false},"text": {"content":"业务警报:知行之桥REST端口调用A公司ERP接口失败,请检查!"},"msgtype":"text"}contenttype = application/json</arc:setm><arc:call op="httpPost" in="notify" /></arc:catch></arc:call>
</arc:if>
扩展阅读:调用REST端口实现钉钉通知
配置成功之后,在钉钉中的通知效果如下:
DESADV 发货通知
A公司需要根据Brose发出的DELFOR物料需求计划回复DESADV发货通知,在知行之桥EDI系统中,通过搭建如下所示的工作流即可实现:
DESADV发货通知的处理流程
1.首先A公司的ERP系统通过调用EDI系统的接口,将Json格式(知行的EDI顾问将会提前设计好Json模板,A公司只需要据此模板填充对应的业务数据即可)的发货通知数据传入知行之桥EDI系统的 Webhook端口。需要在Webhook端口中配置请求格式为json,还需配置 用户 以及受信任的ip地址:
2.借助JSON端口、XML Map端口以及EDIFACT端口,将包含发货通知数据的Json文件转换为Brose要求的DESADV报文。 3.通过OFTP端口,将DESADV报文发送给Brose。
DESADV发货通知的测试注意事项
对于接收到的DESADV发货通知,Brose会通过邮件回复一个PDF格式的VDA 4987错误报告,详细列出了DESADV报文中的每一个字段信息,如果验证成功会在第一列用绿色高亮标记,如果验证失败则会在第一列用红色高亮标记。
1.DESADV报文的协会指定代码为固定值
UNH02的位置需要写入固定值:GAVF30,并且是EDI报文的必填值。示例:
UNH+1+DESADV:D:20B:UN:GAVF30'
2.测试过程中使用的测试数据需要尽可能贴近实际生产数据,以日期格式为例,Brose支持以下两种格式:
当DTM01值为102 时,日期格式为:YYYYMMDD,例如:20241202; 当DTM01值为203时,日期格式为:CCYYMMDDHHMM,例如:202412021539
示例:
DTM+137:202412021539:203'
3.当RFF01的值为ANK时,表示当前传输的数据为由9位数字组成的DUNS编号。示例如下:
RFF+ANK:310010022'
4.LOC字段传输卸货点信息,卸货点ID必须是由5位字符组成的,示例如下:
LOC+11+RAUKC::92'
5.LIN字段传输物料信息,物料编号必须由10位字符组成,示例如下:
LIN+++A62404-110:IN'
6.订单编号必须由10位字符组成,示例如下:
RFF+ON:5508856298'
DESADV发货通知的包装信息
不同版本号的DESADV报文规范中对于包装的描述和规定有很大区别,因此开始EDI项目实施前请务必与Brose确认DESADV报文的版本号。
基于Brose提供的版本号为D20B的EDI报文规范,需要考虑将相同规格的托盘进行合并,这里的相同规格是指:每托箱数相同,每箱数量相同,物料相同。
确认托盘结构:与Brose以及企业内部业务人员确认当前发货通知中有无空箱、盖子或者其他辅材。以下是一个包装示例:
如果您希望了解有关EDI对接的相关信息,欢迎交流。
相关文章:

博泽Brose EDI项目案例
Brose 是一家德国的全球性汽车零部件供应商,主要为全球汽车制造商提供机电一体化系统和组件,涵盖车门、座椅调节系统、空调系统以及电动驱动装置等。Brose 以其高质量的创新产品闻名,在全球拥有多个研发和生产基地,是全球第五大家…...

从科举到高考,人才选拔制度的变革与发展
一、引言 在人类历史的长河中,人才选拔机制始终是推动社会进步与文明传承的关键环节。古代科举制度与现代高考制度,分别在各自的时代背景下承担着筛选人才的重任,二者虽皆关乎教育与人才进阶之路,却有着诸多本质性的区别与独特的…...

利用Docker一键发布Nginx-Tomcat-MySQL应用集群
Docker简介,可以看上一篇文章: 为什么互联网公司离不开Docker容器化,它到底解决了什么问题?-CSDN博客 Docker体系结构 docker核心就是镜像和容器: 镜像就是应用程序的安装文件,包含了所有需要的资源&…...
关于数据库数据国际化方案
方案一:每个表设计一个翻译表 数据库国际化的应用场景用到的比较少,主要用于对数据库的具体数据进行翻译,在需要有大量数据翻译的场景下使用,举个例子来说,力扣题目的中英文切换。参考方案可见: https://b…...
【系统架构设计师】高分论文:论信息系统的安全与保密设计
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 摘要正文摘要 本人所在工作单位承担了我市城乡智慧建设工程综合管理平台项目的开发工作。我有幸参与了本项目,并担任架构师一职,全面负责项目的需求分析和系统设计等工作。城乡智慧建设工程综合管理平台项目包括…...

使用Tauri创建桌面应用
当前是在 Windows 环境下 1.准备 系统依赖项 Microsoft C 构建工具WebView2 (Windows10 v1803 以上版本不用下载,已经默认安装了) 下载安装 Rust下载安装 Rust 需要重启终端或者系统 重新打开cmd,键入rustc --version,出现 rust 版本号&…...
【docker】docker compose多容器部署
Docker Compose 的详细讲解与实际应用 什么是 Docker Compose? Docker Compose 是一个工具,用于定义和运行多容器 Docker 应用。 通过一个 docker-compose.yml 文件,可以同时启动多个服务,简化多容器管理。 Docker Compose 的核心…...
JS +CSS @keyframes fadeInUp 来定义载入动画
JSCSS 更完美展现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>跳动加载指示器</title>&l…...
Seatunnel解决ftp读取json文件无法读取数组以及格式化之后的json无法解析的问题
问题原因 在JsonRead这个方法里面 在源码中使用的逻辑是读取一行 然后把这个json进行解析 但是这样存在一个问题 比如如果json的格式是这样的 { name:“zhangsan”, age:25 } 如果是这样的话 第一行读到的内容就是 { 显然 一个 { 并不是一个…...

Elasticsearch在liunx 中单机部署
下载配置 1、下载 官网下载地址 2、上传解压 tar -zxvf elasticsearch-XXX.tar.gz 3、新建组和用户 (elasticsearch 默认不允许root账户) #创建组 es groupadd es #新建用户 useradd ryzhang -g es 4、更改文件夹的用户权限 chown -R ryzhang …...
深入探索 HarmonyOS 的 Navigation 组件:灵活的页面管理与动态导航
在移动应用开发中,页面的跳转和导航一直是核心功能之一。对于 HarmonyOS 开发者来说,Navigation 组件提供了一个强大的工具来实现灵活的页面管理和导航体验。今天,我们将深入探讨如何使用 HarmonyOS 中的 Navigation 组件来管理页面跳转、工具…...
【CUDA】CUDA Hierarchy
【CUDA】CUDA 基本概念和 Hierarchy CUDA 编程基础:Host 和 Device 工作流程 首先简单介绍CUDA 编程的基本概念:讲解 Host(CPU)与 Device(GPU)的区别、内存管理以及 CUDA 运行时的工作机制。 Host&#x…...

28.100ASK_T113-PRO Linux+QT 显示一张照片
1.添加资源文件 2. 主要代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QImage> #include <QPixmap>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);QIm…...
GitLab使用中遇到的一些问题-记录
错误内容一 Warning: Permanently added gitlab.com (ED25519) to the list of known hosts. gitgitlab.com: Permission denied (publickey). Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. …...

【微服务】Docker
一、Docker基础 1、依赖的兼容问题:Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,使用沙箱机制,相互隔离。 2、如何解决开发、测试、生产环境有差异的问题:Docker镜像…...

【C#】书籍信息的添加、修改、查询、删除
文章目录 一、简介二、程序功能2.1 Book类属性:方法: 2.2 Program 类 三、方法:四、用户界面流程:五、程序代码六、运行效果 一、简介 简单的C#控制台应用程序,用于管理书籍信息。这个程序将允许用户添加、编辑、查看…...

Python 入门教程(2)搭建环境 | 2.4、VSCode配置Node.js运行环境
文章目录 一、VSCode配置Node.js运行环境1、软件安装2、安装Node.js插件3、配置VSCode4、创建并运行Node.js文件5、调试Node.js代码 一、VSCode配置Node.js运行环境 1、软件安装 安装下面的软件: 安装Node.js:Node.js官网 下载Node.js安装包。建议选择L…...

Spark常问面试题---项目总结
一、数据清洗,你都清洗什么?或者说 ETL 你是怎么做的? 我在这个项目主要清洗的式日志数据,日志数据传过来的json格式 去除掉无用的字段,过滤掉json格式不正确的脏数据 过滤清洗掉日志中缺少关键字段的数据ÿ…...

【AI系统】Auto-Tuning 原理
Auto-Tuning 原理 在硬件平台驱动算子运行需要使用各种优化方式来提高性能,然而传统的手工编写算子库面临各种窘境,衍生出了自动生成高性能算子的的方式,称为自动调优。在本文我们首先分析传统算子库面临的挑战,之后介绍基于 TVM…...

AMEYA360:上海永铭电子全新高压牛角型铝电解电容IDC3系列,助力AI服务器电源高效运转
随着数据中心和云计算的高速发展,AI服务器的能效要求日益提高。如何在有限空间内实现更高的功率密度和稳定的电源管理,成为AI服务器电源设计的一大挑战。永铭推出全新高压牛角型铝电解电容IDC3系列,以大容量、小尺寸的创新特性,为…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...