BizTalk开发系列(五) 属性字段
在根据消息内容进行路由的时候经常使用的是可分辨字段和属性字段。属性字段可以在各个 BizTalk Server 组件(包括管道和业务流程)中进行访问。属性字段还可用于消息路由。如果需要在上下文(而不是在业务流程)中访问升级的消息数据,必须创建一个或多个属性 架构来描述要升级的数据。
消息上下文中的每个属性均由以下三个部分构成:名称、命名空间和值。例如:
<Property Name="InterchangeID" Namespace=http://schemas.microsoft.com/BizTalk/2003/system-properties Value="{AC07BF30-2F1A-42B0-8390-191EF38BA839}"/>
现在我们来谈一下属性字段的使用,“属性字段”的方法升级属性需要创建属性架构。所有属性升级作都是通过“升级属性”对话框来完成。您可以通过使用消息架构中 Schema 节点的“升级属性”来访问该对话框。
1.创建属性架构
属性架构是一种与消息架构相关联的特殊架构。它用于将实例消息中的特定值升级到消息上下文中。属性升级提供了一种集中机制,通过该机制,您可以从实例消息 中请求所定义的关键信息,并使其可更方便地被负责对通过 BizTalk Server 的消息进行处理的 BizTalk Server 组件访问。
![]()
2.升级属性字段
在“升级属性”对话框中,确保已选中对话框右侧的“属性字段”选项卡。然后,确保相应的属性架构已包含在“属性字段”选项卡顶部的“属性架构列表”中。如果需要,请使用文件夹按钮通过“BizTalk 类型选取器”对话框来选择相应的属性架构。
接下来,展开对话框左侧的架构树中的节点选择您要升级为属性字段的“字段元素”节点或“字段属性”节点,然后单击“添加”。最后,使用“属性-字段字典”表的“属性”列中的下拉列表选择属性架构中与升级属性关联的“字段元素”节点。
![]()
3.属性字段的使用
设置完属性字段与架构元素或属性之间的关联之后,即可在通过访问消息的上下文属性访问或设置该属性的值。注意消息的架构与升级为属性字段的架构一致。
![]()
可以将属性架构中的“记录”节点升级为“字段元素”节点,但只有在“记录”节点的“内容类型”属性设置为 SimpleContent 的情况下才可进行此操作。
在一个架构中,可以对同一属性升级多次,只要所有这些升级都是在不同的根节点下进行即可。这是因为消息是根据单个根节点进行验证的,只有在该根节点下升级的属性才会在运行时进行评估。
升级为属性之后会添加两部分
![]()
4.测试属性字段及其在路由中的应用
输入的XML消息
<ns0:Root xmlns:ns0="http://MultiPartMsgTest.Sch_One2">
<Field1>Field1_0</Field1>
<Field2>Field2_0</Field2>
</ns0:Root>
在发送端口的筛选器中使用升级属性,用于路由消息。
![]()
在发送商口设定不同的输出文件名
![]()
验证消息处理
![]()
5.可分辨字段与属性字段的区别
下表概括出了属性字段与可分辨字段之间的区别,可如果需要更灵活的基于内容的路由可以采用属性字段,如果只是关键节点值的读取与赋值的话则可分辨字段比较合适。
|
属性 |
属性字段 |
可分辨字段 |
|
IsPromoted属性 |
True |
False |
|
大小限制 |
255 个字符 |
无限制 |
|
用于路由 |
是 |
否 |
|
用于跟踪 |
是 |
否 |
|
在业务流程中使用 |
是 |
是 |
|
需要属性架构 |
是 |
否 |
|
可通过管道和端口进行访问 |
是 |
否 |
参考资料《BizTalk Server 2006 Documentation》
BizTalk开发系列(五) 属性字段的更多相关文章
- BizTalk 开发系列(四十一) BizTalk 2010 BAM 安装手记
使用64位系统可以支持更大的内存,现在服务器基本上都使用64位系统.微软从Windows Server 2008 R2开始服务器版的操作系统也只支持64位了,不过对于像BizTalk这种“繁杂的东西” ...
- BizTalk开发系列(二十八) MSMQ 适配器
MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间 中的任一 ...
- BizTalk开发系列(二十二) 开发自定义Map Functoid
尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作,但仍可能会遇到需要其他方法的情况.<BizTalk开发系列 Map扩展开发>介绍了通过使用自定义 XSL ...
- BizTalk开发系列(十八) 使用信封拆分数据库消息
之前写了一篇的<BizTalk开发系列(十七) 信封架构(Envelop)> 是关于信封架构及其拆装原理的,都是理论性的内容.信封在BizTalk开发过程中最常用的应该是在读取SQL Se ...
- BizTalk开发系列(三十三)BizTalk之Excel终极解决方案
Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapte ...
- BizTalk开发系列(二十五) SQL Adapter
SQL Server 是.NET开发的首选数据库.当然开发BizTalk应用程序很多也离不了SQL Server.针对SQL Server的数据操作BizTalk 提供了SQL Adapter作为与数 ...
- BizTalk开发系列(十三) Schema设计之值约束
XML Schema 的作用是定义 XML 文档的合法构建模块.在开发过程中有时需要对XML文档做精确的约束.以保证XMl数据的准确性. 今天我们以一个班级Sample来讲探讨一下如何在开发BizTa ...
- BizTalk开发系列(十一) 在Orchestration中执行Pipeline
由于开发需要有时要在流程中执行Pipeline.比如从DB的某个字段中取消息的字符串并在流程中构造消息.该需要通过pipeline进行升级 属性字段,验证消息等处理.BizTalk架构已经开放了此接口 ...
- BizTalk开发系列(七) Hello World2
之前根据BizTalk的订阅原理,使用BizTalk管理控制台创建了第一个应用程序 Hello World.但是由于控制台的开发功能有限,绝大多数的BizTalk程序都是在集成开发环境Visual S ...
随机推荐
- JavaScript设计模式——前奏
Function.prototype.method = function(name,fn){ this.prototype[name] = fn; } var Anim = function(){ / ...
- Android 使用 LruCache 缓存图片
在你应用程序的 UI 界面加载一张图片是一件很简单的事情,但是当你需要在界面上加载一大堆图片的时候,情况就变得复杂起来.在很多情况下,(比如使用 ListView, GridView 或者 ViewP ...
- 对NLP的一些新认识
其实这是老板让上交的一份总结,贴出来,欢迎朋友们批评指正. 最近看了一部分关于NLP的几篇论文,其中大部分为神经网络实现, 从基本的HMM算法实现,到LSTM实现,有很多方法可以用来处理NLP任务中的 ...
- 判断密文加密类型hash-identifier
判断密文加密类型hash-identifier 在安全领域中,加密数据随处可见.而在这些数据中,重要的数据往往采用哈希算法进行加密.例如,Linux密码使用sha512,Windows密码采用LM ...
- 餐厅点餐系统app第二天
队友: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...
- 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量
Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...
- C#数组的声明方式
C#数组的五种声明方式 一.声明一个未经初始化的数组引用,以后可以把这引用初使化为一个数组实例 int[] intArray; intArray = new int[10]; 注:数组的引用必须以相同 ...
- BZOJ4584 : [Apio2016]赛艇
首先将值域离散化成$O(n)$个连续段. 设$f[i][j][k]$表示第$i$个学校派出的数量在第$j$个连续段,在第$j$个连续段一共有$k$个学校的方案数.用组合数以及前缀和转移即可. 时间复杂 ...
- BZOJ4504 : K个串
从左往右枚举右端点,用一棵线段树维护每个左端点的去重后的区间和. 那么对于$a[r]$,需要在$[pre[a[r]]+1,r]$里区间加上$a[r]$. 将线段树可持久化,并维护区间最大值,就可以在线 ...
- 最新版EJS的include函数已支持参数传递
最新版的express中partial函数已经被移除,使用include虽然可以实现同样的效果,但是代码看起来很不爽比如 1 <%-partial("user/home",{ ...