“转换 XML”和“Liquid”等工作流操作需要映射才能执行其任务。 例如,“转换 XML”操作需要映射才能在格式之间转换 XML。 映射是使用 可扩展样式表语言转换 (XSLT) 语言的 XML 文档,用于描述如何将数据从 XML 转换为其他格式,并且具有 .xslt 文件扩展名。 映射由一个作为输入的源 XML 架构和一个作为输出的目标 XML 架构组成。 你可以定义一个基本转换,例如,将名称和地址从一个文档复制到另一个文档。 或者,可以使用现成可用的映射操作创建更复杂的转换。 可以使用不同的内置函数来操作或控制数据,如字符串操作、条件分配、算术表达式、日期时间格式化程序甚至是循环构造。

例如,假设你从使用 YearMonthDay 日期格式 (YYYYMMDD) 的客户定期接收 B2B 订单或发票。 但是,你的组织使用 MonthDayYear 日期格式 (MMDDYYYY)。 在将订单或发票详细信息存储在客户活动数据库中之前,可以定义并使用一个映射,以便将 YYYYMMDD 格式转换为 MMDDYYYY 格式。

本文介绍如何将映射添加到集成帐户。 如果使用标准型逻辑应用工作流,还可以直接将映射添加到逻辑应用资源。

  • Azure 帐户和订阅。 如果没有订阅,可以 注册免费的 Azure 帐户

  • 要添加的映射。 若要创建映射,可以将以下工具与 企业集成 SDK 结合使用:

  • Visual Studio 2019 和 Microsoft Azure 逻辑应用企业集成工具扩展

  • Visual Studio 2015 和 适用于 Visual Studio 2015 2.0 的 Microsoft Azure 逻辑应用企业集成工具 扩展。

    不要将此扩展与 BizTalk Server 扩展一起安装。 同时具有这两个扩展可能会导致意外行为。 请确保只安装其中一个扩展。

    在高分辨率监视器上,可能会在 Visual Studio 中遇到 地图设计器显示问题 。 若要解决此显示问题,请 在 DPI 无感知模式下重启 Visual Studio 或添加 DPIUNAWARE 注册表值

    有关详细信息,请查看本文中的 创建映射 部分。

  • 你需要 集成帐户资源 ,具体取决于你使用的是消耗型还是标准型逻辑应用工作流。 通常,当你想要定义和存储项目以将其用于企业集成和 B2B 工作流时,你需要此资源。

    若要协同工作,集成帐户和逻辑应用资源必须存在于同一 Azure 订阅和 Azure 区域中。

  • 如果使用消耗型逻辑应用工作流,则需要 链接到逻辑应用资源的集成帐户

  • 如果使用标准型逻辑应用工作流,则可以根据以下情况将集成帐户链接到逻辑应用资源并且/或者直接将映射上传到逻辑应用资源:

  • 如果你已经有一个包含所需项目或要使用的项目的集成帐户,可以将该集成帐户链接到要在其中使用项目的多个标准型逻辑应用资源。 这样,就不必将映射上传到每个单独的逻辑应用。 有关详细信息,请查看 将逻辑应用资源链接到集成帐户

  • 通过 Liquid 内置连接器,可选择以前上传到逻辑应用资源或链接集成帐户的映射,但不能同时上传到这两者。 然后,可以在同一逻辑应用资源中跨多个子工作流使用此项目。

    因此,如果你没有集成帐户,或者你不需要集成帐户,可以使用上传选项。 否则,可以使用链接选项。 采用上述任一方式,都可以在同一逻辑应用资源中跨所有子工作流使用这些项目。

  • 标准型工作流

  • 从地图引用外部程序集目前为预览版。 若要配置对外部程序集的支持,请参阅 Azure 逻辑应用(标准版)为 XSLT 转换增加了对 .NET Framework 程序集的支持

  • 映射文件大小不存在限制。

  • 消耗型工作流

  • 支持从映射中引用外部程序集,从而可以根据以下要求从 XSLT 映射直接调用自定义 .NET 代码:

  • 需要一个 64 位程序集。 转换服务运行 64 位进程,因此不支持 32 位程序集。 如果有 32 位程序集的源代码,请将此代码重新编译为 64 位程序集。 如果没有源代码,但从第三方提供程序获取了二进制文件,请从该提供程序获取 64 位版本。 例如,某些供应商在包中提供有 32 位和 64 位版本的程序集。 如果可以选择,请改用 64 位版本。

  • 必须按特定的顺序将程序集和映射上传到集成帐户。 请务必 先上传程序集 ,然后再上传引用程序集的映射。

  • 如果程序集或映射为 2 MB 或更小 ,你可以直接从 Azure 门户将程序集和映射添加到集成帐户。

  • 如果程序集大于 2 MB 但不超过 程序集大小限制 ,则需要可上传程序集的 Azure 存储帐户和 Blob 容器。 稍后,在将程序集添加到集成帐户时,可以提供该容器的位置。 对于此任务,下表描述了所需的项:

  • Azure 逻辑应用会分配有限的内存来处理 XML 转换。 如果创建消耗型工作流,并且映射或有效负载转换的内存消耗较高,则此类转换可能会失败,从而导致内存不足错误。 若要避免这种情况,请考虑以下选项:

  • 编辑映射或有效负载以减少内存消耗。

  • 请改为创建 标准型逻辑应用工作流

    这些工作流在单租户 Azure 逻辑应用中运行,为计算和内存资源提供专用且灵活的选项。 但是,标准型工作流仅支持 XSLT 1.0,不支持从映射引用外部程序集。

    若要创建 XSLT 文档以用作映射,请使用 企业集成 SDK 在 Visual Studio 2019 或 2015 中创建集成项目。 在集成项目中,可以生成用于直观地在两个 XML 架构文件之间映射项的集成映射文件。 这些工具提供以下映射功能:

  • 可以使用映射的图形表示形式,其中会显示创建的所有关系和链接。

  • 你可以在用于创建映射的 XML 架构之间直接进行数据复制。 Visual Studio 的企业集成 SDK 包含一个映射器,它能够使此任务变得非常简单,就如同绘制一条线将源 XML 架构中的元素与目标 XML 架构中的对应元素连接到一起一样。

  • 针对多个映射的操作或函数已提供,包括字符串函数、日期时间函数等。

  • 若要添加示例 XML 消息,可以使用映射测试功能。 只需一个手势,就能测试创建的映射并查看生成的输出。

  • 生成你的项目后,你会获得一个 XSLT 文档。

    映射必须具有以下属性和 CDATA 节,该节包含对程序集代码的调用:

  • name 是自定义程序集名称。

  • namespace 是包含自定义代码的程序集中的命名空间。

    以下示例演示了一个映射,该映射引用名为 XslUtilitiesLib 的程序集并从该程序集调用 circumference 方法。

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts">
    <msxsl:script language="C#" implements-prefix="user">
        <msxsl:assembly name="XsltHelperLib"/>
        <msxsl:using namespace="XsltHelpers"/>
        <![CDATA[public double circumference(int radius){ XsltHelper helper = new XsltHelper(); return helper.circumference(radius); }]]>
    </msxsl:script>
    <xsl:template match="data">
    <circles>
        <xsl:for-each select="circle">
            <circle>
                <xsl:copy-of select="node()"/>
                    <circumference>
                        <xsl:value-of select="user:circumference(radius)"/>
                    </circumference>
            </circle>
        </xsl:for-each>
    </circles>
    </xsl:template>
    </xsl:stylesheet>
    

    添加引用的程序集(仅限消耗型工作流)

  • Azure 门户中,使用 Azure 帐户凭据登录。

  • 在 Azure 主搜索框中输入 integration accounts,然后选择“集成帐户”。

  • 选择要将程序集添加到的集成帐户。

  • 在集成帐户的菜单上,选择“概述”。 在“设置”下选择“程序集” 。

  • 在“程序集”窗格工具栏上,选择“添加” 。

    根据程序集文件的大小,遵循相应的步骤来上传不超过 2 MB大于 2 MB 但不超过 8 MB 的程序集。 有关集成帐户中程序集数量的限制,请查看 Azure 逻辑应用的限制和配置

    如果更改程序集,则无论映射是否有更改,都必须更新映射。

    添加不超过 2 MB 的程序集

  • 在“添加程序集”下,输入程序集的名称。 将“小文件”保持选定状态。 选择“程序集”框旁边的文件夹图标。 找到并选择要上传的程序集。

    选择程序集后,“程序集名称”属性会自动显示该程序集的文件名。

  • 完成后,请选择“确定”。

    完成程序集文件上传后,该程序集将显示在“程序集”列表中。 在集成帐户“概述”窗格的“项目”下,也会显示上传的程序集 。

    添加 2 MB 以上的程序集

    若要添加更大的程序集,可将程序集上传到 Azure 存储帐户中的 Azure Blob 容器。 添加程序集的步骤因 Blob 容器是否具有公共读取访问权限而异。 因此,首先请执行以下步骤检查 Blob 容器是否具有公共读取访问权限:为 Blob 容器设置公共访问级别

    检查容器访问级别

  • 打开 Azure 存储资源管理器。 在“资源管理器”窗口中展开你的 Azure 订阅(如果尚未展开)。

  • 展开“存储帐户”>“{你的存储帐户}”>“Blob 容器”。 选择你的 Blob 容器。

  • 在 Blob 容器的快捷菜单中,选择“设置公共访问级别”。

  • 如果 Blob 容器至少具有公共访问权限,请选择“取消”,并执行本页稍后所述的步骤:上传到具有公共访问权限的容器

  • 如果 Blob 容器没有公共访问权限,请选择“取消”,并执行本页稍后所述的步骤:上传到没有公共访问权限的容器

  • 完成上传后,选择上传的程序集。 在工具栏中,选择“复制 URL”以复制程序集的 URL。

  • 返回 Azure 门户,其中已打开“添加程序集”窗格。 输入程序集的名称。 选择“大文件(大于 2 MB)”。

    此时会显示“内容 URI”框而不是“程序集”框。

  • 在“内容 URI”框中,粘贴程序集的 URL。 完成添加程序集。

    完成程序集上传后,该程序集将显示在“程序集”列表中。 在集成帐户“概述”窗格的“项目”下,也会显示上传的程序集 。

    上传到没有公共访问权限的容器

  • 将程序集上传到存储帐户。 在右侧窗口中,选择“上传”。

  • 上传完成后,为程序集生成共享访问签名 (SAS)。 在程序集的快捷菜单中,选择“获取共享访问签名”。

  • 在“共享访问签名”窗格中,选择“生成容器级共享访问签名 URI”>“创建”。 生成 SAS URL 后,选择“URL”框旁边的“复制” 。

  • 返回 Azure 门户,其中已打开“添加程序集”窗格。 输入程序集的名称。 选择“大文件(大于 2 MB)”。

    此时会显示“内容 URI”框而不是“程序集”框。

  • 在“内容 URI”框中,粘贴前面生成的 SAS URI。 完成添加程序集。

    完成程序集上传后,该程序集将显示在“程序集”列表中。 在集成帐户“概述”页的“项目”下,也会显示上传的程序集 。

  • 如果使用的是消耗型工作流,则必须将映射添加到链接集成帐户。

  • 如果使用的是标准型工作流,则有以下选项:

  • 将映射添加到链接集成帐户。 可以在多个标准型逻辑应用资源及其子工作流之间共享映射和集成帐户。

  • 将映射直接添加到逻辑应用资源。 但是,只能在同一逻辑应用资源中的子工作流之间共享该映射。

  • “映射”窗格打开后,请选择你的映射。 若要先下载并编辑映射,请在“映射”窗格工具栏上选择“下载”,然后保存映射 。

  • 准备好上传更新的映射时,请在“映射”窗格上选择要更新的映射。 在“映射”窗格工具栏中选择“更新” 。

  • 找到并选择要上传的已更新映射。

    完成映射文件上传后,更新的映射将显示在“映射”列表中。

  •