扩展映射器(BizTalk Server 示例)

扩展映射器示例对如何使用和扩展 BizTalk 映射器进行演示。 本示例包含多个 BizTalk Server 映射文件 (.btm),其中的每个文件均阐释了 BizTalk 映射器的一个功能。

本示例的用途

扩展映射器示例使用基于内容的路由 (CBR),不使用业务流程。 通过在示例发送端口上指定筛选器,扩展映射器示例可直接连接到示例接收端口。 会在发送端口上指定一个要应用到已处理文档的映射。

本示例所在的位置

<示例路径>\XmlTools\ExtendingMapper

下表显示了本示例中的文件及其用途说明:

文件 说明
MapperClassLibrary\AssemblyInfo.cs、MapperClassLibrary\MapperClassLibrary.csproj、MapperClassLibrary\MapperHelper.cs 和 MapperClassLibrary\MapperClassLibrary.sln Microsoft® Visual Studio® 项目文件和 Visual C#® 源文件。
Cleanup.bat 用于取消部署程序集并从全局程序集缓存 (GAC) 删除这些程序集。
Destination.xsd 架构文件。
ExtendingMapper.btproj、ExtendingMapper.sln 本示例的 BizTalk 项目和解决方案文件。
ExtendingMapper.xml 源 XML。
ExtendingMapperBinding.xml 绑定 XML。
ExternalAssembly.xml 外部程序集 XML。
OverridingMapXslt.btm 映射文件。
OverridingMapXslt.xml 替代映射 XML。
OverridingMapXslt.xslt 替代映射样式表。
Scriptor_CallExternalAssembly.btm 示例映射文件。
Scriptor_GlobalVariableInInlineScript.btm 示例映射文件。
Scriptor_InlineScripts.btm 示例映射文件。
Scriptor_InlineXslt.btm 示例映射文件。
Scriptor_InlineXsltCallingExternalAssembly.btm 示例映射文件。
Scriptor_XsltCalltemplate.btm 示例映射文件。
Setup.bat 用于生成和初始化示例。
Source.xsd 架构文件。

生成和初始化此示例

使用以下过程可以生成并初始化扩展映射器示例。

构建和初始化此示例

  1. 在命令窗口中,将目录 (cd) 更改为以下文件夹:

    <示例路径>\XmlTools\ExtendingMapper

  2. 运行 Setup.bat 文件,该文件将执行以下操作:

    • 为本示例创建输入 (\In) 和输出 (\Out) 文件夹。

    • 为本示例编译并部署 Visual Studio 项目。

    • 创建并绑定 BizTalk Server 接收位置、发送和接收端口。

      如果要使用 Scriptor_CallExternalAssembly.btm 或 Scriptor_InlineXsltCallingExternalAssembly.btm 映射,请在 Visual Studio 中打开 ExtendingMapper.sln 并做以下修改(否则转到步骤 3):

    1. 在解决方案资源管理器中,打开 Scriptor_CallExternalAssembly.btm。

    2. 在映射器网格上选择脚本 functoid。

    3. 在属性网格中,选择“ 脚本” 属性,然后单击省略号 (...) 按钮配置 functoid 脚本。

    4. “配置脚本 Functoid ”对话框中,选择“ 脚本 Functoid 配置”,并指定以下内容:

      设置此 对此
      脚本类型 外部程序集
      脚本程序集 Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary
      脚本类 Microsoft.Samples.BizTalk.ExtendingMapper.MapperHelper
      脚本方法 MyConcat
    5. 在“Visual Studio文件 ”菜单中,选择“ 保存” 以保存对映射文件的更改,然后关闭解决方案。

  3. 按任意键继续执行 Setup.bat。

    重要

    如果要使用 Scriptor_InlineXsltCallingExternalAssembly.btm,则必须编辑 ExternalAssembly.xml 文件。 BizTalk 使用 ExternalAssembly.xml 将映射器扩展对象已注册的命名空间映射到 .NET 程序集。 由于将按照完全限定的名称(包括其自动生成的公钥标记)对依赖程序集进行引用,因此必须更新此值。 如果不想使用 Scriptor_InlineXsltCallingExternalAssembly.btm,则不必完成 a 到 e 的全部步骤。

  4. 在 Windows 资源管理器中,导航到 <Windows 文件夹>\assembly\。

    1. 右键单击“Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary”,然后选择“属性”。

    2. 复制公钥标记值。

    3. 在文本编辑器中,打开 <Samples Path>\XML Tools\ExtendingMapper\ExternalAssembly.xml。

    4. 选择 AssemblyName=“Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=68496d20c737d84b”属性,并将 PublicKeyToken 值替换为在步骤 c 中复制的公钥令牌值。

    5. 保存并关闭 ExternalAssembly.xml。

    注意

    在尝试运行本示例前,你应确认在生成和初始化过程中未报告任何错误。

配置、登记并启动发送端口

  1. 单击“开始”,选择“所有程序”,选择“Microsoft BizTalk Server”,然后选择“BizTalk Server管理”。

  2. 在BizTalk Server管理控制台中,单击展开BizTalk Server管理,单击以展开 BizTalk 组 [<servername>:<management database>],然后单击展开应用程序

  3. 单击以展开 ExpandMapperApplication,然后单击“ 发送端口”。

  4. 在右窗格中,右键单击“ 发送端口”,然后单击“ 属性”。

  5. “ExtendingMapperSP – 发送端口属性 ”对话框中,单击“ 出站映射 ”页。

    “映射” 列中,从下拉列表中选择所需的映射,然后单击“ 确定”。 下表对这些映射进行了说明。

    “要应用的映射”属性 说明
    Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_CallExternalAssembly 演示如何根据此 functoid 的输入参数,从映射中的 脚本 functoid 调用外部 .NET 程序集中的函数。 这样做有助于将任何处理逻辑与映射文件完全分离。 此映射文件使用本示例附带的 MapperClassLibrary.dll 程序集。
    Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_InlineScripts 演示如何使用 .NET 语言(如 C#、Visual Basic.NET 和 JScript.NET)在映射文件中编写 脚本 functoid 中的简单内联脚本。
    Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_GlobalVariableInInlineScript 演示如何在 脚本 functoid 的内联脚本中使用全局变量。 全局变量通常用于跨不同 脚本 functoid 维护映射文件中的状态信息。
    Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_InlineXslt 演示如何在地图中的 脚本 functoid 中使用原始内联 XSLT 在目标文档中构造结构。 只要无法使用其他 functoid 在 BizTalk 映射器中执行该操作,就可以使用内联 XSLT 编写 脚本 functoid 来构造目标文档的某些部分。
    Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_XsltCalltemplate 演示如何使用地图中 脚本 functoid 中的 XSLT 调用模板在目标文档中创建结构。 XSLT 调用模板优于内联 XSLT 的优点是调用模板可以接受参数,因此你可以基于 脚本 functoid 的输入参数创建结构。 只要无法使用其他 functoid 在 BizTalk 映射器中执行该操作,就可以使用内联 XSLT 编写 脚本 functoid 来构造目标文档的某些部分。
    Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_InlineXsltCallingExternalAssembly 演示如何从映射中 脚本 functoid 的内联 XSLT 内部调用外部 .NET 程序集。 介绍如何使用包含要调用的外部 .NET 程序集详细信息的自定义扩展文件 ExternalAssembly_extxml.xml 替代 BizTalk 映射器网格的自定义扩展 XML 属性。 只要无法在 Mapper UI 中使用其他 functoid 来构建目标文档的某些部分,就可以使用内联 XSLT 编写 脚本 functoid 来构造。
    Microsoft.Samples.BizTalk.ExtendingMapper。 OverridingMapXslt 演示如何使用自定义 XSLT 文件完全替代 BizTalk 映射器文件的已编译 XSLT。 为此,可以重写 BizTalk 映射器网格的 自定义 XSL 路径属性和 自定义扩展 XML 属性。 您提供的自定义 XSLT 文件包含在要在运行时使用的项目的已编译 BizTalk Server 程序集中。 在这种情况下将忽略映射文件 (.btm) 的内容。 此映射文件分别对 自定义 XSL 路径自定义扩展 XML 属性使用 OverridingMapXslt.xslt 和 OverridingMapXslt.xml。

    你可在解决方案资源管理器中对映射文件进行验证。 然后,可以将它用作模板文件,可以编辑该文件并将其用于 BizTalk 映射器网格的 自定义 XSL 路径 属性。 一旦无法使用 BizTalk 映射器生成 XSLT,你即可使用此选项。

运行本示例

使用以下过程运行扩展映射器示例。

运行本示例的步骤

  1. 将输入文件 ExtendingMapper.xml 复制到 Samples Path>\XmlTools\ExtendingMapper\In 中的<输入文件夹中。

  2. 请注意文件是如何转换和路由到 <Samples Path>\XmlTools\ExtendingMapper\Out 文件夹的。 发生的转换由应用的映射确定。

另请参阅

XML 工具(BizTalk Server 示例文件夹)