使用属性升级处理实例消息

使用 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>  

另请参阅

使用消息内容控制消息处理的方法
如何将数据作为属性字段复制到消息上下文