之前写了一篇的《BizTalk开发系列(十七) 信封架构(Envelop)》 是关于信封架构及其拆装原理的,都是理论性的内容。信封在BizTalk开发过程中最常用的应该是在读取SQL Server 数据库的时候。一次性读取多条消息,提高了SQL Adapter对SQL Server的读取性能。今天就来做一下这个实例,增强对信封消息的理解。

  数据库采用的是SQL Server 2005示例数据库:AdventureWorks 通过select * from Production.Culture选择所有的Cluster信息。如下图所示:

创建表架构和信封架构

     创建BizTalk项目之后,根据生成架构向导生成数据库中表架构。在架构信息中的目标命名空间和文档根节点中依下图分别输入相应的值。

 在类型中选择SQL脚本,在脚本编辑窗口输入如下脚本(表示将表列名映射为架构中的元素):

select * from Production.Culture for xml auto,elements

 架构生成向导会生成架构文件,内容如下。同时也会产生一个声明了此类型的Orchestration,可以将此Orchestration删除。

 需要修改生成的Schema.将Production.Culture节点下的所有元素提升到根节点下。根节点修改为:Production.Culture。最后将子节点的Production.Culture删除。修改后的内容如下:

 修改了表架构,现在需要另外创建一个信封架构。信封架构设计需要注意几点:1. 命令空间跟表架构保持一致。2.根节点必须为:EnvelopRoot。当然这两点也不一定非得都遵从。如果你已经很清楚了信封的原理则应该知道为什么要这么做和如何根据需要进行修改。

 信封架构的创建比较简单。创建一个架构,目标命名空间跟表架构一致,信封属性设置为 Yes。将根节点名称修改为:EnvelopRoot。在根节点的属性中修改根节点的数据构造类型设置为:xs:anyType(注:anyType为 Schema中所有类型的基类,类似于C#中的System.Object)。在设置根节点BodyXpath的对话框中选择EnvelopRoot。

部署项目,创建接收端口和订阅发送端口

 两个Schema创建好之后就可以部署项目了。在部署项目之前需要设置程序集密钥,应用程序名称。部署项目之 后可以新建接收端口:ReceiveSQLRecords 参照下图配置SQL接收位置。注意Document Root Elemnt Name的值要与信封架构的根节点值一致。Document Target Namesapce值也要与信封,表架构的目标命名空间一致。接收管道选择系统内置的:XMLRecive

 新建发送端口,在发送端口的Filter选项中定义过滤规则为:BTS.ReceivePortName == ReceiveSQLRecords。

测试

启动BizTalk项目,在发送位置的文件夹会生成经过拆分的消息。由于BizTalk在读取数据之后没有对数据库的记录进行删除操作所以每次 BizTalk SQL Adapter轮询的时候SQL脚本都能取到消息。以至于不断的生成消息到目标文件夹中。需要关闭端口或应用程序。

总结

 通过架构拆分数据库记录是信封使用的经典案例。我们将接收管道改为:PassThruReceive。可以得到从数据库生成的原始消息,如下图。当然如果你有兴趣的话可以结合:《BizTalk开发系列(十七) 信封架构(Envelop)》分析一下拆装的过程。

BizTalk开发系列(十八) 使用信封拆分数据库消息的更多相关文章

  1. BizTalk开发系列(十二) Schema设计之Group与Order

    开发BizTalk项目的时候会先约定各系统之间往来的消息格式. 由于BizTalk内部唯一使用XML文档.因此消息的格式为XML Schema(XML Schema 用于描述 XML 文档的结构).虽 ...

  2. BizTalk开发系列(十九) BizTalk命名规范

    目前BizTalk项目的开发人员比较少,但是在开发过程中还是需要命名规范的约束.根据以往BizTalk项目的经验,整理了BizTalk命 名规范.包括:BizTalk Application, Sch ...

  3. BizTalk开发系列(十六) XML命名空间

    BizTalk开发过程中如果有对XML进行开发操作,比如在自定义代码里操作XML消息或者在Mapping的时候使用Xpath对XML进行操 作.则有机会遇到XML命名空间的问题.常见的是使用Xpath ...

  4. BizTalk开发系列(十五) Schema设计之Qualified 与Unqualified

    XML Schema中的命名空间前缀限定包括对元素(Element)或属性(Attribute)的限定,即常见的如 “<ns0:root>...</ns0:root>”之类的格 ...

  5. BizTalk开发系列(十四) XML空白字符(WhiteSpace)

    最近在做一个BizTalk项目,对XML文件的处理很复杂.本来是想找有没有方法可以一次性去除XML文件中节点和属性的值的空格.但是找了很久没有看到相关的方法.如果有知道该方法的麻烦跟我讲一下:cbcy ...

  6. BizTalk开发系列(十) ESB Guidance安装笔记

    ESB指导工具包(ESB Guidance)是一个运行于BizTalk Server 2006 R2之上的一个框架.详细信息访问ESB指导工具包社区网站 .源码下载 ESB Guidance的安装过程 ...

  7. BizTalk开发系列(二十八) MSMQ 适配器

    MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间 中的任一 ...

  8. Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十八】

    <Web 前端开发精华文章推荐>2013年第六期(总第十八期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...

  9. BizTalk开发系列(二十二) 开发自定义Map Functoid

    尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作,但仍可能会遇到需要其他方法的情况.<BizTalk开发系列 Map扩展开发>介绍了通过使用自定义 XSL ...

随机推荐

  1. junit单元测试中私有方法测试

    1.单元测试可以对系统逻辑进行每个单元模块的测试. 2.单元测试也可以作为回归测试的依据,可以避免升级完善功能时引入问题. 3.单元测试要求将代码写的更清晰,更易于测试. 4.有时单元测试需要测试私有 ...

  2. bean之间的关系:继承、依赖

     继承 这里说的继承和java的继承是不一样的,不是父类子类.但思想很相似,是父bean和子bean 1.父bean是一个实例时.它本身是一个完整的bean 2.父bean是模板,抽象bean,不能被 ...

  3. 疯狂java学习笔记之面向对象(五) - 封装、继承、多态

    一.封装: 封装的概念: - 合理的隐藏:隐藏不想被外界操作的Field.方法.构造器 - 合理的暴露:一般就是希望给别人调用的方法 e.g:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...

  4. Android 横屏切换竖屏Activity的生命周期(转)

    曾经遇到过一个面试题,让你写出横屏切换竖屏Activity的生命周期.现在给大家分析一下他切换时具体的生命周期是怎么样的:  1.新建一个Activity,并把各个生命周期打印出来  2.运行Acti ...

  5. Java线程并发控制基础知识

    微博上众神推荐今年4月刚刚出版的一本书,淘宝华黎撰写的<大型网站系统与Java中间件实践>,一线工程师的作品,实践出真知,果断要看. 前两章与<淘宝技术这十年>内容类似,基本是 ...

  6. 把文本框嵌入到form

    <form action="/submit-cat-photo"> <input type="text" placeholder=" ...

  7. ps让文字的颜色变成图片的颜色

    第一种: 把某张图片图层置于文字图层之上,右击图片图层-->选择"创建剪贴蒙版"即可.第二种:把某张图片图层置于文字图层之上,并选择图片图层,按住Ctrl键,点击文字图层,载 ...

  8. EF框架step by step(1)—Database-First

    ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,现已经包含在 Visual Studio 2008 S ...

  9. 百度地图API使用记录

    用户数据图层的总教程: 就是把用户数据存到LBS云里面,应用从云里面读数据 http://developer.baidu.com/map/jsdevelop-9.htm 上传数据的地方: http:/ ...

  10. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 C. Colder-Hotter

    C. Colder-Hotter time limit per test 1 second memory limit per test 512 megabytes input standard inp ...