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

基于 Azure 逻辑应用中的特定值创建运行工作流操作的 switch 操作

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

若要基于对象、表达式或令牌的值运行特定操作,请添加 switch 操作。 此结构计算对象、表达式或令牌的值,选择与结果匹配的事例,并仅运行该事例的步骤。 Switch 操作运行时,应只有一个 一个 case 与结果相匹配。

例如,假设你想要一个根据电子邮件中所选的选项执行不同步骤的逻辑应用。 在此示例中,逻辑应用将检查网站的 RSS 源中是否有新内容。 当新项出现在 RSS 源中时,逻辑应用将向审批者发送电子邮件。 逻辑应用将根据审批者选择“批准”还是“拒绝”,执行不同的步骤。

提示

与所有编程语言相同,Switch 操作仅支持相等运算符。 如果需要其他关系运算符(例如大于),请使用条件操作。 为了确保确定性的执行行为,case 必须包含唯一且静态的值,而不是动态令牌或表达式。

先决条件

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

  • 若要执行本文中的示例,请使用 Outlook.com 帐户或者工作或学校帐户创建示例消耗逻辑应用工作流

    1. 添加用于发送电子邮件的操作时,请改为查找并选择此操作:“发送审批电子邮件”

      Select

    2. 提供必填字段,例如接收审批电子邮件的人员的电子邮件地址。 在“用户选项”下,输入“批准、拒绝”。

      Enter email details

添加 switch 操作

  1. 对于此示例,请在示例工作流的末尾添加 switch 操作。 完成最后一步后,选择“新建步骤”。

    如果想要在步骤之间添加 switch 操作,请将指针移到要添加 switch 操作的箭头上。 选择出现的加号 (+),然后选择“添加操作”。

  2. 在搜索框中,输入“switch”作为筛选器。 选择此操作:Switch - 控件

    Add switch

    此时将显示一个带有一个 case 和一个 default case 的 switch 操作。 默认情况下,switch 操作至少需要一个 case 以及 default case。

    Empty default switch action

  3. 在“基于”框中单击,以显示动态内容列表。 从该列表中选择 SelectedOption 字段,其输出确定要执行的操作。

    Select

  4. 若要处理审批者选择 ApproveReject的情况,请在 CaseDefault 之间添加另一个 case。

    Add another case

  5. 将这些操作添加到相应的 case:

    Case # SelectedOption 操作
    Case 1 批准 添加 Outlook 发送电子邮件操作,用于仅在审批者选择了“批准”时才发送有关该 RSS 项的详细信息。
    Case 2 拒绝 添加 Outlook 发送电子邮件操作,用于通知其他审批者该 RSS 项已被拒绝。
    默认 无需执行任何操作。 在此示例中,Default case 为空,因为 SelectedOption 只有两个选项。

    Finished switch action

  6. 保存逻辑应用。

    若要手动测试此示例,请选择“运行”,直到逻辑应用找到新 RSS 项并发送审批电子邮件。 选择“批准”以观察结果。

JSON 定义

现已使用 switch 操作创建了逻辑应用,让我们来看一下 switch 操作背后的高级代码定义。

"Switch": {
   "type": "Switch",
   "expression": "@body('Send_approval_email')?['SelectedOption']",
   "cases": {
      "Case": {
         "actions": {
           "Send_an_email": {}
         },
         "case" : "Approve"
      },
      "Case_2": {
         "actions": {
           "Send_an_email_2": {}
         },
         "case": "Reject"
      }
   },
   "default": {
      "actions": {}
   },
   "runAfter": {
      "Send_approval_email": [
         "Succeeded"
      ]
   }
}
Label 说明
"Switch" Switch 操作的名称,可对其进行重命名以提高可读性
"type": "Switch" 指示该操作是一个 switch 操作
"expression" 在此示例中,指定了审批者选择的选项,稍后将根据其对定义中声明的每个 case 进行求值
"cases" 可以定义任意数量的 case。 对于每个 case,"Case_*" 是该 case 的默认名称,可重命名以提高可读性
"case" 指定 case 的值,该值必须是 switch 操作用于比较的常量和唯一值。 如果没有 case 与 switch 表达式结果匹配,请将运行 "default" 部分中的操作。

获取支持

后续步骤