提升属性是指在架构中将 Field 元素 或 字段属性节点 提升为 区分字段 或 属性字段。 如果记录节点具有简单内容(记录节点的 Content Type 属性设置为 SimpleContent),还可以将记录节点提升为属性字段。 本部分提供将节点提升为 可分辨字段 或 属性字段的分步说明。
若要将 记录 (包含简单内容)、 Field 元素或 字段属性 节点提升为 属性字段,可以首先定义一种称为属性架构的特殊架构类型。 属性架构定义一组非结构化的字段元素节点,可以在其中提升记录(包含简单内容)、字段元素或字段属性节点。 有关创建属性架构的分步说明,请参阅 如何创建属性架构。
或者,可以使用 快速升级 功能,每当升级新的 Field 元素、 字段属性或 记录 (包含简单内容)节点时,它都会自动创建和更新单个属性架构。
注释
可以将字段提升为 可分辨字段 和 属性字段。
注释
快速升级功能通过插入具有已升级节点名称的新属性来修改属性架构。
重要
提升后,请勿移动或重命名架构中的字段。 移动或重命名架构字段时,BizTalk 编辑器不会更新定义升级字段位置的 XPath。
XSD 和 CLR 数据类型
在某些地方,例如在属性提升中,XSD 数据类型将提升为公共语言运行时 (CLR) 数据类型。 下表显示了可提升的 XSD 数据类型和相应的 CLR 数据类型。
XSD 数据类型 | CLR 数据类型 |
---|---|
anyURI | 字符串 |
布尔型 | 布尔型 |
字节(Byte) | sbyte |
日期 | 日期时间 |
日期时间 | 日期时间 |
十进制 | 十进制 |
加倍 | 加倍 |
实体 | 字符串 |
漂浮 | 单身 |
gDay | 日期时间 |
gMonth | 日期时间 |
gMonthDay(月日格式) | 日期时间 |
gYear | 日期时间 |
年份月份格式 | 日期时间 |
身份证件 | 字符串 |
IDREF | 字符串 |
int (整数) | Int32 |
整数 | 十进制 |
语言 | 字符串 |
名称 | 字符串 |
NCName | 字符串 |
负整数 | 十进制 |
NMTOKEN | 字符串 |
非负整数 | 十进制 |
非正整数 | 十进制 |
标准化字符串 | 字符串 |
表示法 | 字符串 |
正整数 | 十进制 |
QName | 字符串 |
短 | Int16 |
字符串 | 字符串 |
时间 | 日期时间 |
令牌 | 字符串 |
无符号字节 | 字节(Byte) |
无符号整数 | UInt32 |
无符号短整型 | UInt16 |
注释
不支持升级 base64Binary、duration、ENTITES、hexBinary、IDREFS、long、NMTOKENS 和 unsignedLong 的 XSD 数据类型。
提升属性的限制
在推广房产时,请考虑以下事项:
提升的属性长度限制为 256 个字符,而写入的属性没有长度限制。
推广属性用于消息路由,为了提高比较和存储的效率,其大小受到限制。 虽然写入属性对大小没有硬限制,但在上下文中使用过大的值会对性能产生影响,因为这些值仍必须使用消息进行处理和传递。 显著字段是可写属性的示例。
无法将记录节点提升为 可分辨字段。
升级的属性仅限于非重复元素/属性。
不要将属于同一根节点的字段提升为同一属性。 此类升级会产生编译或部署错误。
在消息上下文中,有一些属性不可用,因为它们不会被提升。 BTSReceiveLocationName 属性是这样的属性之一。 如果可以向开发添加新的属性架构或新的 BizTalk Server 项目,则可以从业务流程中访问此属性。
属性值由属性目标命名空间和属性名称标识。 以下示例演示如何在代码中访问接收位置。
string receiveLocationName = pInMsg.Context.Read("ReceiveLocationName", sysNamespace);