汽车EDI:Chrysler EDI项目案例
菲亚特克莱斯勒汽车Fiat Chrysler Automobiles(FCA)是一家全球性汽车制造商,主营产品包括轿车、SUV、皮卡车、商用车和豪华车等多种车型。其旗下品牌包括菲亚特、克莱斯勒、道奇、Jeep、Ram、阿尔法·罗密欧和玛莎拉蒂等。
Chrysler通过EDI来优化订单处理、交付通知、货物收据以及发票处理等业务流程,从而加快订单处理速度,更好的协调交货时间,追踪其供应链中货物的运输情况,加快付款速度,避免出现错误和延误。
EDI 需求概览
EDI 传输协议
Chrysler支持SFTP以及AS2。与SFTP相比,AS2有一个独特的功能:它允许用户请求一个文件处理通知(MDN),一旦文件被收件人收到并解密,就会提醒发件人。这种收据(也称为NRR,即不可否认的收据)被创建、签署,并在解密后返回给发件人,给他们提供法律证据,证明文件在运输过程中没有被改变。
因此M公司选择使用AS2最为其EDI传输协议,AS2(Applicability Statement 2)是一种用于在网络上安全、可靠地传输数据的协议。它建立在HTTP(Hypertext Transfer Protocol)和SMTP(Simple Mail Transfer Protocol)的基础上,采用了加密和数字签名等安全机制,确保数据的机密性和完整性。
EDI 报文标准
Chrysler选择的EDI报文标准为X12,涉及到的业务单据以及传输方向如下所示:
业务类型 | 业务含义 | 传输方向 |
---|---|---|
850 | 采购订单 | Chrysler发送给 M 公司 |
860 | 采购订单变更 | Chrysler发送给 M 公司 |
830 | 物料需求预测 | Chrysler发送给 M 公司 |
862 | 交付计划 | Chrysler发送给 M 公司 |
861 | 接收通知或验收证书文件格式 | Chrysler发送给 M 公司 |
820 | 汇款通知 | Chrysler发送给 M 公司 |
824 | 应用程序通知 | Chrysler发送给 M 公司 |
856 | 发货通知 | M 公司发送给Chrysler |
810 | 采购订单 | M 公司发送给Chrysler |
实施方案
考虑到内部业务系统尚未开发完成,M公司与知行沟通后决定采用Excel方案作为临时替代方案,后期业务系统开发完毕之后,再切换集成方案。
Excel方案是EDI报文和Excel之间的数据转换。它的基本思路是:在接收到交易伙伴发来的EDI报文,并在EDI平台内部完成格式的转换之后,将数据直接呈现在Excel中。用户可以直观地看到接收到的数据;手动在Excel上录入数据之后,将Excel上传至EDI平台,EDI平台在内部做字段映射,将表格中的数据映射到固定的EDI字段上,最终生成EDI报文发送给交易伙伴。
基于知行之桥EDI系统对接 Chrysler EDI
实现与Chrysler的EDI对接需要在知行之桥EDI系统中搭建如下所示的工作流:
建立 AS2 连接
本次对接Chrysler的EDI项目中使用了两个AS2端口,被分别命名为Chrysler_AS2以及Chrysler_AS2_856。这是由于Chrysler方使用单独的AS2 ID传输EDI 856 发货通知,其他报文则使用另一个AS2 ID进行传输。
Chrysler将会提供两套 AS2连接信息,在配置的过程中,M公司需要注意辨别。需要分别在这两个AS2端口中配置Chrysler提供的AS2 ID、交易伙伴URL以及交易伙伴证书等信息。
与Chrysler的EDI测试流程
本次对接Chrysler的EDI项目是帮助M公司使用知行之桥EDI系统切换国外某EDI系统,项目中需要传输的单据此前都已做过测试,对于这种切换项目,Chrysler方提出只需要进行连接测试即可,无需再做额外的业务测试。
整体测试流程如下:
1.进入Stellantis 的EMTS网站,选择需要的EDI连接方式。由于是切换项目,因此需要选择 Modify Existing Account,填写AS2信息以及供应商信息。
2.向Chrysler发送邮件,告知对方EMTS网站上的内容已填写完成。并提供M公司的AS2连接信息(包括证书等信息)。
3.与Chrysler进行Loop test,需要确认M公司的供应商类型(如:MOPAR、PAY AS BILL以及PRODUCTION等),这里支持多选。
4.Chrysler提供的AS2连接信息中没有提到AS2 ID,这里需要结合供应商类型来匹配AS2 ID。AS2 连接测试分为 测试和生产两部分。
5.接下来Chrysler将会给M公司分配 Signup 账号。后期供应商可以登录EMTS网站查看业务单据的处理情况。
6.由于切换项目Chrysler并不参与EDI业务测试,因此需要M公司的业务人员和知行EDI实施顾问一起进行业务测试,将系统生成各业务单据与此前成功上线的业务单据进行比对。
项目回顾
1.解决发送方ID不同时的文件分流
通常情况下,接收同一个交易伙伴发来的EDI报文只会出现一个发送方ID。但由于本次对接Chrysler的EDI项目需要对接Chrysler多条业务线,因此会出现多个发送方ID,需要进行文件分流。
在知行之桥EDI系统中我们可以在Script端口的设置选项卡下编写RSB脚本来实现对文件名的修改。
代码如下:
<rsb:set attr="input.file" value="[FilePath]" />
<rsb:set attr="input.filename" value="[FileName]" />
<rsb:call op="x12Scan" in="input" out="out"><rsb:set attr="data.type" value="[out.DocumentType | def |trim]" /><rsb:set attr="data.senderId" value="[out.InterchangeSenderId | def |trim]"/>
</rsb:call><rsb:set attr="output.FileName" value="Chrysler_[data.senderId]_[data.type]_[filename]"/>
<rsb:set attr="output.FilePath" value="[FilePath]"/>
<rsb:push item="output" />
上述代码能够根据发送方ID对文件进行分流,本次EDI项目中会出现三个不同的发送方ID,因此主要将文件分为三组:
第一组包括:EDI 850、EDI 860;
第二组包括:EDI 830、EDI 862、EDI 861、EDI 820以及EDI824;
第三组包括:针对接收到的 EDI 810回复的EDI 997,功能性确认。
2.跨工作区的文件传输
在上述工作流中,M公司向Chrysler发送EDI 856 以及EDI 810时,M公司的业务人员需要填写相应的Excel模板,并将其发送至指定邮箱中。这里理应创建一个EmailReceive端口,用于配置收件箱信息。但工作流中使用了WorkspaceReceive端口,如下图所示:
M公司使用知行之桥EDI系统对接多个交易伙伴,可以在工作流界面右上角创建不同的工作区来区分不同的交易伙伴。
但所有交易伙伴如果都使用一个收件箱,则可以通过WorkspaceReceive端口以及WorkspaceSend这两个免费端口实现跨工作区的文件传输,尽可能减少付费端口的使用,节约成本。
可以在工作流中搭建上述工作流,给每个交易伙伴都创建一个WorkspaceSend端口,如下图所示:
搭建上述工作流即可以让多个Chrysler以及CompanyA、CompanyB共同使用一个EmailReceive端口了。
关于如何配置Workspace Receive 以及 Workspace Send 端口,请参考:Workspace Receive 以及 Workspace Send 端口介绍
扩展阅读:EDI是什么?
相关文章:

汽车EDI:Chrysler EDI项目案例
菲亚特克莱斯勒汽车Fiat Chrysler Automobiles(FCA)是一家全球性汽车制造商,主营产品包括轿车、SUV、皮卡车、商用车和豪华车等多种车型。其旗下品牌包括菲亚特、克莱斯勒、道奇、Jeep、Ram、阿尔法罗密欧和玛莎拉蒂等。 Chrysler通过EDI来优化订单处理、交付通知、…...

Locust:可能是一款最被低估的压测工具
01、Locust介绍 开源性能测试工具https://www.locust.io/,基于Python的性能压测工具,使用Python代码来定义用户行为,模拟百万计的并发用户访问。每个测试用户的行为由您定义,并且通过Web UI实时监控聚集过程。 压力发生器作为性能…...

用23种设计模式打造一个cocos creator的游戏框架----(十八)责任链模式
1、模式标准 模式名称:责任链模式 模式分类:行为型 模式意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处…...
100天精通风控建模(原理+Python实现)——第9天:风控建模中为什么需要特征工程?
风控模型已在各大银行和公司都实际运用于业务,用于营销和风险控制等。本文以视频的形式阐述风控建模中为什么需要特征工程。并提供风控建模原理和Python实现文章清单。 之前已经阐述了100天精通风控建模(原理+Python实现)——第1天:什么是风控建模? 100天精通风控…...
【PHP】计算某个特定时间戳距离现在的天数
在PHP中,你可以使用time()函数获取当前时间的时间戳,然后将它与你想要计算的过去或未来的时间戳进行比较。为了得到相差的天数,你需要先用两个时间戳相减得到秒数差,然后再除以一天的总秒数(通常是86400秒)…...

lv12 uboot移植深化 9
u-boot-2013.01移植 【实验目的】 了解u-boot 的代码结构及移植的基本方法 【实验环境】 ubuntu 14.04发行版FS4412实验平台交叉编译工具arm-none-linux-gnueabi- 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行 【实验步骤】 1 建立自己的平台 1.…...

大数据与深度挖掘:如何在数字营销中与研究互动
数字营销最吸引人的部分之一是对数据的内在关注。 如果一种策略往往有积极的数据,那么它就更容易采用。同样,如果一种策略尚未得到证实,则很难获得支持进行测试。 数字营销人员建立数据信心的主要方式是通过研究。这些研究通常分为两类&…...
xtu oj 1327 字符矩阵
按照示例的规律输出字符矩阵。 比如输入字母D时,输出字符矩阵如下 ABCDCBA BBCDCBB CCCDCCC DDDDDDD CCCDCCC BBCDCBB ABCDCBA字符矩阵行首、尾都无空格。 输入 每行一个大写英文字母,如果字符为#,表示输入结束,不需要处理。 …...

讨论用于评估DREX的五种DR指标
概要 动态范围是已经使用了近一个世纪的用于评估接收机性能的参数。这里介绍五种动态有关指标的定义及测试方法,用于评估数字接收激励器(DREX,digital receiver exciters)。DREX是构成雷达的关键整部件,其瞬时带宽&am…...
基于SpringBoot的在线疫苗预防小程序
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的在线疫苗预防小程序,ja…...
Kafka使用总结
1、Kafka是何如做到高性能的? a、消息批处理减少网络通信开销,提升系统吞吐能力(先攒一波,消息以“批”为单位进行处理) 生产端:无论是同步发送还是异步发送,Kafka都不会立即就把这条消息发送出…...

2023 年山东省职业院校技能大赛(高等职业教育) “信息安全管理与评估”样题
2023 年山东省职业院校技能大赛(高等职业教育) “信息安全管理与评估”样题 目录 任务 1 网络平台搭建(50 分) 任务 2 网络安全设备配置与防护(250 分) 模块二 网络安全事件响应、数字取证调查、应用程序安…...

Apache Web 服务器监控工具
将Apache Web 服务器监控纳入 IT 基础架构管理策略有助于先发制人地识别性能瓶颈,这种主动监控方法提供必要的数据,以确保 Web 服务器能够胜任任务,并在需要时进行优化。保证客户获得流畅、无忧的用户体验可以大大有助于巩固他们对组织的信任…...
MySQL执行语句 Table ‘mysql.servers‘ doesn‘t exist
执行语句报错: mysql> flush privileges; ERROR 1146 (42S02): Table mysql.servers doesnt exist解决: 进入数据库 删除servers表 mysql> use mysql Database changed mysql> drop table if exists servers; Query OK, 0 rows affected, …...

在datagridview列显示下拉操作
DataGridViewComboBoxExColumn 设定好类型 需要设置的地方是: 绑定数据的操作: 因为此处绑定数据实际为数据 参数 显示的操作,不影响datasource的数据绑定 下一步 数据绑定: DGVCOrderZhuangtai.ValueType typeof(EOrderZhuan…...
基于人工智能 RL 算法的边缘服务器智能选择 模式研究
提出了一种基于人工智能深度强化学习算法的扩展性及智能性较高的智能选择模式。在人工智能深度强化学习 算法的基础上,引入了动作抑制、四重 Q 学习 (QQL) 及归一化 Q-value 等机制,研究并实现了在满足业务延迟要求及公平 性的原则下,物联终端…...
JavaScript流程控制语句
代码块: JS中,可以通过代码块来为代码进行分组, 在同一个代码块中的代码就属于一组代码 这组代码要么全都执行,要么都不执行 JS的代码块比较奇葩。 通常情况下,代码块对于外部来说应该是隔离的, 在代…...
01.Git分布式版本控制工具
一、Git简介 Git是一个开源的分布式版本控制系统,可以有效、高速地进行从很小到非常大的项目的版本管理。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 二、版本控制器方式 1.集中式版本控制工具 版本库放在中央服务器中&…...

Hudi介绍
在数据不断写入 Hudi 期间,Hudi 会不断生成 commit、deltacommit、clean 等 Instant 记录每一次操作类型、状态及详细的元数据,这些 Instant 最终都会存到 .hoodie 元数据目录下,为了避免元数据文件数量过多,ActiveTimeline 越来越…...

MYSQl基础操作命令合集与详解
MySQL入门 先来个总结 SQL语言分类 DDL(Data Definition Language) - 数据定义语言: 用于定义和管理数据库结构,包括创建、修改和删除数据库对象。 示例:CREATE, ALTER, DROP等语句。 DML(Data Manipulation Lan…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...