biztalk中消息的Property fields和Distinguished fields

原创 2007年09月28日 14:18:00

(2007年7月21日更新)
   消息的是由一个或多个部分的消息内容和一个属性集组成,这个属性集称为消息上下文属性,这些属性的值是从消息本身提取或不来自消息本身但与消息本身相关的值。上下文属性分为两类,
Property fieldsDistinguished fields

 

一.    Property fields

Property fields必须有一个单独的属性架构定义属性,定义的每个属性都有一个GUID来标识这个属性。

Property fields的有两种类型,一种从是基类Microsoft.XLANGs.BaseTypes.MessageContextPropertyBase继承的属性,这类属性的属性值不是直接从消息中来的,但是跟这个消息相关的一些属性,比如接收此消息的接收位置,适配器类型以及其他系统(与适配器相关)属性等等,这类属性在接收端口的适配器中被升级到消息的上下文中。Biztalk本身预定义了许多属性架构,称为系统属性,这些系统属性都是MessageContextPropertyBase类型的属性。

另一种是从基类Microsoft.XLANGs.BaseTypes.MessageDataPropertyBase继承的属性,这种属性的属性值直接来自消息本身,开发者使用属性架构定义属性,在消息架构中指定使用这个属性架构,并通过xpath指定消息架构中的某个元素对应属性架构中定义的属性。在接收管道中,xml拆装器匹配消息类型,并根据匹配到的消息的schema设置的promotion properties升级用户定义的属性。在系统提供的拆装器中只有xml拆装器具有升级消息属性的功能,如果使用定制拆装器,要用户自己实现属性升级的功能。如果不是使用xml拆装器,或者使用定制拆装器而没有实现属性升级功能的,schema中设置的升级属性将不会被升级到上下文中。

开发者也可以在自定义的属性架构中定义MessageContextPropertyBase类型的属性。自定义的属性架构中的属性类型默认为MessageDataPropertyBase

Property fields属性既可以是用Microsoft.BizTalk.Message.Interop. IbaseMessageContext接口的Write方法写入到消息上下文,这时属性的状态是not promoted,未升级。也可以用Microsoft.BizTalk.Message.Interop. IbaseMessageContext接口的Promote方法升级到消息上下文,这时属性的状态是promoted,已升级。

这说明Property fields属性在消息上下文中并不都是升级的属性,只有已升级的属性才能用于路由消息。

Property fields属性有一个名称空间和一个属性名来标识,名称空间和属性名都是在属性架构中被定义。

Property fields属性的值一旦被升级到上下文,将被保存在消息的上下文中,当这些属性被访问时,直接在消息上下文中获取属性值。修改Property fields属性时同时会修改上下文中保存的值和实际消息中跟此属性对应的元素(在属性是从消息本身升级的时候)

Property fields属性的值有长度限制,限制在255个字符。

Property fields属性(已升级的属性)可以用来据以路由消息,跟踪消息,可以在pipeline、端口和orchestration中被访问。

消息路由的时候,首先把这个消息上下文中的Property fields属性写入到messageboxMessageProps 表中,这个表是这样的结构:

[uidMessageID ]

uniqueidentifier

消息的uid

uidPropID

uniqueidentifier

消息的一个属性,用属性的guid来标识

vtPropValue

sql_variant

这个属性的值

用一系列的消息属性GUID – 属性值 来表示这个消息。然后根据这个表跟订阅的订阅条件进行匹配(订阅条件是由属性GUID、订阅谓词和属性值组成),如果消息的这些属性匹配到相关订阅,则消息被发送到订阅这个消息的服务实例。

Property fields属性的访问方法:

MyMessage(PropertySchema.Property)

Property fields属性是在消息后面的圆括号中以属性架构的名称空间和属性名称构成的属性标识来进行访问。

二.    Distinguished fields

Distinguished fields不需要有单独的属性架构来定义,Distinguished fields属性其实就是在一个消息schema中用xpath标识出需要提取的消息元素的位置,Distinguished fields相当于这个元素的xpath的别名。当需要访问Distinguished fields属性时,Distinguished fields根据这个属性对应的xpath,即时的到消息中读取值返回。

Distinguished fields属性使用公共的名称空间:http://schemas.microsoft.com/BizTalk/2003/btsDistinguishedFields

Distinguished fields属性只可以是用Microsoft.BizTalk.Message.Interop. IbaseMessageContext接口的Write方法写入到消息上下文,这时属性的状态是not promoted,未升级。Distinguished fields属性在消息上下文中是不能被升级的。

Distinguished fields属性的值不会保存到消息上下文中,所有属性值长度没有限制。

Distinguished fields属性不能用于路由消息的条件,不能用于消息跟踪,只能在orchestration中被访问。

Distinguished fields属性的访问方法:

MyMessage.MyRecord.MySubrecord.MyDistinguishedField

是由消息后面跟子记录(可以有多层子记录),最后到达设置的Distinguished fields属性名称。。

  

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java中如何获得SuperClass中的private fields

前些日子在用Annotation的时候,发现了一个问题,就是使用下面的代码可以获取到当前类中的Fields,但是不能得到superclass中的fields。Class类是Reflection API...

poj 2226 Muddy Fields

Day 4 然后今天是马神~~,讲了第三遍【?】的图论,然后是网络流,再然后是输的分治【【这个完全不会写】】啊啊啊然后这是一道 最小覆盖的题。原题: poj 2226 orspoj【但是多组数据...

fields奖获得者

  • 2010-05-06 20:04
  • 141KB
  • 下载

poj2411 Corn Fields(状态压缩)

Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13566   A...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)