更新 Azure 逻辑应用中工作流定义语言的架构 - 2016 年 6 月 1 日
适用于:Azure 逻辑应用(消耗)
最新工作流定义语言架构版本 June-01-2016 和 Azure 逻辑应用的 API 版本包括可增强消耗逻辑可靠性和易用性的关键改进:
要将较旧的工作流定义升级到当前架构,请参阅升级架构。
作用域
此架构包含作用域,方便用户将操作组合或嵌套到一起。 例如,一个条件可以包含另一个条件。 请详细了解作用域语法,或者查看下面这个基本的作用域示例:
{
"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”操作的限制
foreach
和 until
循环限制为单个操作。
操作的“trackedProperties”
操作现在具有名为 trackedProperties
的额外属性,它与 runAfter
和 type
属性同级。 此对象会指定要包含在 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 逻辑应用会自动运行迁移步骤并为你提供代码输出。 可以使用此输出来更新工作流定义。 但是,在使用此输出更新工作流定义之前,请务必查看并遵循最佳做法部分中所述的最佳做法。
在 Azure 门户中,打开你的消耗逻辑应用资源。
在逻辑应用资源菜单中,选择“概述”。 在工具栏上,选择“更新架构”。
注意
如果“更新架构”命令不可用,则表示工作流已使用当前架构。
此时将打开“更新架构”窗格,并显示指向描述当前架构中所做改进的文档的链接。 可以复制并粘贴返回的工作流定义,如有必要,可以将其复制并粘贴到逻辑应用资源定义中。
在升级窗格工具栏中,选择“另存为”,以便所有连接引用在升级后的逻辑应用工作流定义中保持有效。
为逻辑应用工作流提供名称,并输入状态。
要部署升级的逻辑应用工作流,请选择“创建”。 确认已升级的逻辑应用正常运行。
重要
如果工作流使用请求触发器(以前称为“手动”),则升级后的工作流中此触发器的回叫 URL 会发生更改。 测试新的回叫 URL,以确保端到端体验正常。 要保留以前的 URL,可以通过现有逻辑应用工作流进行克隆。
可选:要使用升级的版本覆盖原始逻辑应用工作流,请在工具栏上的“更新架构”旁边选择“克隆”。
仅当希望保留逻辑应用的同一资源 ID 或请求触发器回叫 URL 时,才必须执行此步骤。
升级工具说明
资源标记
升级之后会删除资源标记,因此必须针对升级的工作流重置这些标记。
映射条件
在升级后的工作流定义中,该工具会尽可能将 true 和 false 分支操作组合为作用域。 具体而言,@equals(actions('a').status, 'Skipped')
的设计器模式将显示为 else
操作。 但是,如果检测到无法识别的模式,该工具可能会为 true 和 false 分支创建单独条件。 可以根据需要在升级后重新映射操作。
带条件的“foreach”循环
在升级后的架构中,可以使用筛选器操作来复制使用 For each 循环(每项一个条件)的模式。 但是,升级时会自动进行更改。 条件会变为在 For each 循环之前出现的筛选器操作,仅返回与条件匹配的项数组,并将该数组传递给 For each 操作。 有关示例,请参阅循环和作用域。