Adapter(适配器)是Biztalk外部信息交互的接口。在前一章中我们已经简单的介绍了Biztalk的消息流转机制,如下图
其中标有的Receive Port以及Send Port字样的模块中的adapter我们统称为Adapter。
在收取端,adapter负责从固定的收取位置读取消息头,并将消息原封不动的推送至管道。
在发送端,Adapter负责从管道中取得符合关联条件的消息,发送到目标环境。
关于Adapter的自定义开发。我会在后面的后面的章节中覆盖到。
下面是Port的介绍。
在每一个Receive Port中,都必须包含以下几个要素:
1. Receive Locations
2. inbound Maps(单双向port), outbound Maps(双向接口)
3. Tracking
如下图菜单:
Receive Location: 帮助用户制定的接受位置,接受方式,接受管道(后续介绍),并且可定义服务启用时间段(Schedule),服务窗口时间定义(Service Windows).
Inbound Maps: 用户可以使用Visual Studio 2005进行此类开发。将于后续介绍。
Tracking: 通过打开Tracking选项,对相应流程进行跟踪。
在每一个Send Port中,都必须包含以下几个要素:
1. 发送位置,发送方式,发送管道(后续介绍),
2. 失败后重新尝试次数设置,服务窗口时间定义(Service Windows)-- 只有静态发送端口有此选项。
3. Backup Transport
4. inbound Maps(单双向port), outbound Maps(双向接口)
5. Filters
6. Certificate
7. Tracking
如下图菜单:
(一) Receive Port配置
我们以单向的接受端口作为例子,
1. 打开Biztalk管理员控制面板,找到相应的工程。选择Receive Ports,在空白处右单击。选择单向接受端口
2. 我们将看到
3. 填写Name后切换到Reveive Locations选项,点击新建。
4. 这里我们可以看到Type, Receive Handler, 以及接受管道选项。
5. 选择相应的接受种类。我们以File为例,点击Configure
6. 选定相应的文件接受目录,文件扩展名。
7. 在Authentication选项卡中填写当Host无法访问网络共享文件夹时需要制定的用户名密码。
8. 在Batching中填写相应的每次Batch处理的消息总数和最大Batch处理字符大小后点击确认。我们的Type就已经设置完成了。
9. 回到主选项卡中选取相应的管道。
10. 在schedule中设置开始结束时间,或者启动Service window。点击确认。我们的第一个简单的receive location就设置完成了。
(二) Send Port配置
同上,选择相应发送类型,点击Configure后进行简单配置,我这里就不浪费大家时间了。但必须要注意需要在SendPort的Filters中选择 BTS.ReceivePortName == ReceivePort1(前面定义的接受端口名)的条件,进行消息的接收端口订阅。这样消息才能在Messagebox中找到订阅的Send端口从而被推送。
到目前为止,我们的第一个就已经制作完成了。
(三) 启动服务
1. 在Receive Locations中右单击刚才新建的Receive Port后,选择Enable
2. 在Send Ports中右单击刚才新建的Send Port后,选择Start
测试:
1. 我们先制作如下XML,并保存在本地
<DateTime>
<Date>
2011-1-1
</Date>
<Time>
10:10:10
</Time>
</DateTime>
2. 将上述XML复制到Receive Port所绑定的文件夹中。
3. 稍等片刻,我们会看到上述XML文件消失了。
4. 转到与Send Port绑定文件夹
5. 我们可以看到该文件被Biztalk转发了。
总结:
当此XML文件被放置到Receive Port所绑定的文件夹中时,Biztalk将此文件中的信息转化为消息,发送至MessageBox。由于我们没有添加任何的中间处理过程,Send port从messagebox中直接获取到该消息后,进行转发。
从上述例子我们可以很明确的看到Biztalk的作用:如果我们把发送端与接受端2头都认为是不同的系统,即使我们是以文件的形式,biztalk还是可以将消息从一个系统转发到另外一个系统。这样完全避免了我们为多个系统分别开发不同数量,不同类型的数据接口麻烦。我们可以使用biztalk很快的去开发,管理此类问题。因此,biztalk完全可以成为企业级的数据总线。而无须传统的网状开发。