BizTalk 2010给我们提供了成上千种EDI报文格式,但是有时我们在B2B之间传输报文时有很多自有报文格式,这时候要利用BizTalk实现EDI,就要先开发与交易文档相关的架构,定义了文档后,将贸易合作伙伴创建为BizTalk合作对象,然后配置合作伙伴的规范以确保正确处理和路由EDI报文。接下来,设置通过合作对象配置和 BizTalk 适配器的组合,来实现如何传送文档的细节。设置好解决方案后,即可使用 EDI 报告实时监控文档流。所有这些功能都是以 BizTalk 基础结构为基础的,并受益于 MessageBox、业务流程、端口和管道等所有标准组件。
我将介绍使用 BizTalk Server EDI 组件自定义EDI报文的几个重要功能,来说明架构创建、文档对应、EDI 传送和传输以及异常处理的各个方面。
开发EDI Schema
要了解 EDI Schema 开发,首先需要清楚文档结构本身的详细情况。对 EDI 文档最确切的描述是一个包含以下三部分的简单文本文件:消息头、消息体和脚注(不知道这样翻译是否大家能理解)。消息头定义文档的来源、目标受众、文档类型和一些日期信息。消息体包含赋予文档意义的所有业务信息。例如,以发票为例,详细信息包含明细项目、出售产品的说明、定价、数量和总额等信息。脚注包含关于详细信息行的摘要信息,如文档包含的总行数。
假设您要定义 A 公司和 X 公司之间的发票文档交换。下一步要创建 A 公司的 XML 文档的 XSD 表示法;此文档将在创建 EDI 实例时用作源文档。多数情况下,都不必修改默认架构实例。但在此示例中,假设 X 公司要求 N401(城市名)的最大长度为 10 个字符,而不是默认的 30 个字符。要更改长度,请单击 N401 节点并在属性窗口中找到“最大长度”值。在此处输入新值。这样可以确保当尝试通过此系统传递的文档包含 10 个以上的字符时引发 EDI 错误,指示该文档无效。在对应过程中,需要先将该字段截断,然后再将其对应到 EDI 架构。
EDI映射
假设 A 公司拥有发票的 XML 表示法,需要在传送之前对应到 EDI 标准。它还需要将所有发票的发票明细项目对应到 IT1 循环并将所对应的总数放在 CTT02 节点中。
对应之前,所有架构(无论是否为 EDI 格式)都需要进行定义并添加到解决方案中。A 公司具有 XML 版本的发票数据,需要在传输之前对应到 810 Invoice 格式。此 XML 数据必须具有关联的 BizTalk 架构,在此示例中,此架构如下所示。
定义架构后,您需要创建 BizTalk 对应。在此示例中,是通过对应将数据从 A 公司的发票信息的 XML 版本转换为标准的 EDI 810 Invoice 实例的。EDI 文档对应与任何其他类型的 BizTalk 对应类似,但 EDI 具有多个特有的复杂性。以发票为例,必须在 CTT01 节点中显示 IT1 节点中的所有明细项目的总数。仔细分析此示例,了解这种类型的对应有何独到之处。