BizTalk -->

by muyanpeng

导航

BizTalk 使用Sql Adapter拆分结果集

Posted on 2007-10-30 13:27  穆彦鹏  阅读(811)  评论(5编辑  收藏  举报


在我们实际做BizTalk项目的时候,有的时候需要将一个大的数据集里的数据拆分成单条的方便我们处理,在有这样的需求的时候办法有两个:
1.使用SQL Adapter拆分结果集合
2.在流程中使用循环遍历结果集

在这篇文章里要讨论的是使用SQL Adapter拆分结果集
首先建立一个BizTalk的工程:


然后我们选用Sql Adapter生成向导:
1.数据库选择: BizTalkMgmtDb
2.命名空间:   http://DisassembleResults
3.Port Type: Receive Port
4.root element name:  Root
5.Select the type of statement:Select Satatement
6.Sql script:select * from dbo.adm_SendHandler for xml auto, elements(这里注意后面的 for xml auto, elements)

点击下一步 直至完成向导

做到这里 我们有了一个 SQLService.xsd 文件 和一个 流程文件

如下操作:
1.在解决方案资源管理器中,右键单击“DisassembleResults”项目,指向“添加”,然后单击“添加新项目”。
2.在“添加新项目 - DisassembleResults”对话框中,选择“架构”,在“名称”框中,键入 CategoriesEnvelope.xsd,然后单击“打开”。
3.选中"<Schema>" 在属性里 Envelope 选择 "YES" 设置信封 NameSpace:http://DisassembleResults
4.Root 节点名字不变 Body Xpath :/*[local-name()='Root' and namespace-uri()='http://DisassembleResults']
5.右键"Root" --> insert --> Any Element  
    在<any>上设置:
    namespace : ##any 
    process contents: Lax
6.双击SQLService.xsd 并将dbo.adm_SendHandler 节点下的 所有元素拖拽到Root下
7.将Root节点重命名为:dbo.adm_SendHandler
    将“Group Max Occurs”属性设置为 1
    将“Group Min Occurs”属性设置为 1。
保存项目,并将没有用到的流程删除。

关联*.snk文件 部署项目  。
(为项目创建强密钥名称 单击“开始”,依次指向“程序”、“Microsoft Visual Studio 2005”、“Visual Studio 工具”,然后单击“Visual Studio 2005 命令提示”。 
    1.在命令提示符下,浏览到要在其中创建强密钥名的 DisassembleResults 项目目录。
    2.在命令提示符下,键入 sn -k DisassembleResults.snk,然后按 ENTER。 
    3.在命令行上将显示确认消息“密钥对被写入 DisassembleResults.snk”。
    4.通过以下步骤将新的 .snk 文件与程序集相关联:
        在解决方案资源管理器中,右键单击“DisassembleResults”项目,然后单击“属性”。
        单击展开“通用属性”,然后单击选择“程序集”。
        单击选择“DisassembleResults 属性页”对话框右窗格中的“程序集密钥文件”。
        单击省略号(“…”)按钮以显示“程序集密钥文件”对话框,浏览到“DisassembleResults.snk”,然后单击“确定
)



项目部署成功后 , 进行如下配置:
1.建立receive port 1 建立 Receive Location1
    adapter : sql adapter 
    管道 :Microsoft.BizTalk.DefaultPipelines.XMLReceive
    adapter 配置:
   

点    OK  完成receive port的设置

2.建立Send Port 
    选用FILE Adapter 并设置输出的文件位置 
    管道 :Microsoft.BizTalk.DefaultPipelines.XMLReceive
    Filters:BTS.ReceivePortName == ReceivePort1
点    OK  完成Send port的设置    


启动接收端口和发送端口 测试:




完成消息拆分 ;)

工程文件