验证收到的 EDI 消息

EDI 接收管道处理传入的消息时,将对信封和消息数据执行一系列验证。其中一些处理将始终执行,而有些处理将仅在您启用的情况下才执行。这些验证包括:

  • 始终执行的验证

    • 验证交换信封的结构。

    • 针对贸易合作伙伴协议(如果未定义任何协议,则为后备协议)进行的信封验证。

    • 根据控制架构执行信封的架构验证。

    • 针对消息架构进行的事务集数据元素架构验证。

    • 根据 X12 标准提供的事务集-组映射验证单个组内事务集的类型。

  • 仅在启用时执行的验证

    • 对事务集数据元素执行 EDI 验证。如果在协议属性中启用了此验证,则执行此验证。

    • 对事务集数据元素执行扩展验证。如果在协议属性中启用了此验证,则执行此验证。

    • 对事务集数据元素进行跨字段验证(仅限 X12 编码消息)。如果在消息架构中启用了此验证,则执行此验证。

发送 EDI 确认

确认指示 EDI 消息传输的状态。在 BizTalk Server 收到 EDI 交换后,会根据已启用的确认将一个或多个确认返回给 EDI 交换的发送方。

基于验证的级别,EDI 消息确认会分为两种类型:

  • 标头验证的结果是生成技术确认。技术确认报告地址接收方对交换标头和尾部的处理的状态。

  • 正文验证的结果是生成功能确认。功能确认报告在处理所接收文档时遇到的每个错误。

BizTalk Server 可同时返回技术确认和功能确认以响应单个交换。BizTalk Server 为每个交换返回单个技术确认。对于 x12 交换,它将为收到的每个组返回功能确认。对于 EDIFACT 交换,它将为每个交换返回功能确认,而无论该交换包含多少个组。

X12 确认

X12 技术确认

如果 X12 消息的 ISA 标头和 IEA 尾部都有效(不考虑其他内容),则会发出肯定的 TA1 确认。有关 TA1 确认内容的详细信息,请参阅X12 TA1 确认

X12 功能确认

997 确认用于确认对交换或功能组的接受,接受或拒绝一个或多个功能组或者一项或多项事务,以及确认并报告与标准的符合情况。如果 BizTalk Server 收到具有多个组的交换,将为每个组返回确认。如果某个组包含多个事务集,该组的确认将根据是否为接受的事务集生成 AK2 循环而包含多个 AK2 循环(每个事务集一个循环)。有关 997 确认内容的详细信息,请参阅X12 997 确认

                                                                便笺

EDI 接收管道为 X12 功能确认构建功能组标头 (GS) 段时,会从正被确认的功能组摘取应用程序发送方代码 (GS02) 和应用程序接收方代码 (GS03)。但是,传入消息上的 GS02 会映射到确认上的 GS03GS03 映射到确认上的 GS02

EDIFACT 确认

EDIFACT 技术确认

对于 EDIFACT,不会使用单独的技术确认,但技术确认或 CONTRL 确认部分(参见下面的内容)却可重复用于确认回执。这是模拟的技术确认。

有关技术 CONTRL 确认的详细信息,请参阅作为技术确认的 EDIFACT CONTRL 消息

EDIFACT 功能确认

对于 EDIFACT,功能 CONTRL 确认用于确认收到的交换、组和消息,接受或拒绝收到的交换、组和消息,并列出其中包含的所有语法错误以及不受支持的功能。CONTRL 确认报告对已完全收到的交换所进行的语法检查的结果。

有关功能 CONTRL 确认的详细信息,请参阅作为功能确认的 EDIFACT CONTRL 消息

何时生成确认

如果满足以下条件之一,EDI 接收管道就会生成一个确认:

  • 收到的交换中的数据元素提示确认。对于 X12 编码的消息,如果 ISA14 数据元素设置为 1,接收管道会生成技术 TA1 确认。对于 EDIFACT 编码的消息,如果 UNB9 数据元素设置为 2,接收管道会生成技术 CONTRL     确认;如果 UNB9 数据元素设置为 1,则生成功能 CONTRL     确认。

  • 协议属性提示确认。对于 X12 交换,这些属性是协议属性对话框的双向协议选项卡的确认页中的预期 TA1”预期 997”属性。对于     EDIFACT 交换,这些属性是协议属性对话框的双向协议选项卡的确认页中的预期接收消息(CONTRL)”预期确认(CONTRL)”。当启用一种确认类型后,还可以指明是否批处理该类型的确认。

  • 如果没有为交换确定协议,全局属性会提示确认。这些属性是

    • X12 备用设置对话框的协议选项卡的确认页中的预期 TA1”预期 997”属性。

    • EDIFACT      备用设置对话框的协议选项卡的确认页中的预期接收消息(CONTRL)”预期确认(CONTRL)”属性。

对于 EDIFACT,如果技术确认和功能确认同时被提示,EDI 接收管道会返回两个独立的 CONTRL 确认。技术 CONTRL 确认只包括确认回执信息。功能 CONTRL 确认则包含回执信息和功能确认信息。有关详细信息,请参阅EDIFACT CONTRL 确认

使用控制编号标识确认

每个确认都要用用于 X12 的事务集控制编号(ST2 数据元素)或用于 EDIFACT 的事务集参考编号(UNH1 数据元素)来标识。如果为传出确认配置协议,则 BizTalk Server 将事务集控制编号或参考编号设置为根据以下各项为协议设置的值:

  • 对于 X12 确认 –“协议属性对话框的协议选项卡的本地主机设置页(接收方设置部分)中的确认控制编号(ST02)”属性

  • 对于 EDIFACT 确认 –“协议属性对话框的协议选项卡的本地主机设置页(接收方设置部分)中的“Edifact 确认控制编号属性

如果 BizTalk Server 并不确定确认的协议,将使用“X12 备用设置“EDIFACT 备用设置对话框的协议选项卡中提供的与上述属性相同的属性。此设置适用于技术确认和功能确认(如果二者都已配置)。每生成一个确认或交换,该整数都将递增 1

确认的信封根据确认控制架构利用接收到的消息中的数据生成。

准备确认

BizTalk Server 为确认生成信封的方法,就像为消息生成信封一样,通过查看交换控制标头和功能组标头的定义来完成。有关详细信息,请参阅传出 EDI 消息的协议解析和架构确定

为启用生成确认(TA1997 CONTRL)的无缝路由,EDI 拆装器会在确认上填充DestinationPartyReceiverQualifierDestinationPartyReceiverIdentifierDestinationPartySenderQualifierDestinationPartySenderIdentifier属性。

同步和异步确认

您可以选择以同步还是异步的方式来发送 EDI 确认。如果选择同步发送,BizTalk Server 会直接将确认路由到双向请求-响应接收端口的发送管道。如果选择异步发送,BizTalk Server 会将确认路由到 MessageBox,同时会有一个发送端口订阅该消息。

若要指定 BizTalk Server 同步发送确认,请选择双向协议选项卡(对于 X12 EDIFACT 协议)交换设置下的本地主机设置页(接收方设置部分)中的将确认路由到请求-响应接收端口的发送管道。如果清除该属性,双向接收端口的发送管道则必须设置为返回 EDI 交换。

如果方案使用的是请求-响应接收端口,并且技术确认和功能确认都已启用,则技术确认就会同步发回,而功能确认则异步发回。

通过 HTTP/HTTPS 接收 EDIINT/AS2 编码的消息时,如果在对同一套接字上的以 MIME 包装的 EDI 负载的响应中有 MDN 发出,EDI 确认就不会同步发出。在这种情况下,如果将确认路由到请求-响应接收端口的发送管道属性为选中状态,BizTalk Server 会忽略此属性。