使用BizTalk实现RosettaNet B2B So Easy

最近完成了一个vmi-hub的B2B项目,使用Rosettanet 2.0的标准与一家品牌商,OEM,供应商实现B2B。一共交换4个报文,4B2,3B2,4B2 POD,4C1,说白了就是收发存这些数据;

项目环境

BizTalk 2009 Accelerator for RosettaNet,并没有使用最新的BizTalk版本因为客户已经在使用了,所以就在现有的环境下进行。

下面说一下如何配置RosettaNet

  1. 交换证书

RosettaNet B2B中证书的用途和导入就不在这里详细说了,建议服务器端证书(IIS的SSL证书)和解密/验签的使用同一本证书

  1. 配置partner

配置Partner/Home Organization,这部分配置也非常简介,关键是Name和GBI 两个栏位填写正确就可以了

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

  1. 配置Process Configuration

定义每个pip的处理规则。以下我们用需要了3b2,4B2,4C1,0A1

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

每个pip代码都是有标准的,第一次做项目的时候你可能不知道如何填写

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

以上内容都可以通过https://www.rosettanet.org/RosettaNet-Standards/Standards-Library/PIP-Directory 可以查到,都是标准定义

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

  1. 配置Agreement

OA1 agreement的做作用是当处理这个pip流程时如果错误就会返回给对方一个0A1报文

Home role 如果选择Initiator表示做为发送方,Responder表示接收方

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

Ports 都填写对方的URL

其它的基本默认就可以了

以上配置还是非常简单的

流程如何调用RosettaNet API

在流程中只需要执行SubmitRNIF.SubmitMessage这个方法就可以了,但是在执行这个方法前必须先执行以下代码,在XML字符串的头部加上已下定义,应为Rosettanet的报文是通过dtd验证的,所以必须要加

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

RosettaNet Troubleshooting

  1. UNP.SCON.VALERR:A failure occurred while validating the service content.

Error Number:2005

Description:A failure occurred while validating the service content.

验证Playload内容是否和dtd的定义一致,RosettaNet 加速器是严格的执行XML Schema验证只要有一个节点不符合就会报以上错误

  1. UNP.SHDR.VALERR : A failure occurred while validating the service header.

请检查Process Configuration配置和消息的playload/serviceHeade 是否一致

  1. 400 Bad Request OR Time out

双方检查证书是否导入正确,特别是对于自发布的证书,对方需要导入根证书到受信任的目录下,如果对方是linux或其他OS,则需要根据相应的操作

  1. Error code:UNP.MESG.DCRYPTERR

检查配置 Is Persistent Confidentiality Required 一般选None就可以了,不排除对方会选Palyload

还有一种情况是 acknowledgement of receipt\Non-Repudiation Required 也需要双方定义

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

运维工具

测试阶段免不了报文重发,做了一个报文重发的工具,可以选择发送错误报文再次重发,在原来LOB Application的源代码基础上加了一个选择发送失败的报文再次重发

源代码提供下载

使用BizTalk实现RosettaNet B2B So Easy-LMLPHP

希望对初次使用BizTalk做Rosettanet B2B 项目的能提供一些帮助,当然有问题也可以留言哦

04-16 10:57