扩展映射器示例演示如何使用和扩展 BizTalk 映射器。 此示例包含多个 BizTalk Server 映射文件(.btm),其中每个文件都说明了 BizTalk Mapper 的不同功能。
此示例的作用
扩展映射器示例使用基于内容的路由(CBR),并且不使用编排。 通过在示例发送端口上指定筛选器,它直接连接到示例接收端口。 在发送端口上指定了一个映射,以应用于已处理的文档。
在何处查找此示例
<示例路径>\XmlTools\ExtendingMapper
下表显示了此示例中的文件,并描述了它们的用途。
| 文件 | DESCRIPTION | 
|---|---|
| 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 | 模式文件。 | 
生成和初始化此示例
使用以下过程生成和初始化扩展映射器示例。
生成和初始化此示例
- 在命令窗口中,将目录(cd)更改为以下文件夹: - <样本路径>\XmlTools\ExtendingMapper 
- 运行文件 Setup.bat,执行以下作: - 为此示例创建输入 (\In) 和输出 (\Out) 文件夹。 
- 编译并部署此示例的 Visual Studio 项目。 
- 创建并绑定 BizTalk Server 接收位置以及发送和接收端口。 - 如果要使用 Scriptor_CallExternalAssembly.btm 或 Scriptor_InlineXsltCallingExternalAssembly.btm 地图,请在 Visual Studio 中打开ExtendingMapper.sln并进行以下修改(否则请转到步骤 3): 
 - 在解决方案资源管理器中,打开 Scriptor_CallExternalAssembly.btm。 
- 在映射器网格中,选择“脚本”功能节点。 
- 在属性网格中,选择 “脚本 ”属性,然后单击省略号 (...) 按钮以配置 functoid 脚本。 
- 在 “配置脚本”Functoid 对话框中,选择 “脚本 Functoid 配置”,并指定以下内容: - 设置此项 - 对此 - 脚本类型 - 外部程序集 - 脚本汇编 - Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary - 脚本类 - Microsoft.Samples.BizTalk.ExtendingMapper.MapperHelper - 脚本方法 - MyConcat 
- 在 Visual Studio文件 菜单中,选择“ 保存” 以保存对映射文件的更改,然后关闭解决方案。 
 
- 按任意键继续(Setup.bat)。 - 重要 - 如果要使用 Scriptor_InlineXsltCallingExternalAssembly.btm,则必须编辑 ExternalAssembly.xml 文件。 BizTalk 使用 ExternalAssembly.xml 将映射器扩展对象注册的命名空间映射到 .NET 程序集。 由于依赖程序集由其完全限定的名称(包括自动生成的公钥令牌)引用,因此必须更新此值。 如果不想使用 Scriptor_InlineXsltCallingExternalAssembly.btm,则无需完成步骤 a 到 e。 
- 在 Windows 资源管理器中,导航到 <Windows 文件夹>\assembly\。 - 右键单击 Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary 并选择 “属性”。 
- 复制公钥令牌值。 
- 在文本编辑器中,打开 <示例路径>\XML Tools\ExtendingMapper\ExternalAssembly.xml。 
- 选择 AssemblyName=“Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=68496d20c737d84b”属性,并将 PublicKeyToken 值替换为在步骤 c 中复制的公钥令牌值。 
- 保存并关闭 ExternalAssembly.xml。 
 - 注释 - 在尝试运行此示例之前,应确认在生成和初始化过程中未报告任何错误。 
配置、登记和启动发送端口
- 依次单击“ 开始”、“ 所有程序”、“ Microsoft BizTalk Server”,然后选择 “BizTalk Server 管理”。 
- 在 BizTalk Server 管理控制台中,单击以展开 BizTalk Server 管理,单击以展开 BizTalk 组 [<servername>:<management database>],然后单击以展开 应用程序。 
- 单击以展开 ExtendingMapperApplication,然后单击发送端口。 
- 在右窗格中,右键单击“ 发送端口”,然后单击“ 属性”。 
- 在 “ExtendingMapperSP – 发送端口属性 ”对话框中,单击“ 出站映射 ”页。 - 在 “映射 ”列中,从下拉列表中选择所需的地图,然后单击“ 确定”。 下表描述了这些地图。 - 映射以应用属性 - DESCRIPTION - Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_CallExternalAssembly - 演示如何根据此 functoid 的输入参数从映射中的 Scripting functoid 调用外部 .NET 程序集中的函数。 这有助于将处理逻辑与映射文件清晰地分开。 此映射文件使用此示例随附的程序集 MapperClassLibrary.dll。 - Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_InlineScripts - 演示如何使用 .NET 语言(如 C#、Visual Basic.NET 和 JScript.NET)在映射文件中编写 脚本功能块的简单内联脚本。 - Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_GlobalVariableInInlineScript (全局变量在内联脚本中) - 演示如何在 脚本构件的内联脚本中使用全局变量。 全局变量通常用于在不同的脚本功能块中维持映射文件的状态信息。 - Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_InlineXslt - 演示如何在地图中的 脚本 functoid 中使用原始内联 XSLT 在目标文档中构造结构。 您可以在无法使用其他 functoid 在 BizTalk Mapper 中构建某些部分时,使用内联 XSLT 的脚本 functoid 来构造目标文档的一些部分。 - Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_XsltCalltemplate - 演示如何在地图的 脚本 functoid 中使用 XSLT 调用模板在目标文档中创建结构。 XSLT 调用模板相对于内联 XSLT 的优点是调用模板可以接受参数,因此可以根据输入到 脚本 functoid 的参数创建结构。 如果在 BizTalk 映射器中无法使用其它 functoid,则可以使用带有内联 XSLT 的 脚本 functoid 来构造目标文档的某些部分。 - Microsoft.Samples.BizTalk.ExtendingMapper。 Scriptor_InlineXslt调用外部程序集 - 演示如何从映射中 脚本 functoid 的内联 XSLT 内部调用外部 .NET 程序集。 介绍如何使用包含要调用的外部 .NET 程序集的详细信息的自定义扩展文件 ExternalAssembly_extxml.xml 重写 BizTalk 映射器网格的 自定义扩展 XML 属性。 当无法在 Mapper UI 中使用其他 functoid 时,可以使用带内联 XSLT 的 脚本 functoid 来构造目标文档的某些部分。 - Microsoft.Samples.BizTalk.ExtendingMapper。 OverridingMapXslt - 演示如何使用自定义 XSLT 文件完全替代 BizTalk 映射器文件的已编译 XSLT。 可以通过重写 自定义 XSL Path属性和 BizTalk 映射器网格的 自定义扩展 XML 属性来执行此作。 在运行时,您提供的自定义 XSLT 文件被包含在要使用的项目的已编译 BizTalk Server 程序集中。 在这种情况下,将忽略映射文件 (.btm) 的内容。 此映射文件对 自定义 XSL 路径 和 自定义扩展 XML 属性均使用 OverridingMapXslt.xslt 和 OverridingMapXslt.xml。 
 可以在解决方案资源管理器中验证映射文件。 然后,可以将它用作模板文件,可以编辑并用于 BizTalk 映射器网格的 自定义 XSL Path 属性。 如果无法使用 BizTalk 映射器生成此 XSLT,则可以使用此选项。
运行此示例
要运行扩展映射器示例,请按照以下步骤操作。
运行此示例
- 将输入文件 ExtendingMapper.xml 复制到 Samples Path>\XmlTools\ExtendingMapper\In 的<输入文件夹中。 
- 请注意如何转换文件并将其路由到 <Samples Path>\XmlTools\ExtendingMapper\Out 文件夹。 转换是基于你使用的映射而发生的。