在 Azure 逻辑应用中为 B2B 工作流交换 EDIFACT 消息

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

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

连接器技术参考

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

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

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

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

- 接受平面文件作为托管版本的输入与 XML。

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

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

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

EDIFACT 内置操作(仅限标准工作流)

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

限制和已知问题

  • EDIFACT 内置连接器

    • 此连接器的操作当前支持高达 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 托管连接器作接受 XML 消息作为输入。 在标准工作流中,EDIFACT 内置连接器作接受平面文件,而 EDIFACT 托管连接器接受 XML 消息。

EDIFACT 消息编码

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

  • 通过匹配发送方的限定符和标识符以及接收方的限定符和标识符来解决协议。

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

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

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

  • 替换数据包中的分隔符。

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

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

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

    • 作为技术确认信号,CONTRL 消息确认交互的接收。

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

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

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

    注意

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

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

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

    例如:

    屏幕截图显示了 Azure 门户、使用量工作流和连接框,用于执行名为“编码到 EDIFACT”消息的协议操作。

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

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

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

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

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

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

    屏幕截图显示“消耗”工作流,操作被命名为“通过协议名称编码为 EDIFACT 消息”,以及消息编码属性。

  6. 保存工作流。

解码 EDIFACT 消息

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

  • 验证数据包是否符合贸易伙伴协议。

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

  • 将一个交换分成多个事务集,当交换包含多个事务时,依据协议的“接收设置”进行分拆。

  • 拆卸互换件。

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

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

    • 检查交换控制编号,并与以前收到的交换进行核对。

    • 检查组控制编号与交换中的其他组控制编号是否一致。

    • 通过将事务集控制编号与该组中的其他事务集控制编号进行比对。

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

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

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

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

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

    • 保持接口交换 - 出错时暂停事务集。

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

    • 保持交换 - 发生错误时暂停交换。

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

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

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

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

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

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

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

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

    例如:

    屏幕截图显示了用于名为“解码 EDIFACT 消息”的操作的消费工作流设计器和连接窗格。

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

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

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

    - 组件分隔符
    - 数据元素分隔符
    - 释放指示器
    - 重复分隔符
    - 段终止符
    - 段终止符后缀
    - 十进制指示器
    - 有效负载字符集
    - 段终止符后缀
    - 保持互换性
    - 出错时暂停互通

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

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

    屏幕截图显示消耗工作流、名为“解码 EDIFACT 消息”的操作和消息解码属性。

处理 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 值。

      显示 Azure 门户的屏幕截图,其中 EDIFACT 协议的“receiveAgreement”部分在 JSON 编辑器中,且“schemaReferences”部分突出显示。

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

      显示 Azure 门户的屏幕截图,其中 EDIFACT 协议的“sendAgreement”部分在 JSON 编辑器中,且“schemaReferences”部分突出显示。