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

使用 Azure 逻辑应用中的工作流在贸易合作伙伴之间自动传递 B2B 消息

适用于:Azure 逻辑应用(消耗 + 标准)

对于企业到企业(B2B)集成,可以通过在 Azure 逻辑应用中使用 B2B 项目和行业标准协议构建工作流,自动实现贸易合作伙伴之间的通信。

例如,可以创建集成帐户来定义贸易伙伴、协议、地图和架构等项目。 工作流支持 AS2、X12、EDIFACT 和 RosettaNet 等协议。 通过将这些 B2B 功能与 Azure 逻辑应用中提供的 1,400 多个连接器(例如 Office 365 Outlook、SQL Server 和 Salesforce)相结合,创建端到端集成。

本指南演示如何创建可以完成以下任务的示例 B2B 工作流:

  • 使用名为收到 HTTP 请求时请求触发器接收 HTTPS 请求。
  • 使用 AS2(v2) 解码作和 X12 解码作解码传入消息内容。
  • 使用 响应 操作以向调用方返回响应。

Prerequisites

  • Azure 帐户和订阅。 获取免费的 Azure 帐户

  • 你要在本示例中用于构建 B2B 集成的逻辑应用资源和空白工作流。

    AS2 (v2)X12 操作不包含任何触发器。 工作流可以从任何触发器开始,或使用任何动作来接收消息。

    本文中的示例使用名为“收到 HTTP 请求时的请求触发器。

    有关详细信息,请参见:

  • 用于定义和存储企业集成和 B2B 工作流工件的 集成帐户资源

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

    • 在集成帐户中定义至少两个 贸易合作伙伴 。 两个合作伙伴的定义必须使用相同的 业务标识限定 符,例如 AS2、X12、EDIFACT 或 RosettaNet。

    • 定义参与工作流的贸易合作伙伴之间的 AS2 协议和 X12 协议 。 每个协议需要指定主机和来宾合作伙伴。

      合作伙伴之间的消息中的内容必须与协议类型匹配。 有关接收和发送消息时要使用的协议设置的信息,请参阅:

  • 在开始使用 AS2 和 X12 之前,必须将 消耗逻辑应用标准逻辑应用链接到 集成帐户,以便可以处理贸易合作伙伴和协议等项目。 可以将集成帐户链接到多个“消耗型”或“标准型”逻辑应用资源,以共享相同的工件。

    添加 AS2 和 X12 操作时,可能需要创建与集成账户的连接:

    逻辑应用工作流 需要连接?
    消耗 - AS2 (v2) 连接器:无需连接

    - X12 连接器:需要连接
    标准 - AS2 (v2) 连接器:无需连接

    - X12 内置连接器:无需连接

添加请求触发器

若要在此示例中启动工作流,请添加 请求 触发器

  1. Azure 门户中,打开你的逻辑应用资源。

  2. 在设计器中,打开工作流。 按照以下常规步骤将名为收到 HTTP 请求时请求内置触发器添加到工作流中。

    此时会打开触发器信息窗格,其中选择了“ 参数 ”选项卡。

  3. 将触发器 的请求正文 JSON 架构 参数留空,因为触发器以平面文件格式接收 X12 消息。

    屏幕截图显示了 Azure 门户、工作流设计器和请求触发器参数。

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

    此步骤将生成 HTTP URL,稍后将使用该 URL 发送触发工作流的请求。

    屏幕截图显示工作流设计器、请求触发器参数和为请求触发器生成的 URL。

  5. 复制并保存 URL 供以后使用。

添加解码 AS2 操作

按照以下步骤添加 AS2(v2) 解码作

  1. “请求” 触发器下,按照以下 常规步骤 ,根据工作流类型添加以下 AS2 (v2) 操作:

    Workflow 操作名称
    消耗 AS2 解码
    标准 解码 AS2
  2. 在操作的Message to decode 参数中,输入要解码的消息内容。

    此示例指定 请求 触发器输出中的正文内容。 可以通过从动态内容列表中选择或输入表达式来提供此内容:

    • 若要从以前的操作中选择输出,请按照以下步骤操作动态内容列表:

      1. “消息解码”框内选择,然后选择闪电图标以打开动态内容列表。

      2. “收到 HTTP 请求时”下,选择正文,例如:

        屏幕截图显示了工作流设计器、请求触发器参数和动态内容列表,其中选择了“正文”参数。

        注意

        如果 正文 未显示在动态内容列表中,请在 “收到 HTTP 请求时 ”部分标签旁边选择“ 查看更多”。

    • 若要输入引用请求触发器输出中body属性内容的表达式,请执行以下步骤:

      1. 选中要解码的消息框,然后选择函数图标以打开表达式编辑器。

      2. 在编辑器框中,输入以下表达式,然后选择 “添加

        triggerOutputs()['body']

  3. 在操作的 消息标头 参数中,输入 AS2 操作所需的任何标头。 可以通过执行以下步骤,在headers触发器输出的属性中找到这些值:

    1. 在“ 消息头 ”部分中,选择“ 将消息标头切换为文本模式

      屏幕截图显示 AS2 解码操作,并且选择了“将消息头切换到文本模式”。

    2. “消息头 ”框中选择,然后选择函数图标以打开表达式编辑器。

    3. 在编辑器框中,输入以下表达式,然后选择 “添加

      triggerOutputs()['Headers']

      屏幕截图显示消息标头框,其中包含引用触发器输出中的标头的表达式。

    4. 若要将表达式解析为 Headers 令牌,请在设计器工具栏上选择 “代码”视图,然后选择“ 设计器”。

确认消息回执

若要确认消息接收,请使用 条件响应 操作为发件人返回包含 AS2 消息处置通知(MDN)的响应。

重要

请确保这些操作立即执行 AS2 操作,以便工作流在 AS2 操作成功时继续处理。 否则,如果 AS2 操作失败,工作流将停止处理。

添加条件操作以选择操作路径

这些步骤将添加条件操作,以便你可以指定要评估的一个或多个条件,并根据 AS2 (v2) 解码操作是否成功来选择要执行的操作。

  1. 在设计器中的 AS2 (v2) 解码操作下,按照以下常规步骤添加条件内置操作。

    将显示具有 TrueFalse 空路径的条件操作。 稍后,你可以根据条件判断结果是 true 还是 false 来添加要在这些路径中运行的操作。

    屏幕截图显示了路径为空的条件操作。

  2. 选择条件标题栏以展开操作,以便提供一个或多个要评估的条件。

  3. 在左侧 “选择值 ”框中,根据工作流类型输入以下表达式:

    消耗

    @body('AS2_Decode')?['messageContent']?['isMdnExpected']

    标准

    @body('Decode_AS2')?['messageContent']?['isMdnExpected']

    重要

    请确保 AS2 解码操作名称和输出名称与您所选择的 AS2 操作名称匹配。

  4. 从中间列表中选择等号(=)。

  5. 在右侧 的“选择值 ”框中,输入值 Expected

    屏幕截图显示了条件操作,其中显示了要评估的示例条件。

  6. 保存工作流。

设置操作路径

这些步骤指定要执行的操作,以及要根据 AS2 (v2) 解码操作是否成功返回的响应。

  1. 对于 AS2 (v2) 解码作成功时,请执行以下步骤:

    1. True 框中,选择加号(+)>添加操作

    2. 添加操作搜索框中,输入 response。 在 “请求”下,选择 “响应 ”内置作。

    3. 若要从 AS2 (v2) 解码操作输出中引用 AS2 MDN,请指定以下表达式:

      • 在操作的 Headers 参数中,对于键值输入以下表达式:

        消耗

        @body('AS2_Decode')?['outgoingMdnContent']?['outgoingMdnHeaders']

        标准

        @body('Decode_AS2')?['outgoingMdnContent']?['outgoingMdnHeaders']

      • 在操作的 Body 参数中,输入以下表达式:

        消耗

        @body('AS2_Decode')?['outgoingMdnContent']?['messageContent']

        标准

        @body('Decode_AS2')?['outgoingMdnContent']?['messageContent']

      重要

      请确保 AS2 解码操作名称和输出名称与您所选择的 AS2 操作名称匹配。

      以下示例显示了 “响应 ”作的外观:

      屏幕截图显示了访问 AS2 MDN 的响应操作和解析完毕的表达式。

  2. 对于 AS2 (v2) 解码作失败时,请执行以下步骤:

    1. False 框中,选择加号 (+) >添加操作

    2. 添加操作搜索框中,输入 response。 在 “请求”下,选择 “响应 ”内置作。

    3. 设置“响应”操作以返回所需的状态和错误。

  3. 保存工作流。

添加“解码 X12 消息”操作

按照以下步骤解码 X12 消息。

  1. 在设计器中的响应操作下面,按照以下常规步骤根据工作流类型添加以下 X12 解码操作:

    Workflow 操作名称
    消耗 解码 X12 消息
    标准 解码 X12

    有关详细信息,请参阅 使用 Azure 逻辑应用的 B2B 工作流中的 Exchange X12 消息

  2. 如果作提示你创建连接,请提供以下信息,然后选择“ 新建”。

    • 连接名称
    • 集成帐户 ID
    • 集成帐户 SAS URL

    有关详细信息,请参阅 解码 X12 消息

  3. 在操作信息窗格中,根据工作流类型指定要解码的操作的内容。

    Workflow 操作名称 参数名称
    消耗 解码 X12 消息 要解码的 X12 平面文件消息
    标准 解码 X12 要解码的消息

    此示例使用来自AS2(v2)操作输出的消息内容。 但是,此输出使用 JSON 对象格式,并且经过 base64 编码。 必须将内容转换为字符串。

    若要转换内容,请根据工作流类型在消息到解码框中输入以下表达式:

    消耗

    @base64ToString(body('AS2_Decode')?['messageContent'])

    标准

    @base64ToString(body('Decode_AS2')?['messageContent'])

    重要

    请确保 AS2 解码操作名称和输出名称与您所选择的 AS2 操作名称匹配。

  4. 保存工作流。

  5. 若要将表达式解析为令牌,请在代码视图和设计器视图之间切换。 在设计器工具栏上,选择 “代码”视图,然后选择“ 设计器”。

现在已设置此示例 B2B 工作流。 在实际应用中,你可能想要将解码的 X12 内容存储在业务线(LOB)应用或数据存储中。

有关详细信息,请参见:

若要连接自己的 LOB 应用并在工作流中使用这些 API,请添加更多作或 编写自定义 API