使用属性升级处理实例消息
使用 Property Field 方法提升属性需要创建属性架构。 有关创建属性架构的详细信息,请参阅 如何创建属性架构。 与所有属性升级一样,可以使用“提升属性”对话框,该对话框可通过在消息架构中使用“架构”节点的“提升属性”属性进行访问。
注意
您必须选择升级属性的管道,以便访问和使用升级属性。 例如,如果您使用 PassthruReceive 管道,将不会升级任何属性;因此,基于内容的路由和其他功能将无法按预期使用。
在“ 提升属性 ”对话框中,确保在对话框右侧选择了“ 属性字段 ”选项卡。 接下来,确保“属性字段”选项卡顶部的“属性架构列表”中包含相应的 属性 架构。如有必要,请使用“文件夹”按钮,通过 “BizTalk 类型选取器 ”对话框选择适当的属性架构。 接下来,展开对话框左侧架构树中的节点,查找并选择要提升为属性字段的 Field 元素 节点或 字段属性 节点,然后单击“ 添加”。 最后,使用 Property-Fields 字典表的“属性”列中的下拉列表来选择属性架构中要与之关联的 Field Element 节点。 有关使用“ 提升 属性”对话框 ox 将属性提升为属性字段的分步说明,请参阅 如何将数据作为属性字段复制到消息上下文。
注意
还可以将 Record 节点提升为属性架构中的 Field Element 节点,但前提是“记录”节点的“内容类型”属性设置为 SimpleContent。
注意
在一个架构中,可以对同一属性升级多次,只要所有这些升级都是在不同的根节点下进行即可。 这是因为消息是根据单个根节点进行验证的,只有在该根节点下升级的属性才会在运行时进行评估。
若要从作为属性字段提升的属性集中删除 Field 元素节点或 Field Attribute 节点,请在“属性字段”选项卡上的“属性字段”字典表中选择提升的属性,然后单击“删除”。
Property-Fields 字典表中的“节点路径”列显示与升级属性对应的架构节点的 XPath。 可以使用“ 编辑实例 XPath ”对话框直接编辑此值。 可以通过单击省略号 (...) 按钮打开此对话框,该按钮在选择相应单元格时显示在相应单元格的右端。 在直接编辑 XPath 值时必须谨慎,因为如果 BizTalk 编辑器无法解析 XPath,则会妨碍相应的验证操作。
BizTalk 编辑器还提供了一个简化的命令,用于使用 属性字段 机制提升属性。 此命令称为“快速升级”,可以使用 “升级 | ” BizTalk 和快捷菜单上的“快速升级”命令。 此命令将所选 字段 节点 (或 记录 节点) 提升为属性字段,该字段在包含架构的“属性页”对话框中由 “默认属性架构名称 ”属性指定的属性架构中指定的 属性 架构中自动创建。 有关使用“快速提升”命令将属性提升为属性字段的分步说明,请参阅 如何将数据作为属性字段复制到消息上下文。
在使用属性字段机制升级属性时,将会向消息架构的 XSD 表示形式中添加两个 XML 架构定义 (XSD) 语言片段。 第一个 XSD 片段是与 架构元素关联的 批注片段,用于标识相应的属性架构,如以下示例所示:
<xs:annotation>
<xs:appinfo>
<b:imports>
<b:namespace prefix="ns0"
uri="http://BizTalk_Server_Project1.PropertySchema1"
location=".\propertyschema1.xsd" />
</b:imports>
</xs:appinfo>
</xs:annotation>
第二个 XSD 片段是与 根 元素 (关联的批注片段,无论它是否已重命名为标识 Field Element 节点或 Field Attribute 节点值(使用属性字段机制提升)) ,如以下示例所示:
<xs:annotation>
<xs:appinfo>
<b:properties>
<b:property name="ns0:PromProp1"
xpath="/*[local-name()='Root' and namespace-
uri()='http://BizTalk_Server_Project1.Schema2']/
*[local-name()='MyRec1']/@*[local-
name()='Field_x0020_1']" />
<b:property name="ns0:PromProp2"
xpath="/*[local-name()='Root' and namespace-
uri()='http://BizTalk_Server_Project1.Schema2']/
*[local-name()='MyRec1']/*[local-
name()='ProgramManager']/*[local-name()='Name']" />
</b:properties>
</xs:appinfo>
</xs:annotation>