技术开发 频道

Biztalk实例之分割SQL记录集

【IT168技术文档】

    从SQL Server中获取数据一文介绍了如何从SQL Server数据库中获取数据。不过,有时候我们想把获取的记录集分开,每一个记录输出一个XML文件。在本文中,介绍如何通过Biztalk提供的Envelope实现此功能。

    要实现此功能,需要完成如下任务:

    一、创建一个空的BizTalk项目

    1. 打开Visual Studio .Net 2003,创建一个新项目,选择项目类型为BizTalk项目,模板为空的BizTalk Server项目,输入名称为BiztalkSQL1。

    二、创建一个信封构架

    2. 选择BiztalkSQL1,为其添加一个构架SQLEnvelope.xsd。
    3. 选择<Schema>节点,设置信封属性为是,设置Target Namespace为http://SchemaTargetNamespace。
    4. 选择Root节点,设置Node Name为SQLEnvelope,选择正文 XPath后的...按钮,弹出一个正文XPath窗口,单击确定按钮,将会为正文 XPath设置属性。
    5. 在构架树中选择SQLEnvelope节点,为其添加一个任何元素子节点。
    6. 设置<Any>节点的Namespace属性为##any,设置Process Contents属性为Lax。

    三、创建一个记录构架

    7. 选择BiztalkSQL1,为其添加生成的项,选择添加适配器,打开添加适配器向导。
    8. 选择适配器页面中选择SQL,单击下一步。
    9. 指定架构的数据源时,设置localhost的Northwind数据库,使用合适的数据库身份认证方式,单击下一步。
    10.在架构信息中设置目标命名空间为http://SchemaTargetNamespace,选择端口类型为接收端口,文档根元素名称设置为Categories。
    11.选择语句类型为Select语句,单击下一步。
    12.输入SQL脚本查询所要处理的数据,此处选择Categories表,输出该表所有字段,并且使用xml auto,elements方式其语句为:select * from Categories for xml auto, elements
    13.单击下一步,单击完成。
    14.展开生成的SQLService.xsd的构架树,将里层的Categories中的四个节点移到外层的Categories下面,并将里层的Categories节点删除。设置Categories节点的Group Max Occurs和Group Min Occurs属性为1。

    四、编译和布署BizTalk项目

    15.在解决方案资源管理器中将BizTalk 业务流程.odx文件删除。
    16.生成解决方案。
    17.为BiztalkSQL1项目设置程序密钥文件,具体步骤可参见Biztalk 排错之 需要强名称程序集一文。 
    18.布署解决方案。

    五、创建接收端口和接收位置

    19.创建SQLReceivePort单向接收端口。
    20.为SQLReceivePort添加SQLReceivePosition接收位置。
    21.设置传输类型为SQL,选择URI后的...按钮,打开SQL传输属性窗口。
    22.设置数据库连接字符串,使用localhost主机Northwind数据库。
    23.设置SQL命令为BiztalkSQL1项目的SQLService架构,文档根元素名称和文档目标命名空间将自动赋值。
    24.在接收位置属性-配置-常规中设置接收处理程序为BizTalkServerApplication,设置接收管道为
Microsoft.BizTalk.DefaultPipelines.XMLReceive。
    5.单击确定按钮,关闭接收位置属性-配置-常规窗口。

    六、创建发送端口

    26.创建一个发送端口SQLSendPort。
    27.在配置\传输\主要中设置传输类型为FILE,设置地址为c:\out\%MessageID%.xml。
    28.在配置\发送中设置发送管道为Microsoft.BizTalk.DefaultPipelines.PassThruTransmit。
    29.在配置\筛选器和映射\筛选器中设置BTS.ReceivePortName == SQLReceivePort。

    七、启动端口测试 

    30.选择SQLReceivePosition,单击右键选择启用菜单。
    31.选择SQLSendPort,单击右键选择启动菜单。
    32.半分钟后,将会在c:\out文件夹下发现Biztalk生成的一些xml文件,其内容格式如下:

<Categories mlns="http://SchemaTargetNamespace"> <CategoryID>1</CategoryID> <CategoryName>Beverages</CategoryName> <Description>Soft drinks, coffees, teas, beers, and ales</Description> <Picture>dbobject/Categories[@CategoryID='1']/@Picture</Picture> </Categories>

    33.出现xml文件后,停止接收位置和发送端口,否则会在c:\out文件夹下不停地生成xml文件。

    总结:

    在本实例中,实例了一个SQL接收适配器,一个文件发送适配器,两个构架文件,实现了SQL记录集的拆分。

0
相关文章