montaque

小碗喝酒,小口吃肉

博客园 首页 新随笔 联系 订阅 管理

Biztalk 可以做EAI,也可以做B2B。 做EAI的话,是企业内部的一个信息Hub或者总线。如果做B2B的话,则相当于企业对外的一个Gateway。不同的partner有不同的平台或者标准以及设置。所以biztalk除了做集成之外,还要去管理这些契约和元数据。

假定企业A使用EDI来跟不同的上下游做集成和信息交换。EDI经常会问几个问题?

  • 这家企业使用的是那个版本?EDI有好多版本。对应到Biztalk就是我收到这家企业的EDI之后,该用哪个Schema来解释
  • 使用X12还是EDIFact
  • 要不要处理double posting的问题。
  • Batch Inbound/outbound 处理。
  • 要不要ACK
  • 文件格式,换行时CR,还是CRLF等。

面对这个问题,Biztalk R2的EDI是通过一个新的Party识别机制来实现的。

每个Party都有具体的设定针对以上问题。Biztalk通过设别Party,从而应用该Party的设置。

我们看一下典型的EDI头。

ISA*00*          *00*          *01*Fedex          *ZZ*Montaque       *070607*1555*U*00401*000000025*0*T*>~

IS5-6事实上说sender是谁?比如*01*Fedex         

*ZZ*Montaque       * 则是说发给谁。 因为一家公司可能有不同的子公司。后面其实有00401 说明是什么版本。

Biztalk的Party识别就是基于这两个信息。首先看有没有一个party设置,完全匹配 Sender 和 receiver。

image

如果完全匹配,则使用该Party的设置。以上截图说明我们正好有个party叫Fedex。他的发送和接受完全匹配。设置其默认schema用来解析EDI。

一般来说一个party通常我们制定其Targetnamespace都一样。不同的文件,810还是850再做详细的剪裁。

然后如果Sender和Receiver不完全匹配。我们可能只指定Sender,Receiver为空。这时候适合一家公司下面有多个子公司,vendor发给你的时候,Biztalk作为Gateway忽略这些不同。

如果我们希望多个Sender来自不同的公司,使用一样的一组设置。那么可以设定QualifiedName

image

如果这些都没做,那么系统会默认使用Global Setting。

image

如何知道接收的消息所以那个Party呢? 一旦一个消息被解析为特定的一个party之后,该message会有一个PromotedProperty,叫做PartyName,比如下图所示。如果任何一个都没有被命中的话,则显示为Guestparty。

image

R2 EDI 很大程序上依赖这个party设置。包括AS2.  所以了解这个party解析算法很重要。

 

以上提到的是接受来自partner的EDI。 在party setting中称为Sender Setting。

如果是发送呢?

怎么知道该用哪个party的设置发送给Vendor?

这个正好反过来。你需要在系统中Promote PartyName,如果没有party的话,则会用Global的 Receiver Setting。

image

这里的Sender和Receiver是相对Biztalk 来说。 Sender 表示有个partner 发送消息给Biztalk。biztalk事实上是接受消息。这时候的IS5-8 是来识别Party。

Receiver表示有个partner需要加收Biztalk的消息。biztalk则是发消息给他。 这时候的IS5-8 是来制定EDI上的头。

posted on 2008-05-30 02:51  montaque  阅读(1649)  评论(0编辑  收藏  举报