使用 Azure 逻辑应用程序中的工作流交换 EDIFACT 消息

要在使用 Azure 逻辑应用创建的工作流中发送和接收 EDIFACT 消息,请使用 EDIFACT 连接器,它会提供用于支持和管理 EDIFACT 通信的操作。

本指南介绍如何向现有的逻辑应用工作流添加 EDIFACT 编码和解码操作。 如果没有可用的 EDIFACT 触发器,则可以使用任何触发器启动工作流。 本指南中的示例使用“请求”触发器

连接器技术参考

EDIFACT 连接器具有不同的版本,具体取决于逻辑应用类型和主机环境

逻辑应用 环境 连接器版本
消耗 多租户 Azure 逻辑应用 EDIFACT 托管连接器(标准类)。 EDIFACT 连接器仅提供操作,但你可以使用适配你的方案的任何触发器。 有关详细信息,请参阅以下文档:

- EDIFACT 托管连接器参考
- EDIFACT 消息限制
消耗 集成服务环境 (ISE) EDIFACT 托管连接器(标准类)和 EDIFACT ISE 版本,其消息限制与标准类不同。 EDIFACT 连接器仅提供操作,但你可以使用适配你的方案的任何触发器。 有关详细信息,请参阅以下文档:

- EDIFACT 托管连接器参考
- EDIFACT 消息限制
标准 单租户 Azure 逻辑应用和应用服务环境 v3(仅限 Windows 计划) EDIFACT 内置连接器(预览版)和 EDIFACT 托管连接器。 内置版本在以下方面有所不同:

- 内置版本仅提供操作,但你可以使用适合你的方案的任何触发器。

- 内置版本可以直接访问 Azure 虚拟网络。 不需要本地数据网关。

有关详细信息,请参阅以下文档:

- EDIFACT 托管连接器参考
- EDIFACT 内置连接器操作
- EDIFACT 消息限制

EDIFACT 内置操作(仅限标准工作流 - 预览版)

预览版 EDIFACT 内置连接器具有以下操作,它们类似于其对应的 EDIFACT 托管连接器操作,但限制和已知问题中指出的那些除外。

限制和已知问题

  • 预览 EDIFACT 内置连接器

    • 此功能为预览版,受 Azure 预览版补充使用条款约束。

    • 此连接器的操作当前支持高达 100 MB 的有效负载。

    • 预览版 EDIFACT 解码操作当前不包含以下功能:

      • 检查是否有重复的交换、组和事务集控制编号(如果已配置)。

      • 保留整个交换。

      否则,预览版 EDIFACT 编码EDIFACT 解码内置连接器操作的功能类似于其对应的 EDIFACT 托管连接器操作。

    • 此连接器的操作当前不支持与多个事务或批处理消息的交换。

    • 此连接器的操作当前不会发出特定于 EDI 的跟踪。

先决条件

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

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

    • 集成帐户和逻辑应用资源必须存在于同一 Azure 订阅和 Azure 区域中。

    • 定义至少两个参与工作流中使用的 EDIFACT 操作的参与方。 这两个合作伙伴的定义必须使用相同的业务标识限定符,在此方案中为“ZZZ - 双方约定”。

    • 定义参与工作流的参与方之间的 EDIFACT 协议。 每个协议需要指定主机和来宾合作伙伴。 你与其他合作伙伴之间的消息中的内容必须与协议类型匹配。 有关接收和发送消息时要使用的协议设置的信息,请参阅 EDIFACT 消息设置

      重要

      EDIFACT 连接器仅支持 UTF-8 字符。 如果输出中包含意外的字符,请检查 EDIFACT 消息是否使用 UTF-8 字符集。

  • 无论使用的是“消耗”还是“标准”逻辑应用工作流,逻辑应用资源可能需要集成帐户的链接:

    逻辑应用工作流 需要链接?
    消耗 需要连接和链接到集成帐户。 可以在将 EDIFACT 操作添加到工作流时创建连接。
    标准 需要连接到集成帐户,但不需要链接。 可以在将 EDIFACT 操作添加到工作流时创建连接。
  • 要在其中使用 EDIFACT 操作的逻辑应用资源和工作流。

    有关详细信息,请参阅以下文档:

为 EDIFACT 消息编码

名为“编码到 EDIFACT 消息”操作的 EDIFACT 托管连接器操作和名为“EDIFACT 编码”的 EDIFACT 内置连接器操作会执行以下任务,但“限制和已知问题“中指出的那些除外:

  • 通过将发送方限定符和标识符与接收方限定符和标识符进行匹配来解析协议。

  • 序列化电子数据交换 (EDI),它将 XML 编码的消息转换为交换中的 EDI 事务集。

  • 应用事务集标头和尾部段。

  • 为每个传出交换生成交换控制编号、组控制编号和事务集控制编号。

  • 替换有效负载数据中的分隔符。

  • 验证 EDI 和特定于合作伙伴的属性,例如针对消息架构的事务集数据元素的架构、事务集数据元素,以及对事务集数据元素的扩展验证。

  • 为每个事务集生成 XML 文档。

  • 请求技术确认和/或功能确认(如果已配置)。

    • 作为技术确认,CONTRL 消息指示接收交换。

    • 作为功能确认,CONTRL 消息指示接受或拒绝收到的交换、组或消息,包括错误或不受支持的功能列表。

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

  2. 在设计器中,按照这些常规步骤将名为“按协议名称编码为 EDIFACT 消息”的 EDIFACT 操作添加到工作流

    注意

    如果想要改为使用“按标识编码为 EDIFACT 消息”操作,则稍后必须提供其他值,例如由 EDIFACT 协议指定的“发送方标识符”和“接收方标识符”。 你还必须指定“要编码的 XML 消息”,该消息可以是触发器的输出,也可以是前面操作的输出。

  3. 为集成帐户提供以下连接信息:

    properties 必选 说明
    连接名称 连接名称
    集成帐户 从可用的集成帐户列表中,选择要使用的帐户。

    例如:

    Screenshot shows Azure portal, Consumption workflow, and connection box for action named Encode to EDIFACT message by agreement name.

  4. 完成操作后,选择“创建”。

  5. 在 EDIFACT 操作中,提供以下属性值:

    properties 必选 说明
    EDIFACT 协议的名称 要使用的 EDIFACT 协议。
    要编码的 XML 消息 EDIFACT 协议指定的消息发送方的业务标识符
    其他参数 此操作包括以下其他参数:

    - 数据元素分隔符
    - 转义指示器
    - 组件分隔符
    - 重复分隔符
    - 段终止符
    - 段终止符后缀
    - 十进制指示器

    有关详细信息,请查看 EDIFACT 消息设置

    例如,要编码的 XML 消息有效负载可以是从“请求”触发器输出的“正文”内容:

    Screenshot shows Consumption workflow, action named Encode to EDIFACT message by agreement name, and message encoding properties.

  6. 保存工作流。

为 EDIFACT 消息解码

名为“解码 EDIFACT 消息”操作的 EDIFACT 托管连接器操作和名为“EDIFACT 解码”的 EDIFACT 内置连接器操作会执行以下任务,但“限制和已知问题“中指出的那些除外:

  • 针对贸易合作伙伴协议验证信封。

  • 通过将发送方限定符和标识符与接收方限定符和标识符进行匹配来解析协议。

  • 当交换有多个基于协议的“接收设置”的事务时,将交换拆分为多个事务。

  • 拆装交换。

  • 验证电子数据交换 (EDI) 和特定于合作伙伴的属性,例如交换信封结构、针对控制架构的信封架构、针对消息架构的事务集数据元素的架构,以及对事务集数据元素的扩展验证。

  • 验证交换、组和事务集控制编号是否不重复(仅托管连接器)(如果已配置),例如:

    • 根据以前收到的交换检查交换控制编号。

    • 针对交换中的其他组控制编号检查组控制编号。

    • 针对该组中的其他事务集控制编号检查事务集控制编号。

  • 将交换拆分为事务集,或保留整个交换(仅托管连接器),例如:

    • 将交换拆分为事务集 - 出错时暂停事务集。

      解码操作将交换拆分为事务集并分析每个事务集。 该操作仅将未通过验证的事务集输出到 badMessages,并将剩余事务集输出到 goodMessages

    • 将交换拆分为事务集 - 出错时暂停交换。

      解码操作将交换拆分为事务集并分析每个事务集。 如果交换中的一个或多个事务集未能通过验证,该操作会将该交换中的所有事务集输出到 badMessages

    • 保留交换 - 出错时暂停事务集。

      解码操作会保留交换并处理整个批处理交换。 该操作仅将未通过验证的事务集输出到 badMessages,并将剩余事务集输出到 goodMessages

    • 保留交换 - 出错时暂停交换。

      解码操作会保留交换并处理整个批处理交换。 如果交换中的一个或多个事务集未能通过验证,该操作会将该交换中的所有事务集输出到 badMessages

  • 生成技术确认和/或功能确认(如果已配置)。

    • 技术确认或 CONTRL ACK,报告收到的完整交换的语法检查结果。

    • 确认接受或拒绝接收的交换或组的功能确认。

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

  2. 在设计器中,按照这些常规步骤将名为“解码 EDIFACT 消息”的 EDIFACT 操作添加到工作流

  3. 为集成帐户提供以下连接信息:

    properties 必选 说明
    连接名称 连接名称
    集成帐户 从可用的集成帐户列表中,选择要使用的帐户。

    例如:

    Screenshot shows Consumption workflow designer and connection pane for the action named Decode EDIFACT message.

  4. 完成操作后,选择“创建”。

  5. 在 EDIFACT 操作中,提供以下属性值:

    properties 必选 说明
    要解码的 EDIFACT 平面文件消息 要解码的 XML 平面文件消息。
    其他参数 此操作包括以下其他参数:

    - 组件分隔符
    - 数据元素分隔符
    - 转义指示器
    - 重复分隔符
    - 段终止符
    - 段终止符后缀
    - 十进制指示器
    - 有效负载字符集
    - 段终止符后缀
    - 保留交换
    - 出错时挂起交换

    有关详细信息,请查看 EDIFACT 消息设置

    例如,要解码的 XML 消息有效负载可以是从“请求”触发器输出的“正文”内容:

    Screenshot shows Consumption workflow, action named Decode EDIFACT message, and message decoding properties.

处理 EDIFACT 文档中的 UNH2.5 段

在 EDIFACT 文档中,UNH2.5 段用于架构查找。 例如,在此示例 EDIFACT 消息中,UNH 字段为 EAN008

UNH+SSDD1+ORDERS:D:03B:UN:EAN008

若要处理 EDIFACT 文档或处理具有 UN2.5 段的 EDIFACT 消息,请执行以下步骤:

  1. 更新或部署具有 UNH2.5 根节点名称的架构。

    例如,假设示例 UNH 字段的架构根名称为 EFACT_D03B_ORDERS_EAN008。 对于具有不同 UNH2.5 段的每个 D03B_ORDERS,需要部署单个架构。

  2. Azure 门户中,根据你拥有的是消耗型或标准型逻辑应用工作流,将架构添加到集成帐户资源或逻辑应用资源。

  3. 无论是使用 EDIFACT 解码操作还是编码操作,请上传架构,并分别在 EDIFACT 协议的“接收设置”或“发送设置”中设置架构设置。

  4. 若要编辑 EDIFACT 协议,请在“协议”窗格中选择协议。 在“协议”窗格的工具栏上,选择“编辑为 JSON”。

    • 在协议的 receiveAgreement 部分中,找到 schemaReferences 部分,并添加 UNH2.5 值。

      Screenshot showing the Azure portal with an EDIFACT agreement's

    • 在协议的 sendAgreement 部分中,找到 schemaReferences 部分,并添加 UNH2.5 值。

      Screenshot showing the Azure portal with an EDIFACT agreement's

后续步骤