业务流程使用属性架构来定义 SOAP 标头上下文属性。 使用 BizTalk 编辑器设置 SOAP 标头上下文属性。
使用属性架构定义 SOAP 标头上下文属性
需要属性架构才能在业务流程中使用定义的 SOAP 标头上下文属性。 属性架构必须具有目标命名空间 http://schemas.microsoft.com/BizTalk/2003/SOAPHeader
,并且 属性架构基 属性设置为 MessageContextPropertyBase。 属性架构中的每个根元素名称必须与定义的 SOAP 标头中的根元素名称匹配。 然后,可以使用属性架构的命名空间和属性名称设置上下文属性的值。
注释
属性架构的命名空间不同于目标架构的命名空间(http://schemas.microsoft.com/BizTalk/2003/SOAPHeader
)。 命名空间可以是任何字符串;但是,它通常默认为项目的名称。
以下代码演示如何分配 SOAP 标头上下文属性,其中属性架构命名空间是 SOAPHeader ,其属性名称为 OrigDest:
requestMessageInstance(SOAPHeader.OrigDest) = stringVar;
有关属性架构和上下文属性的详细信息,请参阅 属性架构。
使用 BizTalk 编辑器设置 SOAP 标头上下文属性
对于编排,SOAP 标头上下文属性被设置为包含 XML 数据的字符串。 您可以在消息分配或表达式形状中使用BizTalk Expression Editor设置这些字符串。
以下示例显示了设置上下文属性的字符串:
RequestMessageInstance(SOAPHeader.OrigDest) = "<?xml version=\"1.0\"?>
<OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\">
<Origination>Home</Origination>
<Destination>Work</Destination>
</OrigDest>"
使用 BizTalk 编辑器创建 SOAP 标头根元素的实例
将 SOAP 标头设置为正确的字符串可能很困难。 向 BizTalk 项目添加 Web 引用时,所有复杂的 Web 消息部件都会作为根元素添加到 Reference.xsd。 Reference.xsd 还包含每个定义的 SOAP 标头的根元素。 为了确保使用正确的字符串设置 SOAP 标头,应使用 BizTalk 编辑器为 Reference.xsd 创建 SOAP 标头根元素的实例。 可以直接使用生成的实例数据,或者将实例数据用于包含实际数据。
有关使用 BizTalk 编辑器生成实例数据的详细信息,请参阅 如何生成实例消息。
创建 XmlDocument 以设置上下文属性
可以通过创建 XmlDocument 并将 XmlDocument 的字符串值写入上下文属性来设置上下文属性。 声明 XMLDocument 类型的变量并分配 XML 数据。
以下示例演示如何设置声明 XMLDocument 类型的变量并分配 XML 数据:
xmlDoc.LoadXml("<?xml version=\"1.0\"?><OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\"><Origination>Home</Origination><Destination>Work</Destination></OrigDest>");
以下示例演示如何设置上下文属性:
RequestMessageInstance(SOAPHeader.OrigDest) = xmlDoc.OuterXml;
有关使用 BizTalk 表达式编辑器的详细信息,请参阅 表达式的要求和限制。 有关调用 .NET 类的详细信息,请参阅 在用户代码中构造消息。
为 SOAP 请求创建 SOAP 标头
为 SOAP 请求创建 SOAP 标头时,必须确保正确创建了 SOAP 标头。 SOAP 适配器不验证 SOAP 标头上下文属性的内容。
注释
如果 SOAP 标头不正确,BizTalk 无法将 SOAP 请求发送到 Web 服务。
BizTalk 返回到 Web 服务的 SOAP 响应也可能包含 SOAP 标头。 仅当这些标头是定义的 SOAP 标头时,才能访问这些 SOAP 标头。
注释
已使用的 Web 服务仅支持定义的 SOAP 标头。
有关定义的 SOAP 标头的详细信息,请参阅 “使用 SOAP 标头”。 响应 SOAP 标头使用与请求 SOAP 标头相同的语法设置为上下文属性。
以下代码演示如何访问响应 SOAP 标头:
stringVar = ResponseMessageInstance(SOAPHeader.OrigDest);
上下文属性中包含的值是包含 XML 数据的字符串。 通过在 消息分配 或 表达式 形状中使用 BizTalk 表达式编辑器设置这些字符串。 在 XmlDocument 中加载字符串,并使用 XPath 查询访问特定字段。
有关在 BizTalk 表达式编辑器中创建 XML 文档的详细信息,请参阅 XLANG 语言。