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

更新 Azure 逻辑应用中工作流定义语言的架构 - 2016 年 6 月 1 日

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

最新工作流定义语言架构版本 June-01-2016 和 Azure 逻辑应用的 API 版本包括可增强消耗逻辑可靠性和易用性的关键改进:

  • 作用域允许用户以操作集合方式将操作组合或嵌套在一起。
  • 条件和循环是一流操作。
  • 针对 runAfter 属性运行操作时排序更精确,替换了 dependsOn

要将较旧的工作流定义升级到当前架构,请参阅升级架构

作用域

此架构包含作用域,方便用户将操作组合或嵌套到一起。 例如,一个条件可以包含另一个条件。 请详细了解作用域语法,或者查看下面这个基本的作用域示例:

{
   "actions": {
      "Scope": {
         "type": "Scope",
         "actions": {
            "Http": {
               "inputs": {
                   "method": "GET",
                   "uri": "https://www.bing.com"
               },
               "runAfter": {},
               "type": "Http"
            }
         }
      }
   }
}

条件和循环更改

在以前的架构版本中,条件和循环是与单个操作关联的参数。 此架构提升了该限制,因此条件和循环现在都可以操作类型的形式提供。 详细了解循环和作用域条件,或者查看这个显示条件操作的基本示例:

{
   "Condition - If trigger is some trigger": {
      "type": "If",
      "expression": "@equals(triggerBody(), '<trigger-name>')",
      "runAfter": {},
      "actions": {
         "Http_2": {
            "inputs": {
                "method": "GET",
                "uri": "https://www.bing.com"
            },
            "runAfter": {},
            "type": "Http"
         }
      },
      "else": 
      {
         "Condition - If trigger is another trigger": {}
      }  
   }
}

“runAfter”属性

runAfter 属性替换了 dependsOn,根据以前操作的状态为操作指定运行顺序时更精确。 dependsOn 属性指示“操作是否已成功运行”,具体取决于上一个操作是成功、失败还是跳过 - 而不是指示你希望运行操作的次数。 runAfter 属性以对象方式提供灵活性,该对象指定对象在其后运行的所有操作名称。 该属性也定义可充当触发器的状态的数组。 例如,如果希望操作在操作 A 成功后运行,并且在操作 B 成功或失败后运行,请设置此 runAfter 属性:

{
   // Other parts in action definition
   "runAfter": {
      "A": ["Succeeded"],
      "B": ["Succeeded", "Failed"]
    }
}

其他更改

已将“manual”触发器重命名为“request”触发器

manual 触发器类型已弃用,并已通过类型 http 将其重命名为 request。 对于使用触发器构建的那类模式,此更改加强了一致性。

新“筛选器”操作

要将大型数组向下筛选为较小的一组项,filter 类型会接受一个数组和一个条件,评估每个项的条件,并返回包含符合条件的项的数组。

“foreach”和“until”操作的限制

foreachuntil 循环限制为单个操作。

操作的“trackedProperties”

操作现在具有名为 trackedProperties 的额外属性,它与 runAftertype 属性同级。 此对象会指定要包含在 Azure 诊断遥测中的特定操作输入或输出,它会作为工作流的一部分发出,例如:

{
   "Http": {
      "inputs": {
         "method": "GET",
         "uri": "https://www.bing.com"
      },
      "runAfter": {},
      "type": "Http",
      "trackedProperties": {
         "responseCode": "@action().outputs.statusCode",
         "uri": "@action().inputs.uri"
      }
   }
}

升级架构

如果有使用较旧的工作流定义语言架构的消耗型逻辑应用工作流,则可以将工作流更新为使用最新架构。 此功能仅适用于消耗型逻辑应用工作流。 若要升级到最新架构,仅需要执行几个步骤。 升级过程包括运行升级脚本、将原始逻辑应用工作流另存为新的消耗逻辑应用工作流,以及可能会根据需要覆盖原始逻辑应用工作流。

最佳做法

以下列表包含将逻辑应用工作流更新为最新架构的一些最佳做法:

  • 在完成测试并确认更新后的工作流按预期工作之前,请勿覆盖原始工作流。

  • 将更新的脚本复制到新的逻辑应用工作流。

  • 在部署到生产之前测试工作流。

  • 完成并确认迁移成功后,更新逻辑应用工作流,以尽可能将最新版本用于 Azure 逻辑应用中的托管连接器。 例如,将旧版本的 Dropbox 连接器替换为最新版本。

更新工作流架构

当你选择更新架构的选项时,Azure 逻辑应用会自动运行迁移步骤并为你提供代码输出。 可以使用此输出来更新工作流定义。 但是,在使用此输出更新工作流定义之前,请务必查看并遵循最佳做法部分中所述的最佳做法。

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

  2. 在逻辑应用资源菜单中,选择“概述”。 在工具栏上,选择“更新架构”。

    注意

    如果“更新架构”命令不可用,则表示工作流已使用当前架构。

    Azure 门户、消耗型逻辑应用资源、“概述”页和所选“更新架构”命令的屏幕截图。

    此时将打开“更新架构”窗格,并显示指向描述当前架构中所做改进的文档的链接。 可以复制并粘贴返回的工作流定义,如有必要,可以将其复制并粘贴到逻辑应用资源定义中。

  3. 在升级窗格工具栏中,选择“另存为”,以便所有连接引用在升级后的逻辑应用工作流定义中保持有效。

  4. 为逻辑应用工作流提供名称,并输入状态。

  5. 要部署升级的逻辑应用工作流,请选择“创建”。 确认已升级的逻辑应用正常运行。

    重要

    如果工作流使用请求触发器(以前称为“手动”),则升级后的工作流中此触发器的回叫 URL 会发生更改。 测试新的回叫 URL,以确保端到端体验正常。 要保留以前的 URL,可以通过现有逻辑应用工作流进行克隆。

  6. 可选:要使用升级的版本覆盖原始逻辑应用工作流,请在工具栏上的“更新架构”旁边选择“克隆”。

    仅当希望保留逻辑应用的同一资源 ID 或请求触发器回叫 URL 时,才必须执行此步骤。

升级工具说明

资源标记

升级之后会删除资源标记,因此必须针对升级的工作流重置这些标记。

映射条件

在升级后的工作流定义中,该工具会尽可能将 true 和 false 分支操作组合为作用域。 具体而言,@equals(actions('a').status, 'Skipped') 的设计器模式将显示为 else 操作。 但是,如果检测到无法识别的模式,该工具可能会为 true 和 false 分支创建单独条件。 可以根据需要在升级后重新映射操作。

带条件的“foreach”循环

在升级后的架构中,可以使用筛选器操作来复制使用 For each 循环(每项一个条件)的模式。 但是,升级时会自动进行更改。 条件会变为在 For each 循环之前出现的筛选器操作,仅返回与条件匹配的项数组,并将该数组传递给 For each 操作。 有关示例,请参阅循环和作用域

后续步骤