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

教程:使用 Azure 逻辑应用创建基于计划的自动化工作流

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

本教程介绍如何使用 Azure 逻辑应用构建一个按重复计划运行的示例工作流。 此示例专门创建一个消耗逻辑应用工作流,该工作流用于检查两个地点之间的行程时间(包括交通状况),并且在每个工作日的上午运行。 如果该时间超过特定的限制,该工作流会向你发送一封电子邮件,其中包括到达目的地所需的行程时间和额外时间。 该工作流包括各种步骤,这些步骤从基于计划的触发器开始,后跟必应地图操作、数据操作、控制流操作和电子邮件通知操作。

完成后,你的工作流类似于以下概括示例:

屏幕截图显示使用重复触发器运行的示例消耗工作流。

提示

若要了解详细信息,可以向 Azure Copilot 提出以下问题:

  • 什么是 Azure 逻辑应用?
  • 什么是消耗逻辑应用工作流?
  • 什么是必应地图连接器?
  • 什么是数据操作?
  • 什么是控制流操作?
  • 什么是 Office 365 Outlook 连接器?

若要查找 Azure Copilot,请在 Azure 门户 工具栏上,选择 Copilot

使用标准逻辑应用资源可以创建类似的工作流。 但是,用户体验和教程步骤与消耗版略有不同。

先决条件

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

  • Azure 逻辑应用支持的电子邮件提供商(例如 Office 365 Outlook 或 Outlook.com)提供的电子邮件帐户。 对于其他受支持的电子邮件提供程序,请参阅 Azure 逻辑应用的连接器

    本教程通过工作或学校帐户使用 Office 365 Outlook。 如果你使用其他电子邮件帐户,则常规步骤保持不变,但用户体验可能稍有不同。 如果使用 Outlook.com,请转为使用个人 Microsoft 帐户登录。

    重要

    如果你要使用 Gmail 连接器,只有 G-Suite 商业帐户可以在逻辑应用工作流中不受限制地使用此连接器。 如果有 Gmail 用户帐户,则只能将此连接器与 Google 批准的特定服务一起使用,也可以创建用于通过 Gmail 连接器进行身份验证的 Google 客户端应用。 有关详细信息,请参阅 Azure 逻辑应用中 Google 连接器的数据安全和隐私策略

  • 若要获取路线的行程时间,需要必应地图 API 的访问密钥。 若要获取此密钥,请执行如何获取必应地图密钥中的步骤。

  • 如果工作流需要通过仅限流量流经特定 IP 地址的防火墙进行通信,则该防火墙需要允许访问该逻辑应用资源所在的 Azure 区域中的 Azure 逻辑应用使用的入站出站 IP 地址。 如果工作流还使用托管连接器(例如 Office 365 Outlook 连接器或 SQL 连接器),或使用自定义连接器,则防火墙还需要允许访问逻辑应用资源所在的 Azure 区域中的所有托管连接器出站 IP 地址

创建消耗逻辑应用资源

  1. Azure 门户中,使用 Azure 帐户登录。

  2. 在 Azure 门户搜索框中输入“逻辑应用”,然后选择“逻辑应用”

    屏幕截图显示了 Azure 门户搜索框,其中输入了“逻辑应用”并选择了“逻辑应用”选项。

  3. 在“逻辑应用”页工具栏上,选择“添加”

    此时会显示“创建逻辑应用”页,其中显示了以下选项

    计划 说明
    消耗 创建一个逻辑应用资源,该资源仅支持在多租户 Azure 逻辑应用中运行的一个工作流,并使用消耗计费模式
    标准 创建支持多个工作流的逻辑应用资源。 可以使用以下选项:

    - 工作流服务计划:工作流在单租户 Azure 逻辑应用中运行,使用标准计费模式

    - 应用服务环境 V3:工作流在单租户 Azure 逻辑应用中运行,使用应用服务环境计费计划
  4. 在“创建逻辑应用”页面上,选择“消耗(多租户)”

  5. 在“基本信息”选项卡上,提供有关逻辑应用资源的以下信息

    properties 需要 说明
    订阅 <Azure-subscription-name> Azure 订阅名称。

    此示例使用“即用即付”。
    资源组 <Azure-resource-group-name> 你在其中创建逻辑应用和相关资源的 Azure 资源组。 该名称在各个区域中必须独一无二,并且只能包含字母、数字、连字符 (-)、下划线 (_)、括号 (()) 和句点 (.)。

    此示例创建一个名为 LA-TravelTime-RG 的资源组
    逻辑应用名称 <logic-app-resource-name> 逻辑应用资源名称在各个区域中必须唯一,且只能包含字母、数字、连字符(-)、下划线(_)、括号(())和句点(.)。

    此示例创建一个名为 LA-TravelTime 的逻辑应用资源
    区域 <Azure-region> 应用的 Azure 数据中心区域。

    此示例使用“美国西部”。
    启用日志分析 只在要启用诊断日志记录时,才更改此选项。 对于本教程,请保留默认选择。

    注意:此选项仅适用于消耗逻辑应用

    注意

    对于支持可用性区域的 Azure 区域中的新建和现有“消耗”逻辑应用工作流,将自动启用可用性区域。 有关详细信息,请参阅 Azure Functions 的可靠性通过区域冗余和可用性区域保护逻辑应用免受区域故障的影响

    完成后,设置应如以下示例所示:

    屏幕截图显示了 Azure 门户和多租户消耗逻辑应用的创建页面和详细信息。

  6. 完成后,选择“查看 + 创建”。 在 Azure 验证你的逻辑应用资源的相关信息后,请选择“创建”。

  7. 在 Azure 部署你的逻辑应用资源后,请选择“转到资源”。 或者,使用 Azure 搜索框查找并选择你的逻辑应用资源。

接下来,添加根据指定计划运行工作流的“定期”计划触发器。 每个工作流必须从触发器开始,在发生特定事件或新数据符合特定条件的情况下触发。

添加重复触发器

  1. 在工作流设计器上,按照以下常规步骤添加名为“Recurrence”的计划触发器

  2. 使用以下标题重命名“定期”触发器:“每个工作日上午检查行程时间”

    屏幕截图显示了“定期”触发器以及重命名触发器的工作流设计器和信息窗格,。

  3. 在触发器信息框中,提供以下信息:

    参数 价值 说明
    Interval 1 在两次检查之间需等待的时间间隔数
    频率 Week 用于定期触发的时间单位
    在这些日期 星期一、星期二、星期三、星期四、星期五 只有将“频率”设置为“周”时,此设置才可用。
    在这些小时 7、8、9 只有将“频率”设置为“周”或“天”时,此设置才可用。 对于此定期,请选择一天中的某些小时。 此示例在 7、8、9 点运行
    在这些分钟 0、15、30、45 只有将“频率”设置为“周”或“天”时,此设置才可用。 对于此定期,请选择一天中的某些分钟。 此示例在零点启动,每隔 15 分钟运行一次。

    完成后,触发器信息框将类似于以下示例:

    屏幕截图显示了与周相关的属性设置为上表中所述的值。

    此触发器在每个工作日每隔 15 分钟触发一次,开始时间为早晨 7:00,结束时间为早晨 9:45。 “预览”框显示定期触发计划。 有关详细信息,请参阅计划任务和工作流以及工作流操作和触发器

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

逻辑应用资源和更新的工作流现在显示在 Azure 门户中。 但是,工作流仅根据指定的计划触发,且不会执行其他操作。 因此,请添加一项在触发器触发时进行响应的操作。

获取路线的行程时间

有了触发器以后,即可添加必应地图,用于获取两个地点之间的行程时间。 Azure 逻辑应用提供适用于必应地图 API 的连接器,以方便你获取此信息。 在开始此任务之前,请确保有必应地图 API 密钥,如本教程的先决条件部分所述。

  1. 在工作流设计器的“定期”触发器下,按照以下常规步骤添加名为“获取路线”的必应地图操作

  2. 如果没有必应地图连接,系统会提示创建一个连接。 提供以下连接信息,然后选择“创建”

    参数 必须 说明
    连接名称 <Bing-Maps-connection-name> 提供连接的名称。 此示例使用“BingMapsConnection”
    API 密钥 <Bing-Maps-API-key> 输入你之前收到的必应地图 API 密钥。 如果没有必应地图密钥,请了解如何获取密钥

    以下示例显示了示例连接信息:

    屏幕截图显示了必应地图连接框,其中包含示例连接名称和必应地图 API 密钥。

  3. 使用以下标题重命名“获取路线”操作:“根据交通情况获取路线和行程时间”

  4. 在操作中,打开高级参数列表,并添加以下属性

    • 优化
    • 距离单位
    • 旅行模式
  5. 现在为以下操作的属性输入值:

    参数 价值 说明
    路标 1 <start-location> 你的路线的起点。 此示例指定了一个示例起始地址。
    路标 2 <end-location> 你的路线的终点。 此示例指定了一个示例终点地址。
    优化 timeWithTraffic 一个参数,用于优化路线,例如距离、当前交通状况下的行程时间,等等。 选择参数值 timeWithTraffic
    距离单位 <your-preference> 路线的距离单位。 此示例使用“英里”作为单位。
    旅行模式 驾车 路线的旅行模式。 选择“驾车”模式。

    有关这些参数和值的详细信息,请参阅计算路线

    以下示例显示了示例操作信息:

    屏幕截图显示了已完成的“获取路线”操作。

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

接下来创建一个变量,以便将当前的行程时间转换为分钟而非秒,然后将其存储。 这样即可避免重复转换,可以在后面的步骤中更方便地使用该值。

创建用于存储行程时间的变量

有时候,可能需要对工作流中的数据运行操作,再在以后的操作中使用相关结果。 若要保存这些结果,方便以后重复使用或引用,可以创建变量来存储这些处理后的结果。 只能在工作流的顶层创建变量。

默认情况下,“获取路线”操作通过“旅行期间交通”属性返回特定交通状况下的当前行程时间(以秒为单位)。 将该值改为转换为分钟并进行存储以后,该值在以后就会更易于重复使用,不需再次转换。

  1. 在“获取路线”操作下,按照以下常规步骤添加名为“初始化变量”的“变量”操作

  2. 使用以下标题重命名“初始化变量”操作:“创建变量以存储行程时间”

  3. 提供以下操作信息:

    参数 价值 描述
    Name travelTime 变量的名称。 本示例使用 travelTime
    类型 整型 变量的数据类型
    <initial-value> 一个表达式,可将当前的行程时间从秒转换为分钟(参见此表下面的步骤)。

    若要为“值”属性创建表达式,请执行以下步骤

    1. 选择“值”框,其中显示了动态内容列表(闪电图标)和表达式编辑器(公式图标)的选项,然后选择表达式编辑器

      屏幕截图显示了名为“初始化变量”的操作,其中光标位于“值”属性内。

      表达式编辑器提供可用于在表达式中执行操作的函数。 动态内容列表提供先前操作的输出,你可以选择这些输出作为输入,以便与工作流中的后续操作一起使用。

    2. 在表达式编辑器中,输入以下表达式:div(,60)

      屏幕截图显示了表达式编辑器,其中输入了 div(,60) 表达式。

    3. 在表达式内,将光标置于左括号 ( ( ) 与逗号 ( , ) 之间,并选择“动态内容”。

      屏幕截图显示了在 div(,60) 表达式中放置光标并选择“动态内容”的位置。

    4. 在动态内容列表中,选择输出值“旅行期间交通”

      如果未显示输出,请在操作名称旁边的动态内容列表中,选择“查看更多”

      屏幕截图显示了为名为“旅行期间交通”的输出选择的值。

    5. 在表达式中解析输出值后,选择“添加”

      屏幕截图显示了所选的“添加”按钮。

      以下示例显示了“值”属性现在的显示方式

      屏幕截图显示了“值”属性和解析的表达式。

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

接下来添加一个条件,检查当前的行程时间是否长于特定的限制。

将行程时间与限制进行比较

  1. 在“创建变量以存储行程时间”操作,按照以下常规步骤添加名为“条件”的控制操作

  2. 使用以下标题重命名条件:“如果行程时间超出限制”

  3. 生成一个条件,用于检查 travelTime 输出值是否超过指定的限制,如下所示

    1. 在条件中,选择条件左侧的“选择值”框,然后选择动态内容列表的选项(闪电图标)

    2. 在“变量”下,选择名为“travelTime”的输出

      屏幕截图显示了名为“选择值”的左框、其中打开了动态内容列表并选择了 travelTime 输出。

    3. 在中间的比较框中,选择名为“大于”的运算符。

    4. 在条件右侧的“选择值”框中,输入以下值:15

      完成后,条件如以下示例所示:

      屏幕截图显示了用于将行程时间与指定限制进行比较的已完成条件。

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

接下来,添加在行程时间超出限制时需运行的操作。

在超出限制时发送电子邮件

现在,添加一个操作,用于在行程时间超出限制时发送电子邮件。 该电子邮件包括当前的行程时间以及行完指定的路线所需的额外时间。

  1. 在条件的“True”分支中,选择加号 (+),然后选择“添加操作”

  2. 按照以下常规步骤添加名为“发送电子邮件”的 Office 365 Outlook 操作

    • 对于 Azure 工作或学校帐户,请选择 Office 365 Outlook 版本
    • 对于个人 Microsoft 帐户,请选择 Outlook.com 版本

    本示例接下来选择 Office 365 Outlook。

    屏幕截图显示了已选择“发送电子邮件”的 Office 365 Outlook 操作。

  3. 如果还没有连接,请在系统提示时登录并验证对你的电子邮件帐户的访问权限。

    Azure 逻辑应用创建到电子邮件帐户的连接。

  4. 使用以下标题重命名操作:“发送带有行程时间的电子邮件”

  5. 对于“收件人”属性,输入收件人的电子邮件地址。 为进行测试,可以使用你的电子邮件地址。

  6. 对于“主题”属性,通过执行以下步骤指定电子邮件的主题,并包括 travelTime 变量:

    1. 输入文本“当前行程时间(分钟)”:带尾随空格。 将光标保留在“主题”框中,然后选择动态内容列表的选项(闪电图标)

    2. 在动态内容列表中,在“变量”部分选择名为“travelTime”的变量

      注意

      如果动态内容列表不自动显示“travelTime”变量,请在“变量”标签旁边选择“查看更多”。 变量可能不会显示,因为“主题”属性需要字符串值,而 travelTime 是整数

  7. 对于“正文”属性,请按照以下步骤指定电子邮件正文的内容:

    1. 输入文本“添加额外行程时间(分钟)”:带尾随空格。 将光标保留在“正文”框中,然后选择表达式编辑器的选项(公式图标)

    2. 在表达式编辑器中输入“sub(,15)”,以便计算超出限制的分钟数:

      屏幕截图显示了已输入 sub(,15) 的表达式编辑器。

    3. 在表达式内,将光标置于左括号 ( ( ) 与逗号 ( , ) 之间,并选择“动态内容”。

      屏幕截图显示了在 sub(,15) 表达式中放置光标并选择“动态内容”的位置。

    4. 在“变量”下选择“travelTime”。

      屏幕截图显示了动态内容列表,并选定了“travelTime”变量。

    5. 在表达式中解析变量后,选择“添加”。

      “正文”属性现在如下所示:

      屏幕截图显示了电子邮件操作“正文”属性中解析的表达式。

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

接下来,测试并运行你的工作流,它现在看起来类似于以下示例:

屏幕截图显示了完整的逻辑应用工作流示例。

运行工作流

若要手动启动工作流,请在设计器工具栏中选择“运行”>“运行”

  • 如果当前的行程时间始终没有超出限制,则工作流不会执行任何其他操作,而是等待下一个间隔,然后重新检查。

  • 如果当前的行程时间超出限制,则会收到一封电子邮件,其中包含当前的行程时间以及超出限制的分钟数。 以下示例演示了工作流发送的示例电子邮件:

    屏幕截图显示了示例电子邮件,它报告了当前行程时间和超过指定限制的额外行程时间。

    提示

    如果没有收到任何电子邮件,请检查电子邮件的垃圾邮件文件夹。 垃圾电子邮件筛选器可能会将这些类型的邮件重定向。 否则,如果你不确定工作流是否正常运行,请参阅排查工作流问题

祝贺,你已创建并运行基于计划的定期工作流!

清理资源

你的工作流将继续运行,直到你禁用或删除逻辑应用资源。 不再需要此示例时,删除包含你的逻辑应用和相关资源的资源组。

  1. 在 Azure 门户搜索框中输入“资源组”,然后选择“资源组”

  2. 从“资源组”列表中,选择本教程的资源组。

  3. 在资源组菜单中,选择“概述”

  4. 在“概述”页面的工具栏上,选择“删除资源组”

  5. 出现确认窗格时,输入资源组名称,然后选择“删除”。

下一步

在本教程中,你创建了一个逻辑应用工作流,用于根据指定的计划(在工作日早晨)检查交通状况,并在行程时间超出指定的限制时采取措施(发送电子邮件)。 接下来,请了解如何通过集成 Azure 服务、Microsoft 服务和其他软件即服务 (SaaS) 应用来构建一个工作流,用于发送邮件列表请求以供审批。