BizTalk开发系列(十八) 使用信封拆分数据库消息

  之前写了一篇的《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)》分析一下拆装的过程。

时间: 2024-11-05 06:29:19

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

S3C2416裸机开发系列十八_音频驱动实现(1)

S3C2416裸机开发系列十八 音频驱动实现(1) 象棋小子    1048272975 在消费电子产品中,往往都会用到音频系统来播放音乐.进行通话等多媒体应用,此外,对于一些需语音提示的产品,音频部分都是不可或缺的功能.笔者此处就s3c2416的音频驱动实现作一个简单的介绍. 1. IIS音频总线 s3c2416支持IIS.PCM.AC97这三种音频接口,此处只分析IIS音频接口.IIS接口(Inter-IC Sound)在20世纪80年代首先被飞利浦公司用于消费音频,为数字音频设备之间的音频

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

开发BizTalk项目的时候会先约定各系统之间往来的消息格式. 由于BizTalk内部唯一使用XML文档.因此消息的格式为XML Schema(XML Schema 用于描述 XML 文档的结构).虽然BizTalk提供了对于XML消息的验证功能.但是往往在BizTalk Schema设计器设计Schema的时候对于Group的用途不是很在意.今天我们来了解一下它的作用,希望对于设计灵活的Schema有点帮助. 首先,我们来了解一下Group的概念,在W3C的定义中. Group是用于定义在复杂

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

目前BizTalk项目的开发人员比较少,但是在开发过程中还是需要命名规范的约束.根据以往BizTalk项目的经验,整理了BizTalk命 名规范.包括:BizTalk Application, Schema, Map, Pipeline, Orchestration Logic Port, Physical Port等.并提供了相关的示例方便大家参考. <BizTalk命名规范> 通用: 项目中能用英文单词的用单词,否则用拼音. BizTalk项目中的Schema , Map, Orchest

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

BizTalk开发过程中如果有对XML进行开发操作,比如在自定义代码里操作XML消息或者在Mapping的时候使用Xpath对XML进行操 作.则有机会遇到XML命名空间的问题.常见的是使用Xpath选取节点的时候不知道要不要加上命名空间前缀,或者是什么时候该加什么时候不该加.为此, 做一个Sample来校验一下XML命名空间在XML操作过程中的影响. 名称空间是W3C推荐标准提供的一种统一命名XML文档中的元素和属性的机制.使用名称空间可以明确标识和组合XML文档中来自不同标记词汇表的元素和属

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

ESB指导工具包(ESB Guidance)是一个运行于BizTalk Server 2006 R2之上的一个框架.详细信息访问ESB指导工具包社区网站 .源码下载 ESB Guidance的安装过程非常复杂牵涉到的问题也是很多方面的.我也是装了数次之后才能成功.以下是安装时的笔记,安装时主要参照ESB Guidance的帮助文档,如果遇到问题可以查此笔记. 1. 安装UDDI不能选择SSL 2. DundasChart 组件运行问题(安装ESB Management Portal需要安装此组件

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

XML Schema中的命名空间前缀限定包括对元素(Element)或属性(Attribute)的限定,即常见的如 “<ns0:root>...</ns0:root>”之类的格式.一般情况下在BizTalk Schema编辑器中设置架构的属性 elementFormDefault /AttributeFormDefault 在该 schema 的目标命名空间中声明的元素的形式.该值必须是下列字符串之一: "qualified" 或 "unqualifi

Cocos2d-x 3.x 开发(十八)10行代码看自动Batch,10行代码看自动剔除

1.概述 在游戏的运行过程中,图形的绘制是非常大的开销.对于良莠不齐的Android手机市场,绘制优化较好的游戏,可以在更多的手机上运行,因此也是优化的重中之重.图形方面的优化主要体现在减少GUP的绘制次数上.这里我们分别从自动优化渲染批次和绘制剔除两个方面来看新版本在绘制上的优化. 2.自动batch 在Cocos2d-x 3.x中,抛弃了先前手动编写BatchNode,采用自动管理的方式.说起BatchNode,就难免涉及到显卡底层的绘制原理.简单的说,每提交一条绘制指令到显卡都会产生消耗,

从零开始学ios开发(十八):Storyboards(下)

这篇我们完成Storyboards的最后一个例子,之前的例子中没有view之间的切换,这篇加上这个功能,使Storyboards的功能完整呈现.在Storyboards中负责view切换的东西叫做“segue”,只需对它进行简单的设置即可,一切都是傻瓜式的,无需繁琐的代码.好了,开始我们的例子吧. 1)Create a Simple Storyboard创建一个project,左边选择Application,右边选择Empty Application template(我们这里不使用Single

S3C2416裸机开发系列十五_GCC下uCOS的移植(1)

S3C2416裸机开发系列十五 GCC下uCOS的移植(1) 象棋小子    1048272975 操作系统是用来管理系统硬件.软件及数据资源,控制程序运行,并为其它应用软件提供支持的一种系统软件.根据不同的种类,又可分为实时操作系统.桌面操作系统.服务器操作系统等.对于一些小型的应用,对系统实时性要求高,硬件资源有限等的情况下,应尽量避免使用复杂庞大的操作系统(如Linux),使用小型的实时操作系统(如uCOS)更能满足应用的需求.笔者此处就uCOS-II的移植作一个简单的介绍. 1. 代码准