`
zhangziyangup
  • 浏览: 1076601 次
文章分类
社区版块
存档分类
最新评论

BizTalk 2010 自定义EDI报文

 
阅读更多
EDI报文是一种数据标准,在实际的B2B项目中,EDI所占市场份额接近当前市场的90%,并且还在逐年增加,随着公司越发依赖EDI报文进行传输,构建可靠的、稳定的、易扩展的、直观的EDI 解决方案将是至关重要的。

在BizTalk 2006以及更早的版本中对EDI的支持是有限的,虽有有一些Adapter和Accelerator可以提供我们实现一些基础的EDI解决方案,但是他们的功能存在很大的限制,例如文档的验证方式。在BizTalk 2010中,对EDI功能的支持有了非常显著的提升,现在,它不仅允许验证大量的文档,还提供了许多传输文档的方式,包括实现企业级EDI时常用的所有报告功能。现在,BizTalk可以与许多增值网络(VAN)提供相同的服务级别,同时还具备包括通过业务流程开发业务工作流、访问业务规则、扩展的文档跟踪、管理状态等功能。

BizTalk 2010给我们提供了成上千种EDI报文格式,但是有时我们在B2B之间传输报文时有很多自有报文格式,这时候要利用BizTalk实现EDI,就要先开发与交易文档相关的架构,定义了文档后,将贸易合作伙伴创建为BizTalk合作对象,然后配置合作伙伴的规范以确保正确处理和路由EDI报文。接下来,设置通过合作对象配置和 BizTalk 适配器的组合,来实现如何传送文档的细节。设置好解决方案后,即可使用 EDI 报告实时监控文档流。所有这些功能都是以 BizTalk 基础结构为基础的,并受益于 MessageBox、业务流程、端口和管道等所有标准组件。

我将介绍使用 BizTalk Server EDI 组件自定义EDI报文的几个重要功能,来说明架构创建、文档对应、EDI 传送和传输以及异常处理的各个方面。

开发EDI Schema

要了解 EDI Schema 开发,首先需要清楚文档结构本身的详细情况。对 EDI 文档最确切的描述是一个包含以下三部分的简单文本文件:消息头、消息体和脚注(不知道这样翻译是否大家能理解)。消息头定义文档的来源、目标受众、文档类型和一些日期信息。消息体包含赋予文档意义的所有业务信息。例如,以发票为例,详细信息包含明细项目、出售产品的说明、定价、数量和总额等信息。脚注包含关于详细信息行的摘要信息,如文档包含的总行数。
EDI 文档将格式化成多个段,并且每行数据都包含许多已命名的段。这些段的格式和组成部分遵从 X12 以及行政、商业和运输业电子数据交换 (EDIFACT) 等标准。在 X12 文档中,ISA 和 GS 段视为消息头、GE 和 IEA 段对应于脚注、消息头和脚注之间的所有内容即为消息体。
X12 EDI报文(810 - Invoice)
架构开发的第一步是定义要交换的电子文档,并开发相应的架构。以发票为例,您需要首先向 BizTalk 解决方案添加一份默认的 810 Invoice 架构。架构模板位于 MicrosoftEdiXSDTemplates.exe 文件中的 \Program Files\Microsoft BizTalk Server 2010\XSD_Schema\EDI 目录下。运行可执行文件以提取模板,然后找到 X12_00401_810.xsd 文件并将其添加到 Visual Studio® 中的 BizTalk 解决方案中。此 XSD 提供了可作为 810 Invoice 组成部分的所有数据的超集。
假设您要定义 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 节点中的所有明细项目的总数。仔细分析此示例,了解这种类型的对应有何独到之处。
首先查看代表发票上明细项目的 IT1 重复节点。如下所示,出现了两种类型的对应:简单的源到目标对应(如 PRICE 到 IT104 的对应)和复杂对应(如 TYPE,需要确定是否将源中的明细项目复制到目标)。
贸易合作伙伴配置
在 BizTalk Server 中必须设置两个贸易合作伙伴,一个作为发送方,另一个作为接收方。创建的贸易合作伙伴是 BizTalk 中的合作对象,通过 BizTalk Server 管理控制台进行配置。贸易合作伙伴的配置包括许多设置,这可以让 BizTalk 判断哪些文档属于哪个合作伙伴。EDI 文档到达后,BizTalk 会将文档页眉中定义的信息(或者 Applicability Statement 2 或 AS2 信封中的信息)与针对贸易合作伙伴配置的信息进行比较,来找出匹配的文档和贸易合作伙伴。
例如,我们假定文档页眉中显示以下 ISA 段:

第六段 (ISA06) 的值为 BASECOMP12,第八段 (ISA08) 的值为 TRADPART1。请记住,段间使用星号 (*) 字符分隔。此处的第三段和第五段均为空。
贸易合作伙伴可以配置为交换发送方或接收方。在这种情况下,BizTalk 将根据合作对象的配置比较各段,并找出与设置为接收方的贸易合作伙伴 1 的配置相对应的值。由于文档已经有了匹配的合作对象,所以现在就可以针对与该贸易合作伙伴相关的架构来验证文档的其余部分了。判定为无效的文档会用一种方式处理,而有效的文档则会发送出去,交由其他 EDI 组件处理。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics