你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 逻辑应用中对平面文件进行编码和解码

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

在企业对企业 (B2B) 方案中将 XML 内容发送给业务合作伙伴之前,你可能希望先对该内容进行编码。 如果收到编码的 XML 内容,则需要先解码该内容。 在 Azure 逻辑应用中生成逻辑应用工作流时,可使用“平面文件”内置连接器操作和平面文件编码和解码架构对平面文件进行编码和解码。 可在多租户消耗型逻辑应用工作流和单租户标准型逻辑应用工作流中使用“平面文件”操作。

虽然没有“平面文件”触发器可用,但你也使用任何触发器或操作将源 XML 内容馈送到你的工作流。 例如,可使用内置连接器触发器、可用于 Azure 逻辑应用的托管或 Azure 托管连接器触发器,甚至其他应用。

本文介绍如何向工作流添加“平面文件”编码和解码操作。

  • 向工作流添加“平面文件”编码或解码操作。
  • 选择要使用的架构。

有关详细信息,请查看以下文档:

先决条件

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

  • 逻辑应用工作流(空白或现有),在其中你希望使用“平面文件”操作。

    如果有空白工作流,请使用你想要用于启动工作流的任何触发器。 此示例使用请求触发器。

  • 逻辑应用资源和工作流。 平面文件操作没有任何可用的触发器,因此工作流必须至少包含触发器。 有关详细信息,请参阅以下文档:

  • 用于对 XML 内容进行编码和解码的平面文件架构。 有关详细信息,请在 Azure 逻辑应用中添加要用于工作流的架构

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

    重要

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

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

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

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

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

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

限制

  • 要解码的 XML 内容必须采用 UTF-8 格式编码。

  • 在平面文件架构中,请确保包含的 XML 组没有将太多的 max count 属性设置为大于 1 的值。 避免将 max count 属性值大于 1 的 XML 组嵌套在 max count 属性值大于 1 的另一个 XML 组中。

  • 当 Azure 逻辑应用分析平面文件架构时,并且每次架构支持选择下一个片段时,Azure 逻辑应用都会生成一个符号,并针对该片段进行预测。 如果架构允许过多的此类构造(例如超过 100,000 个),架构的扩展就会变得过于庞大,从而消耗过多的资源和时间。

上传架构

创建架构后,现在必须根据下列场景上传架构:

添加“平面文件编码”操作

  1. Azure 门户的设计器中打开逻辑应用工作流(如果尚未打开)。

  2. 如果工作流没有触发器或工作流所需的任何其他操作,请先添加这些操作。 平面文件操作没有任何可用的触发器。

    此示例继续使用名为“收到 HTTP 请求时”的请求触发器。

  3. 在工作流设计器中,在要添加“平面文件”操作的步骤下,选择“新步骤”。

  4. 在“选择操作”搜索框中,选择“内置”。 在搜索框中输入“平面文件”。

  5. 在操作列表中,选择名为“平面文件编码”的操作。

    该屏幕截图显示 Azure 门户和消耗型工作流设计器,其中搜索框中显示“平面文件”,并且已选中“平面文件编码”操作。

  6. 在操作的 Content 属性中,按照以下步骤提供触发器或要编码的上一操作的输出:

    1. 在“内容”框中单击,以显示动态内容列表。

    2. 从动态内容列表中,选择要编码的平面文件内容。

      对于此示例,请从动态内容列表中,在“收到 HTTP 请求时”下选择“正文”令牌,该令牌表示触发器的正文内容输出。

    该屏幕截图显示消耗型工作流设计器和“Content”属性,其中包含动态内容列表和已选择要编码的内容。

    注意

    如果“正文”属性未出现在动态内容列表中,请选择“收到 HTTP 请求时”部分标签旁边的“查看详细信息”。 还可以直接在“内容”框中输入要编码的内容。

  7. 从“架构名称”列表中选择你的架构。

    该屏幕截图显示消耗型工作流设计器和打开的“架构名称”列表,其中包含选择要用于编码的架构。

    注意

    如果架构列表为空,则逻辑应用资源不会链接到集成帐户,或者集成帐户不包含任何架构文件。

    完成后,操作将如下所示:

    该屏幕截图显示消耗型工作流,其中“平面文件编码”操作已完成。

  8. 若要向操作添加其他可选参数,请从“添加新参数”列表中选择这些参数。

    参数 价值 说明
    空节点生成模式 ForcedDisabled、HonorSchemaNodeProperty 或 ForcedEnabled 用于空节点生成的模式(采用平面文件编码)

    对于 BizTalk,平面文件架构具有控制空节点生成的属性。 你可以遵循平面文件架构的空节点生成属性行为,也可以使用此设置让 Azure Logic应用生成或省略空节点。 有关详细信息,请参阅空元素的标记
    XML 规范化 “是”或“否” 用于在平面文件编码中启用或禁用 XML 规范化的设置。 有关详细信息,请参阅 XmlTextReader.Normalization
  9. 保存工作流。 在设计器工具栏上选择“保存”。

添加“平面文件解码”操作

  1. Azure 门户的设计器中打开逻辑应用工作流(如果尚未打开)。

  2. 如果工作流没有触发器或工作流所需的任何其他操作,请先添加这些操作。 平面文件操作没有任何可用的触发器。

    此示例继续使用名为“收到 HTTP 请求时”的请求触发器。

  3. 在工作流设计器中,在要添加“平面文件”操作的步骤下,选择“新步骤”。

  4. 在“选择操作”搜索框中,选择“内置”。 在搜索框中输入“平面文件”。

  5. 在操作列表中,选择名为“平面文件解码”的操作。

    该屏幕截图显示 Azure 门户和消耗型工作流设计器,其中搜索框中显示“平面文件”,并且已选中“平面文件解码”操作。

  6. 在操作的 Content 属性中,按照以下步骤提供触发器或要解码的上一操作的输出:

    1. 在“内容”框中单击,以显示动态内容列表。

    2. 从动态内容列表中,选择要编码的平面文件内容。

      对于此示例,请从动态内容列表中,在“收到 HTTP 请求时”下选择“正文”令牌,该令牌表示触发器的正文内容输出。

    该屏幕截图显示消耗型工作流设计器和“Content”属性,其中包含动态内容列表和已选择要解码的内容。

    注意

    如果“正文”属性未出现在动态内容列表中,请选择“收到 HTTP 请求时”部分标签旁边的“查看详细信息”。 还可以直接在“内容”框中输入要编码的内容。

  7. 从“架构名称”列表中选择你的架构。

    该屏幕截图显示消耗型工作流设计器和打开的“架构名称”列表,其中包含选择要用于解码的架构。

    注意

    如果架构列表为空,则逻辑应用资源不会链接到集成帐户,或者集成帐户不包含任何架构文件。

    完成后,操作将如下所示:

    该屏幕截图显示消耗型工作流,其中“平面文件解码”操作已完成。

  8. 保存工作流。 在设计器工具栏上选择“保存”。

你现在已经完成了平面文件解码操作的设置。 在实际应用中,你可能需要将已解码的数据存储在业务线 (LOB) 应用(如 Salesforce)中。 你也可以将已解码的数据发送给贸易合作伙伴。 若要将解码操作的输出发送到 Salesforce 或贸易合作伙伴,请使用 Azure 逻辑应用中提供的其他连接器。

测试工作流

要触发工作流,请执行以下步骤:

  1. 在“请求”触发器中,找到 HTTP POST URL 属性,并复制 URL。

  2. 打开 HTTP 请求工具,并使用其说明将 HTTP 请求发送到复制的 URL,包括“请求”触发器所需的方法。

    此示例将 POST 方法与 URL 配合使用。

  3. 在请求正文中包含要编码或解码的 XML 内容。

  4. 工作流完成运行后,转到工作流的运行历史记录,并检查“平面文件”操作的输入和输出。

后续步骤