EDI 解决方案之•EDI 消息传递•EDI 消息结构


EDI 消息结构安全

EDI 消息由信封和一系列分层结构元素组成。信封包含一组头部和尾部,每组都描述并包含一个结构元素。这些结构元素以下所示:架构

EDI 消息的层次结构容许对事务集/消息和组进行批处理。即便一个交换只包含一个事务集/消息和一个组,该交换也具备与批处理时彻底相同的基本结构元素,不一样的是,它不会有多个事务集/消息或组元素。ide

EDI 的头部和尾部oop

EDI 交换的各部分由标头和尾部分隔,而标头和尾部必须遵循 X12 EDIFACT 标准。交换控制标头和尾部只出现一次;功能组和事务集标头和尾部可重复出现,前提是事务集和组在交换内是按批处理的。每一个标头和尾部均由一系列数据元素组成,这些元素包含有关标头和尾部所含内容的信息。编码

X12 EDIFACT 的标头和尾部很类似。主要区别在于,在 EDIFACT 中,交换中使用的分隔符是在 UNA 服务字符串建议标头中定义的。而在 X12 编码中,分隔符是在 ISA 交换控制标头中定义的。spa

交换控制和功能组标头和尾部表示为信封段。当 BizTalk Server 将传入交换分割成事务集时,它将这些信封段另存为上下文属性。对路由很是有用的主要信封属性可做为单独的属性使用。当保留交换时,不会出现这种状况,此时信封数据属于消息自身的一部分。日志

BizTalk Server 生成传出消息时,它根据贸易合做伙伴协议来肯定标头和尾部,或者在未肯定任何参与方时根据全局协议肯定。事件

标头字段和尾部字段,以及用于在交换中分隔它们的分隔符均在两个参与方之间的协议中进行定义。按照对协议的规定,切勿在交换、组或事务集的任何头字段或尾字段的定义中使用分隔符。若是使用了这样的分隔符,则在做为发送方的 BizTalk Server EDI 组装器中或在接收方的拆装器中将没法处理交换。若是交换为出站批,它在 EDI 组装器中将失败,由于组装器会根据头控制(服务)架构验证信封。若是交换未进行批处理,EDI 组装器会将其序列化,但交换在接收协议的拆装器中将没法处理。事务

X12 的标头和尾部内存

X12 编码消息的标头和尾部以下所示:

若是 ISA 标头后面紧跟 IEA 尾部,则交换为空。若是事务集存在,则 GS 标头和 GE 尾部必须存在,不然它们将受条件限制。

X12 编码的消息中,ISA 交换控制标头字段是固定长度。对于某些字段,能够输入小于字段固定长度的值。若是这样作,交换必须包含尾部空格(对于字符串字段)或前导零(对于数字字段),以便每一个字段都具备所需长度。当建立出站交换时,BizTalk Server 将输入尾部空格或前导零,以便建立长度正确的交换控制标头。GS 组标头字段和 ST 事务集标头字段的长度不固定。

X12 编码中,功能安全标头、功能保证标头、功能安全值段和功能安全尾部段均超出 BizTalk Server EDI AS2 的范围。若是收到具备这些段的交换,则会挂起交换并显示错误日志,指示没法识别这些段。

ST01 字段是事务集 ID 代码;ST02 字段是事务集控制编号。ST03 字段是架构版本标识符。SE01 字段指示事务集中包含的段数;SE02 字段与 ST02 字段(事务集控制编号)相同。当解析传入消息时,BizTalk Server 将验证事务集中的段数是否与 SE01 字段的值相对应。当生成传出消息时,BizTalk Server 会将 SE01 字段设置为事务集中的正确段数。

要序列化到传出 EDI 交换中的 XML 事务集应当具备事务集标头和尾部。可是,若是没有事务集标头或尾部,EDI 组装器将处理相应消息。X12 EDIFACT 架构中的事务集标头和尾部段对于 XML 事务集而言是可选的。若是事务没有标头或尾部,则 EDISend AS2EDISend 发送管道中的 EDI 组装器将会向其添加事务集标头和尾部值。这些值将基于映射或计算。EDI 组装器将会为交换 XML(保留批)、批处理的事务集 XML 和事务集 XML 执行此操做。有关详细信息,请参阅X12 Transaction SetHeader and Trailer SegmentsEDIFACT TransactionSet Header and Trailer Segments

EDIFACT 的标头和尾部

EDIFACT 编码消息的标头和尾部以下所示:

无需 UNA 标头。但 UNB 标头是必需的。若是 UNA 标头存在,则其中将包含要在处理传入消息时使用的分隔符,不然将使用为 EfactDelimiters 管道属性定义的分隔符。

若是 UNB 标头后面紧跟 UNZ 尾部,则交换为空。若是 UNG 标头后面紧跟 UNE 尾部,则组为空。UNG 标头和 UNE 尾部对是条件元素,不必定必须出如今消息中。

EDI 交换结构元素

交换是 EDI 消息的最高级别的结构元素。它包含由两个合做伙伴交换的一个或多个组的集合。交换的目标必须是一个贸易合做伙伴。交换可能包含一种或多种类型的事务集/消息。

使用交换时,交换自身以及其中的组和事务集/消息由标头定义。段、数据元素和子元素由分隔符分隔。每一个分隔符都有一个默认值,但能够为参与方定义其余字符。在 EDIFACT 交换中,在交换中用做分隔符的所选字符是在单独的 UNA 交换标头中定义的。而在 X12 交换中,分隔符是在 ISA 交换标头中定义的。请注意,在 X12 中,数据元素分隔符是位于第四个字符位置的字符,数据段终止符是位于最后一个字符位置的字符。其余 X12 分隔符和所有 EDIFACT 分隔符由字段定义,例如 X12 组件分隔符由 ISA16 字段定义,EDIFACT 数据元素分隔符由 UNA2 字段定义。有关详细信息,请参阅UNA Segment Definition Page (EDI Properties)ISA Segment Definition Page (EDI Properties)

EDI 组结构元素

组包含一个或多个事务集。一个 EDIFACT 组必须包含同一类型的事务集。一个 X12 组可能包含相似类型的事务集(基于事务集 - (GS01-ST01) 映射)或相同类型的事务集。下表列出了在单一组 (GS01) 可能会一块儿发生的相似 X12 事务集 (ST01)

 

GS01

ST01


CF

844


849


DX

894


895


FR

821


827


GC

920


924


925


926


HC

837


837_D


837_I


837_P


IA

110


980


IO

310


312


ME

198


200


201


245


261


262


263


833


872


MG

203


206


259


260


264


266


OG

875


876


PK

196


839


QG

878


879


888


889


896





QO

313


315


RO

300


301


303


RQ

836


840


RS

869


870


SL

135


139


SO

302


311


317


319


322


323


324


325


326


361


TO

197


199


265


485


486


TP

460


463


466


468


490


492


494


WA

140


141


142


143



HIPAA 5010 组还容许单一组内存在不一样版本的事务集。

若是在处理事务集时遇到异常,将使用 EDI 参与方属性来肯定是挂起整个交换仍是仅挂起失败的事务集。

一个组必须以功能组标头(X12 中的 GS EDIFACT 中的 UNG),且必须以功能组尾部(X12 中的 GE EDIFACT 中的 UNE)结束。组标头包含发送方和接收方代码、日期和时间、与标头和尾部匹配的控制编号、可能包括在功能组内的用于定义事务集的集合的组标识符以及其余信息。组尾部具备指示组内事务集数目的元素。

组在 EDIFACT 交换内是可选的。即便不存在组(不存在 UNG 段),一个 EDIFACT 交换也可包含多个事务集。在此状况下,全部事务集都必须具备同一类型,由于一个组中的事务集的类型必须相同。例如,APERAK ORDERS 事务集不能同时出如今一个组或不具备多个组的交换中。

组在 X12 交换内是必需的。

交换包括一个用于定义 EDI 消息的信封。该信封必须以交换标头(X12 中的 ISA EDIFACT 中的 UNA/UNB)开头,且必须以交换尾部 (IEA/UNZ) 结束。交换标头包括定义如下各项的元素:发送方和接收方、日期和时间、版本号、与标头和尾部匹配的控制编号以及其余信息。

ISA12 GS8 字段(对于 X12 交换)和 UNH2 字段(对于 EDIFACT 交换)包含发现架构所必需的版本信息。

交换尾部具备指示交换中的组数的元素。

EDI 事务集/消息结构元素

事务集(在 X12 编码中)或消息(在 EDIFACT 编码中)包含构成消息数据的段。事务集由标头、数据段集合和尾部组成。事务集中提供了处理事务所需的全部详细信息。

事务集必须以 ST 事务集标头(在 X12 中)或 UNH 消息标头(在 EDIFACT 中)开始,且必须以 SE 事务集尾部(在 X12 中)或 UNT 消息尾部(在 EDIFACT 中)结束。尾部提供包括标头和尾部段在内的数据段的计数。

事务集能够包含一个或多个循环,这些循环是重复相关段的集合所必需的。

EDI 段结构元素

段包含一个或多个数据元素,是消息中的中间信息单位。每一个段均以一个由三个字符组成的数据段标识符开头,以段终止符(默认状况下为撇号 ('))结尾。段内的数据元素由数据元素分隔符分隔。默认状况下,数据元素分隔符为加号 (+)。段可分为两类:必需段和可选段。传出交换的分隔符可在两贸易合做伙伴间的协议中设置,也可设置为后备贸易合做伙伴协议的一部分。

嵌套

段能够按一种称为嵌套的分层关系进行分组。有两种不一样类型的嵌套:显式和隐式。在任何一个交换内,只能使用一种类型的嵌套。

  • 显式嵌套显式指示循环是嵌套的。使用显式嵌套时,段标记中的第一个组件数据元素将为段代码。段代码后将为表示段的级别和重复发生率的条件组件数据元素。用于此目的的组件数据元素的数量由段在消息结构中出现的层级决定。若是段将出如今级别一,则会使用紧跟在段代码以后的组件数据元素。若是段将出如今级别二,则会使用紧跟在段代码以后的组件数据元素和下一个组件数据元素。若是段将出如今级别三,则会使用段代码以后的三个组件数据元素。管道没法执行将数据与层次结构比较的结构验证。

  • 在隐式嵌套中,将严格遵循在消息结构中指定的段的顺序。段之间的嵌套关系是隐式的,处理时不须要进一步的指示。

循环

在一个事务集内,一个或多个段能够循环的形式重复。有两种不一样类型的循环:未绑定和绑定。

未绑定循环

未绑定循环不具备标记循环的开头和结尾的惟一标识段。未绑定循环按照计数进行重复。若是计数没有值,则循环将重复两次。循环中的每一个段只能按指定的顺序出现一次。

未绑定循环以惟一的第一个数据元素开头。在每次出现中,第一个元素可出现一次且仅出现一次。未绑定循环可在循环内进行嵌套;若是在循环内进行嵌套,则内部未绑定循环不能在与任何外部循环相同的序号位置处开始,也不能以与任何外部循环相同的段 ID 开头。嵌套循环包含的段不能同时为同一嵌套结构中任何外部循环的起始段。

绑定循环

绑定循环以预约义的段 LS(循环开头)开头,以预约义的段 LE(循环结束)结束。LS 段的可选性必须与循环中第一个段的可选性匹配。一个绑定循环能够包含另外一个绑定循环。

便笺

X12 中的绑定循环与 EDIFACT 中的显式循环等价。

在循环中使用绑定是为了解决不明确的问题。LS/LE 段上的要求指示符与循环的第一个段的要求指示符相匹配。绑定会放松对某些常常重复段的用法的结构限制。绑定段对起始段 ID 没有限制。这样可以使同一段在做为一个绑定循环的开头的同时在该循环以外使用,以下例所示:

复制

AALSBBCCLEBB

容许存在从属循环(循环内的循环)。若是绑定循环在循环内进行嵌套,则内部循环不能在与任何外部循环相同的序号位置处开始。内部绑定循环必须在与之相邻的外部循环以前结束。

事务集内的每一个绑定循环必须具备一个惟必定义的 <loop_id> 值,该值由一到四个大写字母或数字组成。建议对应的 LS LE 段也应包含同一惟一的 <loop_id> 值。<loop_id> 数据元素将做为常规数据元素进行处理并验证其数据类型、最小/最大长度、可选性等等。不会执行跨段(跨越 LS LE)验证。BizTalk Server 将经过存在且仅存在 LS LE 段来验证模糊解析。在数据元素规则发生冲突的状况下,将接受存在错误的事务集,且 BizTalk Server 在确认中返回 AK501=E AK2/AK3 的相应评估。

还要求强制 LS/LE 段配对。在不匹配的状况下,因为存在内在的模糊解析问题而拒绝事务集,且在事件查看器和 997 确认中返回 AK501 = E AK502 = 5。若是缺乏 LS/LE 段之一或二者,而事务集是明确的,将接受存在错误的事务集并返回 AK501=E AK502 = 5

LS/LE 对能够是可选的,也能够是必需的。可是,除非该对包含在可重复的父循环中,不然该对永不会是可重复的。在任一种状况下,LS/LE 对的 MaxOccurs 可为 1,但不能大于 1。在架构验证中,这是强制要求。

EDI 拆装器和 EDI 组装器处理 LS LE 段。在解析过程当中,拆装器为 LS LE 段建立 XML 节点,并验证这两个段。在序列化过程当中,组装器从 XML 节点建立 LS LE 段,并验证这两个段。若是缺乏所需的 LS LE 段,则会挂起/拒绝 AK501 = E AK502 = 5 的事务集。若是存在 LS/LE 段而没有对应的数据元素,且启用了 EDI 验证,则会接受存在错误的事务集并在事件查看器和 997 确认中报告 AK501 = E AK502 = 5

EDI 数据元素:结构元素

数据元素是消息中的基本数据单元。数据元素由数据元素分隔符分隔,默认状况下 X12 是星号,EDIFACT 是加号。数据元素的可行性定义为:必需、可选或条件。

数据元素能够是简单型,也能够是复合型。简单数据元素为数值型,它们是最低级别的数据。复合数据元素是一串子元素,这些子元素是由复合元素分隔符分隔的简单数据元素。默认状态下,复合元素分隔符对于 x12 EDIFACT 是冒号。

对于 EDIFACT 编码的消息,若是经由 EDI 发送的数据须要发送任何定义用做分隔符的字符,则须要使用转义符来指明后面的字符不是分隔符,而是数据的一部分。默认状况下,转义符为问号 (?)

便笺

X12 不支持转义符。若是遇到做为 X12 编码的交换数据一部分的分隔符,则交换将在接收方或发送方挂起。

相关文章
相关标签/搜索