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。

EDI Party Resolution in Biztalk R2

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

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

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

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

EDI Party Resolution in Biztalk R2

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

EDI Party Resolution in Biztalk R2

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

EDI Party Resolution in Biztalk R2

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

 

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

如果是发送呢?

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

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

EDI Party Resolution in Biztalk R2

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

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

相关文章:

  • 2021-12-30
  • 2021-06-09
  • 2022-02-07
  • 2021-09-24
  • 2021-06-19
  • 2021-10-19
  • 2021-10-28
  • 2022-12-23
猜你喜欢
  • 2022-02-14
  • 2022-03-08
  • 2022-01-03
  • 2022-02-17
  • 2022-12-23
  • 2021-06-26
相关资源
相似解决方案