升级属性
提升属性涉及将架构中的 Field Element 或 Field Attribute 节点提升为 可分辨字段 或 属性字段。 如果 Record 节点具有简单内容 (“记录”节点的“内容类型”属性设置为 SimpleContent) ,则还可以将“记录”节点提升为“属性字段”。 本部分提供将节点提升为 可分辨字段 或 属性字段的分步说明。
若要将简单内容) 、Field Element 或 Field Attribute 节点提升为属性字段的 Record (,可以先定义称为属性架构的特殊架构类型。 属性架构定义一组非结构化的 Field 元素节点,可在其中使用简单内容) 、Field Element 或 Field Attribute 节点提升 Record (。 有关创建属性架构的分步说明,请参阅 如何创建属性架构。
或者,可以使用 “快速升级 ”功能,每当使用简单内容) 节点提升新的 Field 元素、 字段属性或 记录 (时,该功能都会自动创建和更新单个属性架构。
注意
可以将字段提升为 可分辨字段 和 属性字段。
注意
快速升级功能通过插入具有升级节点名称的新属性来修改属性架构。
重要
升级字段之后,请不要在架构中移动或重命名该字段。 如果您移动或重命名某一架构字段,BizTalk 编辑器并不会更新定义升级字段的位置的 XPath。
XSD 和 CLR 数据类型
在某些情况下(例如在属性升级中),XSD 数据类型将升级到公共语言运行时 (CLR) 数据类型。 下表显示了可升级的 XSD 数据类型以及相应的 CLR 数据类型。
XSD 数据类型 | CLR 数据类型 |
---|---|
anyURI | 字符串 |
布尔 | 布尔 |
Byte | sbyte |
Date | DateTime |
dateTime | DateTime |
Decimal | 小数 |
Double | Double |
ENTITY | 字符串 |
Float | Single |
gDay | DateTime |
gMonth | DateTime |
gMonthDay | DateTime |
gYear | DateTime |
gYearMonth | DateTime |
ID | String |
IDREF | 字符串 |
int | Int32 |
Integer | 小数 |
语言 | 字符串 |
名称 | String |
NCName | 字符串 |
negativeInteger | 小数 |
NMTOKEN | 字符串 |
nonNegativeInteger | 小数 |
nonPositiveInteger | 小数 |
normalizedString | 字符串 |
NOTATION | 字符串 |
positiveInteger | 小数 |
QName | 字符串 |
Short | Int16 |
字符串 | 字符串 |
时间 | DateTime |
标记 | 字符串 |
unsignedByte | Byte |
unsignedInt | UInt32 |
unsignedShort | UInt16 |
注意
base64Binary、duration、ENTITES、hexBinary、IDREFS、long、NMTOKENS 和 unsignedLong 的 XSD 数据类型不支持升级。
对升级属性的限制
升级属性时,请考虑以下事项:
升级属性的长度限制在 256 个字符之内,而写入属性则没有长度上的限制。
升级属性用于消息路由,并由于有关比较和存储效率的原因,对升级属性的大小有所限制。 尽管对写入属性的大小没有硬性限制,但如果在上下文中使用过大的值,也会对性能造成影响,因为这些值仍必须与消息一起进行处理和传递。 可分辨字段便是写入属性的例子。
记录节点永远不能提升为 可分辨字段。
升级属性仅限于非重复元素/特性。
不要将属于同一根节点的字段升级到相同属性。 此类升级会导致编译或部署错误。
在消息上下文内,某些属性因为没有升级而不可用。 BTS.ReceiveLocationName 属性就是此类属性之一。 如果您可以将新属性架构或新 BizTalk Server 对象添加到您的开发中,则有可能从业务流程内部访问该属性。
属性值由属性目标命名空间和属性名称标识。 下面的示例演示如何访问代码格式的接收位置。
string receiveLocationName = pInMsg.Context.Read("ReceiveLocationName", sysNamespace);