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属性名称。。

 

 

Ext.data.JsonReader的fields属性详解

 以下是部分代码。。主要说明的是convert和dateFamat函数reader : new Ext.data.JsonReader({      root: "kcInfoList",      ...
  • gabriel80
  • gabriel80
  • 2009年01月04日 20:20
  • 11556

Fields、Fieldvalues和Fieldbyname的区别

1.fields[i:integer]    Tfield   访问字段控件的相应列 ① fields[i]: i为字段的顺序,从0开始; ② fields[]相当于一个数组,按照数据表中各字段顺...
  • dongyue786
  • dongyue786
  • 2012年10月22日 14:10
  • 1559

SQL*LODER 中fields terminated by 什么意思

optionally enclosed by '"'   将数据文件中的数据字段含有的引号“ " ”去掉,如果没有这段话,将会把“ " ”和字符合在一起导入数据库表中。...
  • myflysun
  • myflysun
  • 2012年07月18日 11:01
  • 5659

yii2 model fields使用说明

原文转自  IT技术擎 有的时候我们想对用户提交的数据进行二次处理。这个时候我们就需要用到model层里面的fields这个方法了     public function fields() ...
  • zhengtao27
  • zhengtao27
  • 2015年11月16日 19:55
  • 2623

C# Field,Property,Attribute的区别

这几个词如果只看字面意思很有可能会混淆,我自己也是一直分不太清楚,因为翻译的问题,之前都是一知半解,今天专门查了查资料,整理了一下。 Attribute & Property 1. Ther...
  • wudidagou
  • wudidagou
  • 2014年01月16日 10:14
  • 1782

storm的Fields作用

之前一直没搞清楚Fields的作用,今天再看一个例子的时候突然脑洞大开,想通了!看得例子如下。 TransactionalTopologyBuilder builder = ne...
  • sjy886961
  • sjy886961
  • 2014年08月01日 21:21
  • 541

Poj - 3254 Corn Fields (状态压缩dp入门第一题(详解

题目大意:农夫有一块地,被划分为m行n列大小相等的格子,其中一些格子是可以放牧的(用1标记),农夫可以在这些格子里放牛,其他格子则不能放牛(用0标记),并且要求不可以使相邻格子都有牛。现在输入数据给出...
  • u011044871
  • u011044871
  • 2014年04月08日 11:38
  • 2776

Text Fields(文本框)

文本框 文本框允许用户在应用中输入文本。可以单行输入也可以多行输入。点击文本框会获得焦点并显示键盘。出了输入操作之外,文本框还支持其他操作,例如文本选择(剪切,复制,粘贴)和数据的自动完成。 你...
  • JiongBull
  • JiongBull
  • 2014年04月18日 13:34
  • 978

[USACO 2006 November Gold] 玉米地Corn Fields

题目描述   Farmer John新买了一块长方形的牧场,这块牧场被划分成M行N列(1   作为一个好奇的农场主,FJ想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择。当然,把...
  • Bill_Yang_2016
  • Bill_Yang_2016
  • 2017年01月22日 08:05
  • 239

SAP ABAP编程 零散知识_点滴记录

***************************************************************************************** DESCRIBE ...
  • qinyuezhan
  • qinyuezhan
  • 2014年09月18日 11:01
  • 957
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:biztalk中消息的Property fields和Distinguished fields
举报原因:
原因补充:

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