65.9K
CodeProject 正在变化。 阅读更多。
Home

如何使用 BizTalk Adapter Pack 2.0 调用具有 FOR XML 子句的存储过程,如果存储过程不在默认架构中?

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2009 年 7 月 17 日

CPOL

6分钟阅读

viewsIcon

65654

downloadIcon

437

如何使用 BizTalk Adapter Pack 2.0 调用具有 FOR XML 子句的存储过程,如果存储过程不在默认架构中?

引言

我在使用 WCF 适配器时准备了这份文档。我认为,如果存储过程不在默认架构中,这将有助于使用 BizTalk Adapter Pack 2.0 调用具有 FOR XML 子句的存储过程。

创建存储过程

如下所示创建用于获取员工详细信息的存储过程。表和 SP 位于 [bt] 架构下。

CREATE PROCEDURE [bt].[Get_EmployeeDetails] 

AS 

BEGIN 

    SET NOCOUNT ON; 

    SELECT Emp_Id,Emp_Name,Designation,[Address] FROM bt.Tbl_Employee 

    FOR XML AUTO,XMLSCHEMA 

    END
图 1

创建 BizTalk 项目

Fig1.JPG

图 2

为存储过程的请求消息生成架构

使用基于 WCF 的 SQL 适配器为具有 FOR XML 子句的存储过程生成请求消息的架构。这将提供适配器发送到 SQL Server 以调用存储过程的请求消息的架构。以下是创建架构的步骤。

Fig2.JPG

图 3

Fig3.JPG

图 4

Fig4.JPG

图 5

Fig5.JPG

图 6

Fig6.JPG

图 7

Fig7.JPG

图 8

为存储过程的响应消息生成架构

为具有 FOR XML 子句的存储过程生成响应消息的架构。执行存储过程以获取响应消息的架构。为此,请在 SQL Management Studio 中执行 SP,并获取架构结构(包含 <xsd:schema> 标签的内容),然后保存为扩展名为“xsd”的文件。

图 9

在 Visual Studio 中打开架构并进行以下更改

  1. 向架构添加一个节点,并将现有根节点移动到这个新添加的节点下。为根节点命名。对于此主题,将根节点重命名为 **Root**。
  2. 为存储过程生成的架构引用了一个 sqltypes.xsd。您可以从 http://go.microsoft.com/fwlink/?LinkId=131087 获取 sqltypes.xsd 架构。将 sqltypes.xsd 架构添加到 BizTalk 项目。

图 10

在为存储过程生成的架构中,将 import schemaLocation 的值更改为以下内容

import schemaLocation="sqltypes.xsd"

为架构提供目标命名空间

单击 <Schema> 节点,然后在“属性”窗格中,在 **Target Namespace** 属性中指定一个命名空间。根据您的项目赋予命名空间:http://ForXmlStoredProcs/namespace

更改属性

单击 <Schema> 节点,然后在“属性”窗格中,将 **"Element FromDefault"** 属性从 **"Qualified"** 更改为 **"(Default)"**。

以前

Fig10.JPG

图 11

操作后

Fig10.JPG

图 12

更改架构属性

单击从 SP 创建的根节点,然后将“Min Occurs”和“Max Occurs”属性分别更改为“0”和“unbounded”,如下所示。

Fig11small.JPG

图 13

9. 定义消息和消息类型

您之前生成的架构描述了编排中消息所需的“类型”。消息通常是一个变量,其类型由相应的架构定义。您现在必须为编排创建消息,并将它们链接到上一步生成的架构。

创建消息并链接到架构

  1. 将编排添加到 BizTalk 项目。在“解决方案资源管理器”中,右键单击 BizTalk 项目名称,指向 **“添加”**,然后单击 **“新建项”**。为 BizTalk 编排键入名称,然后单击 **“添加”**。
  2. 打开 BizTalk 项目的“编排视图”窗口(如果尚未打开)。为此,请单击 **“视图”**,指向 **“其他窗口”**,然后单击 **“编排视图”**。
  3. 在“编排视图”中,右键单击 **“消息”**,然后单击 **“新建消息”**。
  4. 属性窗口。
  5. 在 **Message_1** 的 **“属性”** 窗格中,执行以下操作:选择适配器服务生成的架构作为此消息的消息类型。
  6. Fig12.JPG

    图 14
  7. 创建另一条新消息。在新消息的 **“属性”** 窗格中,执行以下操作:选择从存储过程生成的架构作为此消息的消息类型。
  8. Fig13.JPG

    图 15

设置编排

您必须创建一个 BizTalk 编排,以便使用 BizTalk Server 执行 SQL Server 中的存储过程。在此编排中,您将请求消息放入定义的接收位置。SQL 适配器将消耗此消息并将其传递给 SQL Server。SQL Server 的响应将保存到另一个位置。您必须包含发送和接收形状,分别用于将消息发送到 SQL Server 和接收响应。用于调用过程的示例编排如下所示

Fig14.JPG

图 16
  1. 添加消息形状
  2. 请确保为每个消息形状指定以下属性。在“形状”列中列出的名称是上面提到的编排中显示的消息形状的名称。

    形状 形状类型 属性
    ReceiveMessage Receive
    • 将 **Name** 设置为 ReceiveMessage
    • 将 **Activate** 设置为 True
    SendMessage 发送 Name 设置为 SendMessage
    ReceiveResponse Receive
    • 将 **Name** 设置为 ReceiveResponse
    • 将 **Activate** 设置为 False
    SendResponse 发送 将 **Name** 设置为 SendResponse

  3. 添加端口
  4. 请确保为每个逻辑端口指定以下属性。在“端口”列中列出的名称是编排中显示的端口的名称。

    端口 属性
    MessageIn
    • 将 **Identifier** 设置为 MessageIn
    • 将 **Type** 设置为 MessageInType
    • 将 **Communication Pattern** 设置为 One-Way
    • 将 **Communication Direction** 设置为 Receive
    LOBPort
    • 将 **Identifier** 设置为 LOBPort
    • 将 **Type** 设置为 LOBPortType
    • 将 **Communication Pattern** 设置为 Request-Response
    • 将 **Communication Direction** 设置为 Send-Receive
    ResponseOut
    • 将 **Identifier** 设置为 ResponseOut
    • 将 **Type** 设置为 ResponseOutType
    • 将 **Communication Pattern** 设置为 One-Way
    • 将 **Communication Direction** 设置为 Send
  5. 为操作形状指定消息,并将它们连接到端口
  6. 下表指定了您应该为指定操作形状的消息设置的属性及其值,并将消息链接到端口。在“形状”列中列出的名称是前面提到的编排中显示的消息形状的名称。

    形状 属性
    ReceiveMessage
    • 将 **Message** 设置为 Request
    • 将 **Operation** 设置为 MessageIn.FOR_XML.Request
    SendMessage
    • 将 **Message** 设置为 Request
    • 将 **Operation** 设置为 LOBPort.FOR_XML.Request
    ReceiveResponse
    • 将 **Message** 设置为 Response
    • 将 **Operation** 设置为 LOBPort.FOR_XML.Response
    SendResponse
    • 将 **Message** 设置为 Response
    • 将 **Operation** 设置为 ResponseOut.FOR_XML.Request

指定这些属性后,消息形状和端口将连接,您的编排即完成。

配置 BizTalk 应用程序

部署 BizTalk 项目后,您之前创建的编排将在 BizTalk Server 管理控制台的“编排”窗格下列出。您必须使用 BizTalk Server 管理控制台来配置应用程序。

配置应用程序包括

  • 为应用程序选择主机。
  • 将您在编排中创建的端口映射到 BizTalk Server 管理控制台中的物理端口。对于此编排,您必须
    • 定义硬盘上的一个位置和一个相应的文件端口,您将在其中放置请求消息。BizTalk 编排将消耗请求消息并将其发送到 SQL Server 数据库。
  • 定义硬盘上的一个位置和一个相应的文件端口,BizTalk 编排将在此处放置包含来自 SQL Server 数据库的响应的响应消息。
  • 定义物理 WCF-Custom 或 WCF-SQL 发送端口以将消息发送到 SQL Server 数据库。要创建 SQL 发送和接收端口,我们可以使用在适配器生成存储过程架构时生成的绑定文件。
  • Fig15.JPG

    图 17
  • 您还必须在发送端口中指定 Action。对于包含 FOR XML 子句的过程,您必须按照以下格式设置 Action
  • XmlProcedure/<schema_name>/<procedure_name>

    Fig16small.JPG

    图 18

    Fig17-1.JPG

    图 19

    Fig18-1.JPG

    图 20

    此处您需要指定要执行的存储过程,“InoboudOperationType”应为“XmlPolling”。

    Fig19-1.JPG

    图 21
  • 指定数据库凭据。
  • 输入触发器消息将如下所示

    Fig20.JPG

    图 22
© . All rights reserved.