适用于:Azure 逻辑应用(消耗)
若要在逻辑应用工作流中处理数组,可以创建一个
For each 循环
。 此循环会对数组中的每一项重复一个或多个操作。 有关“For each”循环可以处理的数组项数的限制,请参阅
并发、循环和拆分限制
。
若要重复操作直到满足条件或状态发生变化,可以创建一个
Until 循环
。 工作流首先运行循环内的所有操作,然后检查条件或状态。 如果满足该条件,则循环将停止。 否则,循环将继续进行。 有关工作流可以有的“Until”循环数的默认值和最大限制,请参阅
并发、循环和拆分限制
。
如果你有接收数组的触发器并且希望针对每个数组项运行工作流,则可以使用
SplitOn
触发器属性
“分离”该数组。
Azure 帐户和订阅。 如果没有订阅,可以
注册免费的 Azure 帐户
。
有关
逻辑应用工作流
的基础知识
“For each”循环
“For each”循环在每个数组项上重复一个或多个操作,且仅在数组上工作。 使用“For each”循环时请注意以下事项:
“For each”循环仅可处理有限数量的数组项。 有关此限制,请参阅
并发、循环和拆分限制
。
默认情况下,“For each”循环中的迭代将同时运行,或并行运行。 此行为不同于
Power Automate 的“应用到每项”循环
,该循环一次运行一个迭代,或按顺序运行。 但是,可以
设置顺序“For each”循环迭代
。 例如,如果想使用
延迟操作
暂停“Foreach”循环中的下一次迭代,则需要将循环设置为按顺序运行。
此默认行为的例外是嵌套循环,其中迭代始终按顺序运行,而不是并行运行。 若要对嵌套循环中的项目并行运行操作,请创建并
调用子逻辑应用工作流
。
若要在每次循环迭代期间从变量操作获得可预测的结果,请按顺序运行这些循环。 例如,当并发运行的循环结束时,递增变量、递减变量和附加到变量操作会返回可预测的结果。 但是,在并发运行循环的每次迭代期间,这些操作可能会返回不可预测的结果。
“For each”循环中的操作使用
@item()
表达式来引用和处理数组中的每个项。 如果指定了不在数组中的数据,则逻辑应用工作流将失败。
此示例逻辑应用工作流会发送网站 RSS 源的每日摘要。 该工作流使用“For each”循环,它会为每个新项发送电子邮件。
使用 Outlook.com 帐户或者工作或学校帐户
创建此示例消耗型逻辑应用工作流
。
在 RSS 触发器与“发送电子邮件”操作之间,添加一个“For each”循环。
若要在步骤之间添加循环,请将鼠标指针移到这些步骤之间的箭头上。 选择出现的
加号
(
+
),然后选择“
添加操作
”。
在搜索框下,选择“
全部
”。 在搜索框中输入“
for each
”。 从操作列表中,选择名为“
For each
”的控制操作。
"Body": "@{item()}",
"Subject": "New CNN post @{triggerBody()?['publishDate']}",
"To": "me@contoso.com"
"host": {
"api": {
"runtimeUrl": "https://logic-apis-westus.azure-apim.net/apim/office365"
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
"method": "post",
"path": "/Mail"
"runAfter": {}
"foreach": "@triggerBody()?['links']",
"runAfter": {}
“Foreach”循环:顺序
默认情况下,“Foreach”循环中的周期并行运行。
若要按顺序运行每个周期,请设置循环的“顺序”选项。
如果期望得出可预测结果的循环中具有嵌套循环或变量时,“Foreach”循环必须按顺序运行。
在循环的右上角,选择省略号 (...) >“设置”。
在“并发控制”下,将“并发控制”设置转为“开启” 。
将“并行度”滑块移至“1”,然后选择“完成” 。
如果在使用逻辑应用的 JSON 定义,则可以通过添加
operationOptions
参数来使用
Sequential
选项,例如:
"actions": {
"myForEachLoopName": {
"type": "Foreach",
"actions": {
"Send_an_email": { }
"foreach": "@triggerBody()?['links']",
"runAfter": {},
"operationOptions": "Sequential"
Until 循环
若要运行并重复操作直到满足条件或状态发生变化,请将这些操作放在“Until”循环中。 逻辑应用首先运行循环内的所有操作,然后检查条件或状态。 如果满足该条件,则循环将停止。 否则,循环将继续进行。 有关逻辑应用运行可以有的“Until”循环数的默认值和最大限制,请参阅并发、循环和拆分限制。
下面是可以在其中使用“Until”循环的一些常见场景:
调用某个终结点,直至获得想要的响应。
在数据库中创建记录。 等待该记录中的特定字段获得批准。 继续处理。
在每天上午 8:00,此示例逻辑应用都递增某个变量的值,直到该变量的值等于 10。 然后,该逻辑应用会发送一封电子邮件来确认当前值。
这些步骤使用 Office 365 Outlook,但也可以使用逻辑应用支持的任何电子邮件提供商。
检查此处的连接器列表。
如果使用其他电子邮件帐户,则常规步骤保持不变,但 UI 外观可能稍有不同。
创建空白逻辑应用。 在逻辑应用设计器的搜索框下,选择“全部”。 搜索“定期”。
从触发器列表中选择此触发器:“定期 - 计划”
通过设置时间间隔、频率和天中的小时来指定触发器何时触发。 若要设置小时,请选择“显示高级选项”。
“Until”循环会根据这些属性停止执行,因此请确保相应地设置它们的值:
计数:此值为在循环退出之前运行的最大循环次数。 有关逻辑应用运行可以有的“Until”循环数的默认值和最大限制,请参阅并发、循环和拆分限制。
超时:此值为“Until”操作(包括所有循环)在退出前可运行的最长时间,以 ISO 8601 格式指定。 有关“超时”值的默认值和最大限制,请参阅并发、循环和拆分限制。
将针对每个循环周期评估超时值。 如果循环中的任何操作花费的时间超过超时限制,当前循环便不会停止。 但是,由于不满足限制条件,因此下一个循环不会启动。
若要更改这些限制,请在“循环操作”中选择“更改限制”。
Until 定义 (JSON)
如果是在逻辑应用的代码视图中操作,可以改为在逻辑应用的 JSON 定义中定义 Until
循环,例如:
"actions": {
"Initialize_variable": {
// Definition for initialize variable action
"Send_an_email": {
// Definition for send email action
"Until": {
"type": "Until",
"actions": {
"Increment_variable": {
"type": "IncrementVariable",
"inputs": {
"name": "Limit",
"value": 1
"runAfter": {}
"expression": "@equals(variables('Limit'), 10)",
// To prevent endless loops, an "Until" loop
// includes these default limits that stop the loop.
"limit": {
"count": 60,
"timeout": "PT1H"
"runAfter": {
"Initialize_variable": [
"Succeeded"
此示例“Until”循环调用可创建资源的 HTTP 终结点。 当 HTTP 响应主体返回 Completed
状态时,循环停止。
为防止无限循环,该循环在发生下列任一条件时也会停止:
循环运行了 10 次(由 count
属性指定)。
默认值为 60 次。
循环已运行两小时(由 timeout
属性以 ISO 8601 格式指定)。
默认值为一小时。
"actions": {
"myUntilLoopName": {
"type": "Until",
"actions": {
"Create_new_resource": {
"type": "Http",
"inputs": {
"body": {
"resourceId": "@triggerBody()"
"url": "https://domain.com/provisionResource/create-resource",
"body": {
"resourceId": "@triggerBody()"
"runAfter": {},
"type": "ApiConnection"
"expression": "@equals(triggerBody(), 'Completed')",
"limit": {
"count": 10,
"timeout": "PT2H"
"runAfter": {}
如有问题,请访问有关 Azure 逻辑应用的 Microsoft Q&A 问题页。
若要提交功能和建议或者为其投票,请访问 Azure 逻辑应用用户反馈站点。
基于条件运行步骤(条件操作)
基于不同的值运行步骤(switch 操作)
运行或合并并行步骤(分支)
基于分组的操作状态运行步骤(作用域)