使用 Azure 逻辑应用在工作流中转换 XML

适用范围:Azure 逻辑应用(消耗型 + 标准型)

在企业集成企业到企业 (B2B) 应用场景中,可能需要在不同格式之间转换 XML。 逻辑应用工作流可以使用“转换 XML”操作和预定义映射来转换XML。

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

先决条件

  • Azure 帐户和订阅。 如果还没有订阅,请注册 Azure 帐户

  • 一个逻辑应用工作流,已在开始时创建触发器,便于你在工作流中必要时添加“转换 XML”操作。

  • 一个可以在其中定义和存储项目(如贸易合作伙伴、协议、证书等)的集成帐户资源,用于企业集成和 B2B 工作流。 此资源必须满足以下要求:

    • 与逻辑应用资源所在的同一个 Azure 订阅相关联。

    • 与你计划在其中使用“转换 XML”操作的逻辑应用资源位于同一个位置或 Azure 区域。

    • 如果使用消耗型逻辑应用资源和工作流,则集成帐户需要以下各项:

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

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

      • 如果没有集成帐户或仅计划在同一逻辑应用资源中跨多个工作流使用项目,则可以使用 Azure 门户 或 Visual Studio Code 将映射直接添加到逻辑应用资源

        注意

        通过 Liquid 内置连接器,可选择以前上传到逻辑应用资源或链接集成帐户的映射,但不能同时上传到这两者。

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

    你仍需要一个集成帐户,用来存储其他项目(例如合作伙伴、协议和证书),以及使用 AS2X12EDIFACT 操作。

添加“转换 XML”操作

  1. Azure 门户中,打开设计器中的标准逻辑应用和工作流。

  2. 如果你有一个没有触发器的空白工作流,请按照以下常规步骤添加所需的任何触发器。 否则,继续执行下一步。

    此示例使用请求触发器。

  3. 在要添加“转换 XML”操作的工作流步骤下,按照以下常规步骤添加名为“转换 XML”的操作

  4. 在“内容”框中,指定要使用 HTTP 请求中接收的任何 XML 数据转换的 XML 内容。

    1. 若要从工作流中的上一个操作中选择输出,请在“转换 XML”操作中单击“内容”框中,然后选择动态内容列表选项(闪电图标)。

    2. 从动态内容列表中,选择要转换的内容的令牌。

      Screenshot shows Standard workflow with opened dynamic content list.

      此示例从触发器中选择“正文”令牌。

      注意

      请确保选择 XML 内容。 如果内容不是 XML,或者是 base64 编码的,则必须指定一个用于处理该内容的表达式。 例如,可以使用表达式函数(如 base64ToBinary())来解码内容,或使用 xml() 来处理 XML 格式的内容。

  5. 从“映射源”列表中,选择上传映射的位置,LogicApp 资源或 IntegrationAccount

  6. 从“映射”列表中选择你映射。

  7. 完成后,保存工作流。

    你现在已经设置好了“转换 XML”操作。 在实际应用中,可能需要将已转换的数据存储在业务线 (LOB) 应用(如 SalesForce)中。 若要将已转换的输出发送到 Salesforce,请添加 Salesforce 操作。

  8. 若要测试转换操作,请触发并运行工作流。 例如,对于请求触发器,将请求发送到触发器的终结点 URL。

    “转换 XML”操作在工作流被触发后运行,并且在 XML 内容可用于转换时运行。

高级功能

映射中的引用程序集或调用自定义代码

转换 XML 操作支持从映射引用外部程序集,从而直接从 XSLT 映射调用自定义 .NET 代码。 有关详细信息,请参阅在 Azure 逻辑应用中添加工作流的 XSLT 映射

引用扩展对象

在标准工作流中,“转换 XML”操作支持指定要用于映射的 XML 扩展对象。

  1. 在“转换 XML”操作中,打开“高级参数”列表,然后选择 XML 扩展对象,这会将参数添加到操作中。

  2. 在“XML 扩展对象”框中,指定扩展对象,例如:

    Screenshot shows Transform XML action with XML Extension Object parameter and value.

字节顺序标记

默认情况下,转换的响应会以字节顺序标记 (BOM) 开头。 只有在代码视图编辑器中工作时,才能访问此功能。 若要禁用此功能,请将 transformOptions 属性设置为 disableByteOrderMark

"Transform_XML": {
    "inputs": {
        "content": "@{triggerBody()}",
        "integrationAccount": {
            "map": {
                "name": "TestMap"
            }
        },
        "transformOptions": "disableByteOrderMark"
    },
    "runAfter": {},
    "type": "Xslt"
}

后续步骤