你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 逻辑应用中创建并行分支或将其与工作流操作联接
适用范围:Azure 逻辑应用(消耗型 + 标准型)
默认情况下,逻辑应用工作流中的操作按顺序运行。 若要将操作组织到单独的分支中并同时运行这些分支,可以创建并行分支,稍后在工作流中联接这些分支。
本指南演示如何在工作流中创建并行分支并重新联接这些分支,如此概要关系图中所示:
提示
如果工作流触发器收到一个数组,并且你想要为数组中的每个项运行工作流实例,而不是创建并行分支,则可以通过 SplitOn 触发器属性来改为取消批处理该数组。
先决条件
Azure 订阅。 如果没有订阅,可以注册免费的 Azure 帐户。
一个逻辑应用工作流,该工作流初始包含触发器和所需操作。 确保该工作流包含你要在之间添加并行分支的操作。
使用并行分支时的注意事项
并行分支只有在 runAfter 属性值与父操作的完成状态匹配时才运行。 例如,只有在 parentAction 完成并显示“成功”状态时,才开始运行初始包含 branchAction1 和 branchAction2 的两个分支。
工作流等待同一级别的所有并行分支完成,然后再运行联接这些分支的操作。
添加并行分支操作
在 Azure 门户中,打开设计器中的标准逻辑应用和工作流。
在要添加并行分支的操作之间,将指针移到连接箭头上。
选择出现的加号 (+),然后选择“添加并行分支”。
现在,添加要在并行分支中运行的操作。 在“添加操作”窗格和搜索框中,找到并选择所需的操作。
现在,所选操作将在并行分支中显示,例如:
若要将另一个操作添加到并行分支,请在要添加新操作的操作下,选择加号 (+),然后选择“添加操作”。
在“选择操作”搜索框中,找到并选择所需的操作。
现在,所选操作将在当前分支中显示,例如:
若要将分支重新合并在一起,请联接平行分支。
并行分支定义 (JSON)
如果正在代码视图中操作,可以改为在逻辑应用工作流的 JSON 定义中定义并行结构,例如:
{
"triggers": {
"myTrigger": {}
},
"actions": {
"parentAction": {
"type": "<action-type>",
"inputs": {},
"runAfter": {}
},
"branchAction1": {
"type": "<action-type>",
"inputs": {},
"runAfter": {
"parentAction": [
"Succeeded"
]
}
},
"branchAction2": {
"type": "<action-type>",
"inputs": {},
"runAfter": {
"parentAction": [
"Succeeded"
]
}
}
},
"outputs": {}
}
联接并行分支
若要将并行分支合并在一起,请在所有分支下添加另一个操作。 此操作仅在上述所有并行分支完成运行后运行。
在 Azure 门户中,打开标准逻辑应用以及包含要在设计器中联接的并行分支的工作流。
在要联接的任何并行分支下,选择加号 (+),然后选择“添加操作”。
在“添加操作”窗格和搜索框中,找到并选择要用于联接分支的操作。
在设计器上,选择之前添加的操作。 操作的信息窗格打开后,选择“设置”。
在“设置”窗格的“开始运行前的操作”下,打开“选择操作”列表,然后在每个分支中选择在联接操作运行前必须完成的最后一个操作。
你将有效地指定联接操作仅在所有所选操作完成运行后运行。
完成后,所选操作现在显示在要联接的并行分支下,例如:
联接定义 (JSON)
如果正在代码视图中操作,可以改为在逻辑应用工作流的 JSON 定义中定义联接操作,例如:
{
"triggers": {
"myTrigger": { }
},
"actions": {
"parentAction": {
"type": "<action-type>",
"inputs": { },
"runAfter": {}
},
"branchAction1": {
"type": "<action-type>",
"inputs": { },
"runAfter": {
"parentAction": [
"Succeeded"
]
}
},
"branchAction2": {
"type": "<action-type>",
"inputs": { },
"runAfter": {
"parentAction": [
"Succeeded"
]
}
},
"joinAction": {
"type": "<action-type>",
"inputs": { },
"runAfter": {
"branchAction1": [
"Succeeded"
],
"branchAction2": [
"Succeeded"
]
}
}
},
"outputs": {}
}