知行之桥EDI系统功能介绍——FlatFile 端口介绍

news/2024/4/28 16:18:04/文章来源:https://blog.csdn.net/Cara_EDI_Consultant/article/details/137116018

FlatFile 端口能够实现平面文件与XML文件的互相转换。

FlatFile1.png

每个 Flat File 端口配置一个特定的平面文件格式,从而实现与 XML 格式的互相转换。Flat File 端口有两个主要的模式:

  • Position Delimited
  • Character Delimited

对于 Position Delimited 平面文件,端口 设置 选项卡下的 行类型 中,可以配置任意的字段名称、索引(即位置)和长度,表明数据在平面文件中每一行出现的位置。

FlatFile2.png

对于 Character Delimited 平面文件,端口配置有分隔平面文件中字段值的字符。

FlatFile3.png

Flat File 端口支持定义多种平面文件中不同类型的行。例如,平面文件中可能有一个 “header” 行,代表订单的日期,有多个 “item” 行,代表订单中的行项目。

定义多种行类型的关键是指定控制字段;控制字段值决定了在平面文件中特定的行类型(例如,header 行可能有一个控制字段值为 “HEAD”,item 行可能有一个控制字段值为 “ITEM”)。

平面文件格式配置完后,端口会转换与此格式匹配的文件到 XML。最终的 XML 结构在 XML 格式部分有详细解释。Flat File 端口也可以将匹配这种结构的 XML 转换为定义的平面文件格式。

某些平面文件在不同行有隐含的上下级关系。

端口配置
配置部分

FlatFile4.png

端口 Id:端口的静态、唯一标识符。
端口类型:显示端口类型及其用途的描述。
端口描述:一个可选字段,用于提供端口及其在流中的角色的自由格式描述。
文件类型:Position Delimited – 平面文件中的字段显示在每一行的特定位置。
Character Delimited – 这个属性需要指定特定的分隔符。
分隔符:如果文件类型设置为 Character Delimited,则表示平面文件中用于分隔各个字段的字符。

控制字段:位置分离

控制字段主要用于位置分隔,这里主要完成和控制字段有关的设置,决定了在平面文件格式中定义的不同的行类型。

FlatFile5.png

多行模式:平面文件是否包括多种行类型。
起始索引:如果多行模式启用,该值就是行中控制字段开始的索引。例如,如果某一行中的第一个字段定义了行类型(即第一个字段是控制字段),那么起始索引就是 0。
控制字段长度:(可选)如果多行模式启用,这个值定义了从起始索引开始读取控制字段的长度。
当前列标题:如果不启用多行模式,这个设置则决定了平面文件中的第一行是否应该被解析为列标题(即每个字段的名称而不是实际的数据)。同样的,启用这个设置,就会使得端口在将文件从 XML 转换为平面文件时生成一个标题行。

控制字段:字符分隔

和控制字段有关的设置,决定了在平面文件格式中定义的不同的行类型。

FlatFile6.png

多行模式:平面文件是否包括多种行类型。更多信息请查阅多种行类型部分
字段索引:如果多行模式启用,该值就是行中(索引从 0 开始)控制字段的索引。例如,如果某一行中的第二行定义了行的类型(即第二行是控制字段),那么字段索引就是 1。
生成字段/行类型名称:如果多行模式启用,那么该设置提供了一个选项,在平面文件中 不 指定字段和行的名称和索引。当启用这个设置,端口将会自动为下面行类型中没有明确定义的字段和行生成 XML 元素。
当前列标题:如果不启用多行模式,这个设置则决定了平面文件中的第一行是否应该被解析为列标题(即每个字段的名称而不是实际的数据)。同样的,启用这个设置,就会使得端口在将文件从 XML 转换为平面文件时生成一个标题行。
使用自动生成的字段名称:如果多行模式没有启用,这个设置决定了端口是否生成通用字段名称。不启用该选项,在行类型部分手动指定字段名称。

行类型

该部分允许以平面文件格式定义字段名和位置(如果文件类型是 Position Delimited)。

FlatFile7.png

如果多行模式启用,使用添加行类型按钮定义。每个行类型有一个控制字段,来标识行类型。例如,header 行可能有值为 HEAD 的控制字段,item 行可能有值为 ITEM 的行。

如果文件类型设置为 Character Delimited,多行模式启用,生成字段/行类型名称 启用,那么为平面文件中存在的所有字段和行类型提供名称和索引就不是必需的。

高级

FlatFile8.png

填充字符:当创建平面文件但字段值不能填满整个字段长度时,这个字段会被用来填满剩余部分。
无效的XML名称前缀:某些字段名对于 XML 元素时无效的(例如,以数字开头的字段像 “123ABC”),所以在从平面文件生成 XML 时必须设置一个前缀。同样的,当从 XML 转换 平面文件时,端口会查找该前缀并去除它。
行分隔符:指定行与行之间的分隔符。选项为 LF (默认) 和 CRLF。
本地文件名格式:用于为端口输出的消息分配文件名的方案。 可以在文件名中动态使用宏来包含标识符和时间戳等信息。 有关详细信息,请参阅宏。
嵌套行类型:该设置仅在从平面文件转换到 XML 文件时,且在平面文件中有多种行类型时才相关。如果多行模式启用,端口将会根据平面文件的控制字段行(即定义行类型的字段)增加层级关系到最终的 XML。
行尾填充:默认设置下,端口会在遇到异常的行尾时抛出错误。当启用时,该设置告知端口填充端口而不是抛出错误。
始终使用单元格分割符:如果文件类型设置为 Character Delimited时,打开此设置以使端口始终使用单元格分隔符(”)包装所有值,关闭此设置后端口仅会包装还有分隔符的值。
延迟处理放置:在输入文件夹中的文件的处理延迟的时间量(以秒为单位)。 这是一个遗留设置。最佳实践是使用 File 端口 来管理本地文件系统,而不是此设置。

定义平面文件格式

配置 Flat File 端口的第一步就是定义平面文件的格式。本部分介绍具有单行类型的格式,换句话说,平面文件中的每一行都具有相同的字段集。对于有多个不同行类型的平面文件,请查阅多种行类型 部分。

Character Delimited 的单行格式

对于 Character Delimited 的平面文件,定义格式很简单:通过分隔符属性指定平面文件中分隔不同字段的字符。

当前列标题 字段说明了平面文件中的第一行是否是标题行;换句话说,它包含了字段名称而不是实际数据。如果这些列标题存在,端口将会使用这些标题名称作为最终转换成的 XML 中的 XML 元素名。

如果列标题不存在,端口支持通过在行类型中添加字段,手动指定每一个字段的名称。这些字段名称按照索引顺序应用,意味着行类型中的第一个条目将会是平面文件行中第一个字段的名称,以此类推。

端口也可以通过启用使用自动生成的字段名称来自动生成通用的字段名称。

Position Delimited 的单行格式

对于 Position Delimited 的平面文件,定义格式需要指定在格式中每个字段的位置。端口设置中行类型部分为平面文件中存在的行增加任意数量的字段。每个字段必须使用名称和其在平面文件中出现的位置进行标识。

当前列标题 字段表明了平面文件中的第一行是否为标题行;换句话说,它包括了字段名称而不是实际数据。字段名称仍然需要在行类型部分中配置,且这个设置简单地保证了标题行不被识别为实际数据。

多种行类型

如果平面文件格式包括了多种行类型,多行模式属性应该被启用。平面文件中标识行类型的字段被称为控制字段。

Character Delimited 的多种行类型

当文件类型为 Character Delimited,字段参数设置决定了控制字段出现在平面文件中每一行地位置。该索引从 0 开始,意味着如果控制字段是行中的第 5 个值,那么字段索引就应该是 4。

对于可能出现在控制字段的每个值,在端口设置行类型单击增加行类型按钮。标识行类型的值应该在该行的控制字段值中设置。

一旦每个可能的行类型通过特定的控制字段值被添加和标识,在每行中将出现的字段应根据索引顺序指定。

如果生成字段/行类型名称启用,为在平面文件中存在的所有字段或行类型(只有控制字段必需)提供名称和索引是必需的。在这种情况下,端口将会为任何未定义的字段或行类型自动生成 XML 元素。

Position Delimited 的多种行类型

当文件类型是 Position Delimited,起始索引设置决定了控制字段在平面文件中每一行出现(开始)的位置。这个索引从 0 开始,意味着如果控制字段从行中第 15 个字符开始,那么字段索引就应该是 14。

对于可能出现在控制字段的每个值,在端口设置行类型单击增加行类型按钮。标识行类型的值应该在该行的控制字段值中设置。

一旦每个可能的行类型通过特定的控制字段值被添加和标识,在每行中将出现的字段应根据所处(开始)的位置指定。

多种行示例

例如,某个平面文件包括两种类型的行,一个 shipment 行和一个 package 行。shipment 行包括发货的日期、时间和地址信息,package 行类型包括了发货的项目信息。

shipment 行可能有一个值为 “SHIP” 的控制字段值,package 行可能有一个值为 “PCKG” 的控制字段值。每一行的第一个字段是 “SHIP” 或 “PCKG” 来说表明该行是什么类型。

针对这种情况,多行模式应该被启用,且字段索引(或起始索引)应设置为 0,表明控制字段是该行中的第一个字段。然后,在行类型部分应该配置有两种行类型;一种控制字段值为 “SHIP”,包括 shipment 行的每个字段(例如发货日期,交付日期,收货地址等),一种控制字段值为 “PCGK”,包括 package 行的每个字段(例如项目名称,项目重量等)。

XML 格式

在平面文件转换为 XML 文件之后,结果应有如下的 XML 结构:

位于文件根部的 Items 元素

平面文件中的每一行有一个与该行控制字段值相同的元素(如果未定义控制字段值,则是“行”)

行中的每个字段是控制字段值元素的子元素

例如,如果平面文件有 “SHIP” 和 “PCKG” 行,那么输出的 XML 会和此格式相似:

<Items><SHIP><ShipmentId>12B992</ShipmentId><Date>20200228</Date><ShipTo>14 Wallaby Way</ShipTo></SHIP><PCKG><ShipmentId>12B992</ShipmentId><ItemName>Goggles</ItemName><ItemWeight>3.98</ItemWeight></PCKG><PCKG><ShipmentId>12B992</ShipmentId><ItemName>Fins</ItemName><ItemWeight>1.07</ItemWeight></PCKG>
</Items>

转换 XML 文件为平面文件,输入的 XML 必须与上面的结构匹配(包括字段名称必须与端口配置中定义的字段匹配的限制)。

转换 XML 文件为平面文件,端口将在最终的平面文件中为每个 row 元素创建一个新行。对于 row 元素的每个子元素,端口将会将其与端口配置中字段名称匹配, 并将该元素放到合适的字段索引。

了解更多 EDI 信息,请参阅: EDI 是什么?

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

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

相关文章

V R社交平台的用处|虚拟现实体验馆加盟|V R设备在线价格

VR&#xff08;虚拟现实&#xff09;社交平台的用处可以体现在以下几个方面&#xff1a; VR社交平台不仅可以丰富用户的社交体验&#xff0c;还可以在教育、艺术、商务等领域发挥重要作用&#xff0c;为用户提供更加多样化、互动性强的社交平台体验。 VR游乐设备|VR娱乐设备|VR…

CleanMyMac X 4.15.1 for Mac 最新中文破解版 系统优化垃圾清理工具

CleanMyMac X for Mac 是一款功能更加强大的系统优化清理工具&#xff0c;相比于 CleanMyMac 4.15.1来说&#xff0c;功能增加了不少&#xff0c;此版本为4.15.1官方最新中英文正式破解版本&#xff0c;永久使用&#xff0c;解决了打开软件崩溃问题&#xff0c;最新版4.15.1版本…

微信开发者工具创建一个小程序

创建项目 对于上面这个AppID可以自行选择是注册还是测试号&#xff0c;我是使用的测试号&#xff0c;之后再下面选择模板&#xff0c;我这里选择了JS-基础模板。 进入项目后在模拟器中可看到如下页面&#xff1a; 添加提交按钮进行页面跳转 添加需要跳转的文件夹&#xff0c;…

Leetcode 3.25

LeetCode Hot 100 栈1.有效的括号2.最小栈3.字符串解码 栈 1.有效的括号 有效的括号 这道题肯定是利用了栈先入后出的特性。有以下几种情况 如果当前元素是左括号则push进栈不弹出&#xff1b; 如果当前元素是右括号则弹出栈中前一个元素&#xff0c;并判断是否与当前元素匹配…

http模块—http请求练习

题目要求&#xff1a;搭建如下http服务&#xff1a; 1.当浏览器向我们的服务器发送请求时&#xff0c;当请求类型是get请求&#xff0c;请求的url路径地址是/login。响应体结果是登录页面 2.当浏览器向我们的服务器发送请求时&#xff0c;当请求类型是get请求&#xff0c;请求…

ubuntu 首次登录mysql8 未设置密码或忘记密码解决方法 亲测可用

-1.首先输入以下指令&#xff1a; sudo cat /etc/mysql/debian.cnf2. 再输入以下指令&#xff1a; mysql -u debian-sys-maint -p //注意! //这条指令的密码输入是输入第一条指令获得的信息中的 password ZCt7QB7d8O3rFKQZ 得来。 //请根据自己的实际情况填写&#xff01;运…

QT文件读写操作和内容提取

访问IO设备&#xff0c;需要先调用open()来设置正确的OpenMode(例如ReadOnly或ReadWrite) 打开设备后后&#xff0c;使用write() 或putChar() 写入数据到文件和设备&#xff0c;并通过调用read()&#xff0c;readLine() 或readAll() 进行读取&#xff1b;使用完设备后&#xf…

离线数仓(八)【DWD 层开发】

前言 1、DWD 层开发 DWD层设计要点&#xff1a; &#xff08;1&#xff09;DWD层的设计依据是维度建模理论&#xff08;主体是事务型事实表&#xff08;选择业务过程 -> 声明粒度 -> 确定维度 -> 确定事实&#xff09;&#xff0c;另外两种周期型快照事实表和累积型…

【自我提升】一、Hyperledger Fabric 概念梳理

写在前面&#xff1a;最近因为业务需要&#xff0c;开始学习Hyperledger Fabric了&#xff0c;做java全栈工程师可真难搞。现在算是啥类型的都在涉及了&#xff0c;现在这个技术啥都不懂&#xff0c;就先开个学习专栏&#xff0c;记录记录。顺带也给各位道友参考参考。 目录 …

【Bug】记录2024年遇到的Bug以及修复方案

--------------------------------------------------------分割线 2024.3.22------------------------------------------------------- 1、load_sample_image raise AttributeError(“Cannot find sample image: %s” % image_name) AttributeError: Cannot find sample imag…

[linux初阶][vim-gcc-gdb] OneCharter: vim编辑器

一.vim编辑器基础 目录 一.vim编辑器基础 ①.vim的语法 ②vim的三种模式 ③三种模式的基本切换 ④各个模式下的一些操作 二.配置vim环境 ①手动配置(不推荐) ②自动配置(推荐) vim是vi的升级版,包含了更加丰富的功能. ①.vim的语法 vim [文件名] ②vim的三种模式 命令…

WPF —— DockPanel、ProgressBar 控件详解

ProgressBar 控件详解 1Progress bar简介 ProgressBar&#xff1a;进度条控件。 WPF带有一个方便的控件用于显示进度&#xff0c;称ProgressBar。它的工作原理就是设置最小值和最大值然后通过递增一个值&#xff0c;这样就可以直观的显示当前进度情况。 2 Progress bar常用的…

DFS:从递归去理解深度优先搜索

一、深入理解递归 二、递归vs迭代 三、深入理解搜索、回溯和剪枝 四、汉诺塔问题 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public: //笔试题&#xff0c;不讲武德&#xff0c;CAvoid move(int n,vector<int>& A, vector<int>& B, ve…

前端实现浏览器自定义滚动条

前言&#xff1a; 最近有个项目&#xff0c;产品觉得浏览器默认滚动条太丑了。想美化一下&#xff0c;比如自定义颜色&#xff0c;加上圆角&#xff0c;宽高都要更改一下。我查了资料和文档总结了一下 写法&#xff0c;特此记录以便之后使用。 浏览器滚动条api 总结&#xff…

【爬取网易财经文章】

引言 在信息爆炸的时代&#xff0c;获取实时的财经资讯对于投资者和金融从业者来说至关重要。然而&#xff0c;手动浏览网页收集财经文章耗时费力&#xff0c;为了解决这一问题&#xff0c;本文将介绍如何使用Python编写一个爬虫程序来自动爬取网易财经下关于财经的文章 1. 爬…

代码随想录 Day-25

力扣题目 509.斐波那契数 思路 很理所当然的&#xff0c;可以使用递归的方式其次是用动态规划的方式&#xff0c;动态规划的核心就是递推公式。 那么递推和递归一字之差&#xff0c;有什么区别呢&#xff1f;&#xff08;递推和递归的区别&#xff09; 1、递归 class Solutio…

Java项目:77 springboot母婴商城

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本课题后端使用SpringBoot Spring Cloud框架&#xff0c;前端采用html&#xff0c;JQuery&#xff0c;JS&#xff0c;DIVCSS技术进行编程&…

Redis中AOF文件重写与同步

AOF文件的写入与同步 Redis服务器进程就是一个时间循环(loop),这个循环中的文件时间负责接收客户端的命令请求&#xff0c;以及向客户端发送命令回复&#xff0c;而时间事件则负责执行像serverCron函数这样需要定时运行的函数。因为服务器在处理文件事件时可能会执行些命令&am…

【Java程序设计】【C00416】基于(JavaWeb)Springboot的客户管理系统(含论文)

基于&#xff08;JavaWeb&#xff09;Springboot的客户管理系统&#xff08;含论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千…

C# 文件操作

文章目录 C# 文件操作创建文件运行结果 写入文件程序文件运行结果 WriteAllLines-写入多行运行结果 追加字符串运行结果追加多行字符串 读取文件ReadAllText运行结果 ReadAllLines-用数组接收读取的内容运行结果 采用流&#xff08;Stream&#xff09;的方式来读取内容运行结果…