最近在做一些EDI的项目。手头上有一个BizTalk 2006 R2和WebMethods7.1的环境。于是想试一下从BizTalk往WebMethods传送EDI。
试验场景:BizTalk从本地文件夹抓取一个EDI X12 810文件,然后把这个文件传送给WebMethods。WebMethods接到文件后传回一个ACK给BizTalk。
实验步骤:
1) 在BizTalk中建立Partner信息。
首先需要在BizTalk里面建立起一个Partner。由于只是简单的测试,所以接收方和放松方都是设置在一个Partner里面。
EDIHOME AS Sender
EDIHOME AS Receiver ISA
EDIHOME AS Receiver GS/ST
2) 在BizTalk中建立接收和发送端口。
首先要有一个接收EDI文件的Port和Location。
EDI Receive Location
然后要有一个SendPort。
由于WebMethods接收EDI时的http content type 是application/x12,类型,所以,需要新建一个Http Send Handle。
Http Send Handle
然后建立Http Send Port,并使用这个Sender Handle。
Http Send Port
同时为了接收WebMethods返回的ACK,还需要建立一个Http Receive Port。这个Receive Port是使用BizTalk的HTSHTTPReceive.dll建立的一个虚拟路径。
Http Receive PORT
3) 在BizTalk中绑定Partner和发送端口。
接下来是绑定EDI SenderPort和EDI Partner。
至此,BizTalk Server的配置就完成了。
4)在WebMethods中的TN里配置Partner信息。
首先需要一个Enterprice。
WM7 enterprice
然后需要一个Partner。
Partner BizTalk
5)在WebMethods中的TN里配置TPA。
TN TPA
6)好了,测试。
在BizTalk的接收位置放一个如下的txt文件,触发接收位置的操作。
ISA*00* *00* *01*EDISENDER1 *ZZ*EDIRECEIVER1 *070607*1555*U*00401*000000025*0*T*>~
GS*IN*EDISENDER1*EDIRECEIVER1*20070607*1555*25*X*004010~
ST*810*0025~
***EDI Data**
SE*56*0025~
GE*1*25~
IEA*1*000000025~
在WebMethods的TN里面可以看到如下信息:
Transaction Set
具体的接收的信息如下:
ISA*00* *00* *01*EDISENDER2 *01*EDIRECEIVER2 *101214*0231*U*00401*000000015*0*T*>~
GS*IN*EDISENDER2*EDIRECEIVER2*101214*023124*15*X*00401~ST*810*0014~
***EDI Data**
SE*56*0014~
GE*1*15~
IEA*1*000000015~
同时在BizTalk里面的文件夹里面有一个ACK文件:
至此测试成功。
虽然本实验没有对EDI做具体的处理,但是已经模拟了EDI处理的流程。后续可以在WebMethods里面或者在BizTalk添加各自的处理,就可以实现自己的业务逻辑了。
本次实验一开始是一直发送不成功,在WebMethods里面配置了N次也不行,而且一直报错说不识别文件内容,最后是修改了BizTalk的Http Send Handle的content-type之后才能识别出来。
BizTalk的Http的content-type默认是text/xml的,需要修改成application/x12.