此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开

创建 XML 单向桥接

更新时间: 2015年5月

本部分列出在BizTalk 服务项目中创建 XML 单向桥接的步骤。XML 桥接 具有不同阶段。本主题内��:

  1. 向 BizTalk 服务项目添加桥

  2. 针对由 XML 桥接处理的 XML 消息输入请求架构

  3. 配置解码阶段

  4. 配置“验证”阶段

  5. 配置扩充阶段及其属性

  6. 配置“转换”阶段

  7. 配置扩充阶段(转换后)

  8. 配置“编码”阶段

  1. 创建BizTalk 服务项目。Visual Studio 项目入门列出相关步骤。

  2. 右键单击 BizTalk 服务项目设计区域中的任意位置,然后选择“属性”。在“BizTalk 服务 URL”中,输入你的 BizTalk 服务 URL。

  3. 在“工具箱”中,将 XML 单向桥接组件拖放到BizTalk 服务项目设计区。此时会将 .BridgeConfig 文件添加到解决方案。

  4. 右键单击桥接,选择“属性”,然后输入以下属性:

     

    属性名称 说明

    关联的项目项

    只读:关联的 .BridgeConfig 文件的名称。若要更改该文件的名称,请更改“实体名称”属性。

    实体名称

    BizTalk 服务项目设计区上的 XML 桥接名称。此名称对于 BizTalk 服务项目应该是唯一的。.BridgeConfig 文件的名称与你在此处输入的值相同。

    相对地址

    XML 桥接在 Azure 中的托管位置的相对地址。此地址连同你在步骤 2 中输入的 BizTalk 服务 URL 一起构成了完整的 桥接 URL。

    例如,如果 BizTalk 服务 URL 是 MyBizTalkService,并且桥接的相对地址是 UpdateCustomers,则 Service Bus 上的终结点 URL 将是 https://MyBizTalkService.biztalk.windows.net/default/UpdateCustomers

    路由排序表

    输入将消息从桥接路由到消息流中其他组件的顺序。请参见The Routing Order

    运行时地址

    桥将部署到的公共运行时终结点 URL。

    跟踪属性

    设置此属性可以定义桥接要跟踪哪些消息属性。请参见跟踪桥处理的消息

  5. 单击“保存”

单个BizTalk 服务项目可以具有多个桥和多个架构。为了便于使用和节省处理时间,可以将架构与桥相关联。换而言之,你可以要求特定的桥只处理符合特定架构或一组架构的消息。本部分列出了创建此关联的步骤。

  1. 将架构添加到BizTalk 服务项目中。Visual Studio 项目入门列出相关步骤。重复此步骤即可根据BizTalk 服务项目的需要添加任意数量的架构。

  2. 双击 XML 单向桥接以打开路线设计器。

    note备注
    路线设计器是只读的区域。不能通过路线设计器添加或删除某一阶段或活动。

  3. 在 桥接设计区上的“消息类型”框中,选择“添加”图标 [ 添加图标 ] 以打开“消息类型选取器”。在消息类型选取器中:

    1. “可用的消息类型”框中,选择请求消息的架构。

    2. 选择右箭头图标 [ 箭头图标 ] 将请求架构与桥接相关联。

    3. 选择“确定”。所选架构此时会在“消息类型”框下列出。

      其他信息

      • 不能同时添加多个架构。若要将多个架构与桥接相关联,请重复此步骤。

      • 若要删除与桥接的架构关联,请从“消息类型”框中选择架构,然后再按删除图标 [ “删除”图标 ]。

      • 若要替换与另一个的架构关联,请单击编辑按钮 [ 编辑图标 ] 以重新打开“消息类型选取器”

  4. 单击“保存”

“解码”阶段将传入的文本消息解码成一条 XML 消息,然后将它传递给 XML 单向桥接桥中的“验证”阶段。与桥中的其他阶段不同,“解码”阶段没有 IsEnabled 属性。某个阶段的 IsEnabled 属性定义该阶段是否处理通过桥的消息。“解码”阶段之所以不包含此属性,是因为是否解码消息不是由传入消息的内容类型决定。如果桥收到内容类型为“text/plain”的消息,则解码阶段会对消息进行解码并将其转换为 XML 消息。桥中每个阶段的其余处理操作都是针对 XML 消息(而非平面文件消息)进行。但是,如果桥收到任何其他内容类型的消息,则解码阶段将不会激活,而只是将消息传递到下一个阶段。

“解码”阶段提供两个属性:On Enter InspectorOn Exit Inspector。这些属性用于提供桥处理期间要使用的自定义代码。请参见如何在桥中包含自定义代码

验证阶段中,你可以指定此阶段是否对传入请求消息进行任何架构验证,以及验证警告是否能够作为异常传播回客户端。

  1. 双击 桥接以打开 桥接配置设计区域。

  2. 选择“验证”阶段。在“属性”中,将“IsEnabled”设置为“True”或“False”。如果设置为 True,该阶段会根据你以前添加的架构,对传入请求消息进行验证。如果设置为 False,则不进行架构验证,直接将消息传递到下一阶段。

    其他信息

  3. 选择“Xml 验证”活动。在“属性”中,将“Report Warnings As Errors”属性设置为 TrueFalse。设置为 True 时,桥接会在根据架构进行 XML 验证过程中,将任何警告作为遇到的错误进行报告,并将警告返回到发送请求消息的客户端。验证警告作为异常引发,并且验证失败。请参阅验证和架构对象模型,以了解 XML 架构验证中的警告和错误。

  4. 单击“保存”

“扩充”阶段通过定义属性来启用消息扩充,这些属性的值可从消息标头(标准或自定义)、BizTalk 服务提升的默认属性、外部数据源(仅支持 Microsoft Azure SQL Database 表)或消息正文中的元素派生。然后,可以使用这些属性将消息路由到目标终结点,或者让消息接收实体对这些属性做进一步的处理。本部分列出了执行以下各项操作的步骤:

  • 将消息标头值分配到属性。

  • 使用 BizTalk 服务提升的默认属性或系统属性。

  • 查找外部数据源

  • 使用 XPath 从消息正文元素中提取值

重要提示

  • 在此阶段输入的属性名称不区分大小写。

  • 在此阶段输入的属性不用于“路由操作”或“答复操作”,除非你保存桥接配置。有关“路由”和“答复”的更多详细信息,请参阅路由操作和答复操作:弥补协议不匹配情况

你可以通过打开或关闭扩充阶段,来选择是否要执行以下任一操作。

步骤

  1. 双击 XML 单向桥接以打开路线设计器。

  2. 选择“扩充”阶段。在“属性”中,将“IsEnabled”属性设置为“True”或“False”。

    note备注
    如果设置为 True,并且未定义任何属性,则配置桥接(设计时)或处理消息(运行时)时,桥接不会引发错误。

    其他信息

  3. “扩充”阶段,选择“扩充”活动。在“属性”中,选择针对 Property Definition 属性的省略号按钮 (...) 以打开“属性定义”

  4. “属性定义”中,选择“添加”。在“添加属性”中,可以使用来自各种源的值并将这些值作为属性包含在消息中。然后,这些属性及其值可以在以后用于其他处理任务,如根据属性值将消息路由到不同目标(请参阅The Routing Action)。下表列出了不同的源以及将属性添加到消息的方式:

     

    操作方法

    将消息标头值分配到属性

    To assign message header values to properties

    使用系统提升的属性

    To use system-promoted properties

    查找外部数据源

    To lookup an external data source

    使用 XPath 从消息中提取值

    To extract values from a message body using xpath

  1. 在“添加属性”中执行以下操作:

    note备注
    此表仅列出标头给属性赋值操作所必需的字段,该操作仅与使用消息传输协议(如 SOAP、HTTP、FTP 和 SFTP)传输的消息有关。因此,仅当你从“类型”下拉列表中选择 HTTPSOAPFTPSFTP 时,以下步骤才适用。此外,根据你在“类型”下拉列表中选择的值,必填字段将用红色标出,而其他字段将灰显。

     

    部分 字段名称 说明

    源(从其读取)

    类型

    指定要从中提取标头值的消息类型。将标头值分配到属性时,可能的值为 SOAPHTTPFTPSFTPBrokered

    SOAP 标头命名空间(仅当“类型”设置为 SOAP 时)

    指定自定义 SOAP 标头的命名空间。例如,在以下摘要中,突出显示的是 MessageType 自定义标头的命名空间:

    <s:Header>
       ...
      <MessageType xmlns="http://schemas.microsoft.com/integration/2011/system-properties">http://POAttr.org#PurchaseOrderAttr</MessageType> 
       ...
    </s:Header>
    
    Important重要提示
    如果你从“标识符”下拉列表中选择标准标头,此字段将灰显。你只能为自定义 SOAP 标头输入命名空间,但它不是必需的属性。

    如果“类型”设置为 HTTPFTPSFTPBrokered,此字段也将灰显。

    标识符

    指定消息标头属性的名称,你需要提取该属性的值并将其分配到此对话框中定义的属性。如果我们使用上面的摘录内容,则标识符将为 MessageType

    也可以在此处指定自定义标头。对于 FTP 和 SFTP,该下拉列表将列出标准标识符。就 HTTP 消息类型来说,因为存在大量标准标头,该下拉列表未列出任何标头;在这种情况下,可以输入标头的名称。此外,对于 SOAP、HTTP 和 Brokered 消息类型,你还可以列出要将其值分配给其他属性的自定义标头。

    若要更好地了解此内容,请查看此示例。让我们假设 SOAP 消息标头如下所示:

    <s:Header>
      ...  
      <PONumber xmlns="http://schemas.microsoft.com/integration/promotedpropertiesinfo">PO1234</PONumber> 
      ...  
    </s:Header>
    

    在此摘录中,PONumber 是自定义 SOAP 标头,其值为 PO1234。因此,如果你将“标识符”设置为 PONumber,则将为你在此处定义的属性分配值 PO1234

    属性(向其写入)

    属性名称

    指定所定义的属性的名称。此属性的值将设置为从你在前面指定的消息标头属性中提取的值。

    继续使用上文中的示例,如果你将“属性名称”设置为 P1,并将“标识符”设置为 PONumber,则 P1 的值将设置为 PO1234

    数据类型

    指定属性的数据类型。你可以从下拉列表中选择值。

  2. 单击“添加属性”对话框中的“确定”。现在,该对话框应如下所示:

    属性定义

    那么,此屏幕截图描绘了什么?它表示,如果传入消息是一条 SOAP 标头名称为 PONumber、标头命名空间为 http://schemas.microsoft.com/integration/promotedpropertiesinfo 的 SOAP 消息,则将创建数据类型为 stringP1,并将该标头的值分配给此属性。

  3. 若要更新或删除属性定义,可以在该对话框中选择属性定义,然后单击“编辑”“删除”。在“属性定义”对话框中单击“确定”,然后单击“保存”以保存对桥接配置所做的更改。

  1. 在“添加属性”中执行以下操作:

    note备注
    此表仅列出了将系统提升的属性分配给消息所需的字段。此外,根据你在“类型”下拉列表中选择的值,必填字段将用红色标出,而其他字段将灰显。

     

    部分 字段名称 说明

    源(从其读取)

    类型

    若要使用系统提升的属性,请从下拉列表中选择“系统”

    标识符

    指定系统提升的属性的名称,你需要提取该属性的值并将其分配到此对话框中定义的属性。

    属性(向其写入)

    属性名称

    指定所定义的属性的名称。此属性的值将设置为从你在前面指定的系统提升的属性中提取的值。

    数据类型

    指定属性的数据类型。你可以从下拉列表中选择值。

  1. 在“添加属性”中执行以下操作:

    note备注
    此表仅列出了查找操作所需的字段。因此,仅当你从“类型”下拉列表中选择“查找”时,以下步骤才适用。此外,根据你在“类型”下拉列表中选择的值,必填字段将用红色标出,而其他字段将灰显。

    Important重要提示
    对于此版本,只能从 Microsoft Azure SQL Database 表中查找。

     

    部分 字段名称 说明

    源(从其读取)

    类型

    对于查找操作,从下拉列表中选择“查找”。

    标识符

    从下拉列表中选择已配置的提供程序

    如果你尚未配置提供程序,请配置提供程序:

    1. 从“标识符”下拉列表中,选择“立即配置”。

    2. 在“提供程序配置”对话框中,指定以下值:

       

      字段名称 说明

      提供程序名称

      指定提供程序的名称

      连接字符串

      指定用于连接 Microsoft Azure SQL Database 表的有效连接字符串

      表名

      指定要从中进行数据查找的 Microsoft Azure SQL Database 表名称

      查询输入列

      指定 Microsoft Azure SQL Database 表中的一个列名称,其值用作执行数据查找的输入查询。

      查询输出列

      指定 Microsoft Azure SQL Database 表中的一个列名称,其值是最终分配给所查找的属性的输出值。

    3. 单击“确定”以添加提供程序配置。

    查找属性

    从下拉列表中,选择必须已定义的一个属性。此属性的值将传递给在上述提供程序配置中指定的“查询输入列”。

    属性(向其写入)

    属性名称

    指定包含所查找的值的属性的名称。此属性的值从上述提供程序配置中“查询输出列”的值派生而来。

    数据类型

    指定属性的数据类型。你可以从下拉列表中选择值。

  2. 单击“添加属性”对话框中的“确定”。该对话框应类似于以下内容:

    查找定义

    那么,这些对话框描绘了什么?以下是逻辑的执行过程(使用上文中的采购订单示例进行说明):

    • 桥接在 MyProvider 提供程序配置所定义的表 (TempTable) 的输入查询列 (P_Order) 中查找 P1 的值 (PO1234)。

    • 然后,桥接从 TempTable 的输出查询列 (Cust_Name) 中选取对应于 PO1234 的值。

    • 将从输出查询列中选取的值分配给属性 P2。例如,如果对应于采购订单 PO1234 的客户名称为 John,则 P2 的值将设置为 John。

    • 将属性 P2 的数据类型设置为 string

  3. 若要更新或删除属性定义,可以在该对话框中选择属性定义,然后单击“编辑”“删除”。在“属性定义”对话框中单击“确定”,然后单击“保存”以保存对桥接配置所做的更改。

  1. 在“添加属性”中执行以下操作:

    note备注
    此表仅列出了提取 (xpath) 操作所需的字段。此外,根据你在“类型”下拉列表中选择的值,必填字段将用红色标出,而其他字段将灰显。

     

    部分 字段名称 说明

    源(从其读取)

    类型

    从下拉列表中选择 Xpath

    标识符

    指定用于从消息中提取元素或特性的 xpath 查询。典型的 xpath 查询如下所示:

    /*[local-name()='<root_node>' and namespace-uri()='<namespace>']/*[local-name()='<node_name>' and namespace-uri()=<namespace>']/*@[local-name()='<attribute_name>' and namespace-uri()='<namespace>']
    

    消息类型

    指定必须使用 xpath 查询从中提取元素或特性值的消息的消息类型。

    下拉列表显示已添加到BizTalk 服务项目的所有架构。选择具有要提取的元素的架构。

    属性(向其写入)

    属性名称

    指定所定义的属性的名称。此属性的值将设置为使用 xpath 查询从消息正文中提取的值。

    数据类型

    指定属性的数据类型。你可以从下拉列表中选择值。

  2. 单击“添加属性”对话框中的“确定”。该对话框应类似于以下内容:

    使用 Xpath 提取

    那么,该对话框描绘了什么?它表示,桥接使用给定的 xpath 查询根据消息类型(在本示例中为 PurchaseOrder)从元素中提取值,将该值分配给属性 P3,并将属性 P3 的数据类型设置为 double

  3. 若要更新或删除属性定义,可以在该对话框中选择属性定义,然后单击“编辑”“删除”。在“属性定义”对话框中单击“确定”,然后单击“保存”以保存对桥接配置所做的更改。

在设计时使用桥接配置设计图面,你可以定义要提升的属性以及将为这些属性分配的值。但是,属性提升和值分配实际上在运行时(即消息流经 Service Bus 上部署的桥接时)发生。不过,在运行时可能存在因各种原因而导致属性提升失败的情况。使用下表可了解如何以及何时会发生这种情况:

 

如果发生这种情况 什么得到提升

你在设计时指定的 SOAP 或 HTTP 标头并未存在于在运行时发送到桥接的实际消息中

你在设计时定义的属性不会在运行时得到提升;不会引发异常。

你在设计时指定的 XPATH 查询并不对应于在运行时发送到桥接的消息中的元素

你在设计时定义的属性不会在运行时得到提升;不会引发异常。

就 Lookup 来说,如果在设计时指定 Lookup 属性,则该属性在运行时并不存在(因为它从未得到提升)

由于查找而分配了值的属性不会得到提升;不会引发异常。

就 Lookup 来说,如果在设计时指定的提供程序配置(包括连接字符串、表名等)不正确

在运行时会引发异常;属性不会得到提升。在设计时不会引发异常,因为桥接配置设计图面未对提供程序配置进行验证。

Important重要提示
在设计时只验证用户凭据,如果验证失败,则部署失败。

就 Lookup 来说,如果你在设计时指定的 Lookup 属性的值在运行时在提供程序数据源(在本示例中为 Microsoft Azure SQL Database 表)中没有匹配项

会引发异常;值不会得到提升

就 Lookup 来说,如果你在设计时指定的 Lookup 属性的值在运行时在提供程序数据源(在本示例中为 Microsoft Azure SQL Database 表)中有多个匹配项

该属性会得到提升,数据源中只有一个匹配值被指定为已提升属性的值。

就 SOAP、HTTP、XPATH 和 Lookup 来说,如果在设计时为属性指定的数据类型与该属性在运行时将具有的值的数据类型不同

只要可以进行类型转换,将对类型进行转换并提升属性。例如,你在设计时将某个属性定义为字符串,但在运行时分配给该属性的值是 30,则该属性的值将为“30”(作为字符串)。

如果无法进行类型转换,则会引发异常,并且该属性不会得到提升。例如,你在设计时将某个属性定义为“double”,但在运行时分配给该属性的值是“John”。由于“John”不能存储在“double”形式的属性中,因此将引发异常,并且该属性不会得到提升。

在此阶段,你可以输入要由桥使用的转换。你还可以启用或禁用该阶段。

  1. 将转换添加到BizTalk 服务项目中。Visual Studio 项目入门列出相关步骤。重复此步骤即可根据项目的需要添加任意数量的转换。

  2. 双击 XML 单向桥接以打开路线设计器。

  3. 选择“转换”阶段。在“属性”中,将“IsEnabled”设置为“True”或“False”。如果设置为 True,该阶段将使用你输入的转换,用于转换传入请求消息。如果设置为 False,则不进行消息转换,直接将消息传递到下一阶段。

    其他信息

  4. “转换”阶段,选择“Xml 转换”活动。在“属性”中,选择针对 Maps 属性的省略号按钮 (...) 以打开“映射选定内容”

  5. 从显示的映射的列表中,选择要与“转换”阶段关联的映射,然后选择“确定”。添加的映射现在将列在路线设计器上“选定的映射”下面。

    Important重要提示
    对话框仅显示其源架构与你在输入请求架构(本主题中)中输入的请求消息架构匹配的映射。

    note备注
    如果“转换”阶段中的 IsEnabled 属性设置为 True 并且你未指定映射作为“Xml 转换”活动的一部分,则桥接不会引发错误,无论是在配置桥时(设计时),还是在处理消息时(运行时)。

    可以通过单击“映射”属性旁边的省略号按钮 (…) 来添加或删除映射。

  6. 单击“保存”

在完成转换阶段后需配置“扩充”阶段,其步骤与完成转换阶段之前配置“扩充”阶段的步骤相同。请参阅配置扩充阶段及其属性(本主题中)。在配置转换后的“扩充”阶段时,唯一要注意的问题是,你在转换前“扩充”阶段中定义的属性也会出现在转换后“扩充”阶段。因此,如果你要保留这些属性,请勿创建同名属性。如果这样做,新的属性定义将覆盖旧的属性定义。

转换后的扩充阶段还提供了两个属性:On Enter InspectorOn Exit Inspector。这些属性用于提供桥处理期间要使用的自定义代码。请参见如何在桥中包含自定义代码

在此阶段,你可以输入要用于将 XML 消息转换为平面文件消息的平面文件架构。当消息遇到“编码”阶段时,就已经采用了 XML 格式。根据“编码”阶段的配置方式,可以将该消息编码为平面文件格式,或者将它作为 XML 消息发出。

  1. 双击 XML 单向桥接以打开路线设计器。

  2. 选择“编码”阶段。在“属性”中,将“IsEnabled”属性设置为“True”或“False”。如果设置为 True,该阶段将使用你输入的平面文件架构将 XML 消息编码为平面文件消息。如果设置为“False”,则不执行编码,将从桥发出 XML 消息。

    其他信息

  3. 在“编码”阶段中,选择“平面文件编码”活动。在“属性”中,单击“平面文件编码”属性旁边的省略号按钮 (…) 以打开“平面文件架构选择”对话框。

  4. 从对话框中显示的平面文件架构列表中,选择用于将 XML 消息编码为平面文件消息的架构,然后单击“确定”。在运行时,当某个 XML 消息遇到“平面文件编码”活动时,将会根据作为活动配置的一部分提供的平面文件架构来映射消息类型 (Namespace#Root)。如果匹配,则会使用该架构将 XML 消息转换为平面文件消息。转换后的消息的 HTTP 标头将设置为“text/plain”。如果不匹配,则“编码”阶段将按原样发出已处理的 XML。

    note备注
    如果“编码”阶段中的“IsEnabled”属性设置为“True”并且你未指定平面文件架构作为“平面文件编码”活动的一部分,则桥接不会引��错误,无论是在配置桥时(设计时),还是在处理消息时(运行时)。

    可以通过单击“平面文件架构”属性旁边的省略号按钮 (…) 来添加或删除架构。

  5. 单击“保存”

随即已配置 XML 单向桥接。现在,你可以将桥接连接到业务线系统,可以路由消息和/或部署桥接:

从 BizTalk 服务项目连接到 LOB 系统

在 BizTalk 服务项目中将消息从桥路由到目标

部署并刷新 BizTalk 服务项目

另请参阅

显示:
© 2015 Microsoft