BizTalk Server 基于消息的基本数据交换(一) - 发送端口直接订阅接收端口
之间的文章里已经对BizTalk Server的基本机制进行了介绍,今天开始写几个Hello world程序。
首先,根据BizTalk最基本的订阅,发布机制。我们写一个最简单的文件交换:
0. 首先我们建立一个应用程序“Expense”。报销。后面我们的样例都会尽量使用这个应用程序。
1. 我们定义一个接收端口,接收一个文件。命名为:“FileReceivePort”,监视目录:“C:\\FileIn\”
2. 我们定义一个发送端口,并为发送端口建立订阅。订阅条件是,首先,消息的上下问属性中,必须有一个提升的属性,属性名:BTS.ReceivePortName (含义是,接收端口名称),其次这个属性的值必须为
“FileReceivePort”。所有满足这个条件的消息将被本发送端口获取。发送端口命名为“FileSendPort”。发送目标目录“C:\\FileOut\”
3. 定义完成后,我们编写一个样例XML文件,放入:“C:\\FileIn\”,该文件会被接收端口获取,接收端口获取文件之后,首先,自动删除该文件(防止重复获取),其次,将该文件送入消息数据库(MessageBox),即将该消息发布。
4. 消息数据库拿到了由接收端口获取的消息后,会自动把消息交付给消息的订阅者。对于我们的测试消息来说,订阅者就是名为“FileSendPort”的发送端口,即我们在步骤2中建立的发送端口。
5. 最终发送端口会将新产生的文件,放入指定目录“C:\\FileOut\”。
好的,按照上述步骤,开工。
首先打开BizTalk Server 管理控制台。
在“Applications”(应用程序)节点上点击右键->新建->应用程序。
在应用程序名处填入Expense后,点击OK。之后我们可以看到新的应用程序已经被建立了。我们展开这个应用程序。
下面我们首先建立接收端口。我们在Receive Ports节点上点击右键 –> New 新建 –> One way Receive Port 单向接收端口。
我们在新建端口的选项页面上填入相应参数。名称 name –> FileReceivePort
然后我们在左边的选项卡中选择“Receive Locations”接收位置。
我们点击窗口右侧的新建按钮 New…然后在弹出的选项卡中填写相应的参数。Name名称,我们填入:File Receive Location。Type传输类型,我们选择FILE。其他选项不变。
之后我们点击TYPE,传输类型右边的按钮“Configure…”
在FILE Transport Properties页面上填入属性,Receive Folder,选择为“C:\FileIn”目录。(如果不存在就创建)
一路点击确定OK(3次),回到管理控制台界面,选择查看接收端口Receive Ports。可以看到我们新建的接收端口信息。
这样我们的接收端口就建立好了。我们下面来建立发送端口。
在管理控制台界面中,找到Send Ports 发送端口,右键 –> 新建 New –> 静态单向发送端口 Static One-Way Send Port
随后弹出发送端口的设置界面。我们填入相应参数。名称Name,我们填入“FileSendPort”。TYPE 传输类型,我们选择FILE。
然后我们点击TYPE,传输类型右边的按钮“Configure…”配置。在弹出的界面中,我们为目标目录 Destination Folder 选择“C:\FileOut”(如果不存在就创建)
点击OK,确定,退回发送端口配置页面,这次在该界面左边的导航栏中选择“Filters” 筛选器。
在对话框右边,我们选择Property为“BTS.ReceivePortName”,选择Operator为“==”,在Value处填写“FileReceivePort”。
本步骤需要注意,我们就是在这里指定了发送端口的订阅条件
点击确定回到管理控制台界面,选择SendPorts我们看到我们刚刚建立的发送端口“FileSendPort”
这样我们的程序事实上已经开发完了。我们需要让程序运行起来,我们在我们新建的应用程序上右键 –> 运行 Start –> 运行 Start
进度条对话框消失,表示程序已经成功的运行起来了。
然后我们检查主机实例是否已经在运行了(默认是开机自动运行的)
我们在管理控制台找到:BizTalk 组 BizTalk Group -> 平台设置 Platform settings –> 主机实例 Host Instance
然后观察主机实例是否已经是运行状态,如果不是运行状态,手动启动主机实例。
然后我们在C盘根目录建立一个测试文件。我们可以新建一个记事本文件,在使用记事本或其他文本编辑工具编辑,我们填写:
并将文件保存为Expense.xml。
最后,我们把文件扔入“C:\\FileIn\”目录,并观察,很快文件消失了,就是被系统成功获取了。
我们转入“C:\\FileOut\”目录,可以看到我们经过BizTalk交换后的新文件已经产生了。他的文件名是一个随机产生的GUID。(这个文件名可以任意命名,比如使用原有文件名等等,由于时间关系,暂时不介绍。)
最后我们打开该文件,查看XML内容。
好的,整个实验程序就完成了。
总结一下,在本实验里,我们建立了一个最简单的BizTalk程序。实现了文件到文件的传输。我们实际定制了发送端口的订阅,体验了订阅与发送机制的实现方式。
好的,明天给大家进一步扩充本实例,我们建立一个基于属性架构的动态解析程序,可以根据报销数额的大小,将测试XML路由到不同的发送端口,从而发送至不同的文件目录。
今天就到这里。
欢迎大家讨论。完全原创,转帖请务必注明出处。