Power Automate流程无限循环停止条件配置问题求解
Power Automate 列表附件同步流程无限循环修复方案
问题基线
- 业务需求:绑定SharePoint自定义列表
MainList的自动流程,需提取列表单附件字段(图片类型)的访问链接,写入同列表的PicLink列;支持用户在自定义表单中删除旧图、上传新替换图时,自动同步更新PicLink存储的链接 - 原有流程配置:
- 触发节点:
WHEN AN ITEM IS CREATED OR MODIFIED,绑定对应站点地址、列表名MainList - 获取附件节点:
GET ATTACHMENTS,同站点同列表,ID参数取触发条目的ID - 变量初始化节点:定义字符串类型变量
AttachmentURL,赋值为first(body('Get_attachments'))?['AbsoluteUri'] - 更新条目节点:
UPDATE ITEM,将PicLink字段赋值为AttachmentURL变量值
- 触发节点:
- 故障现象:流程可正常写入附件链接,但会每秒持续触发形成无限循环,已被平台限流、收到一周后禁用的通知;曾尝试在触发器添加条件
@equals(triggerBody()?[‘MyAttchColumn’],null),仅新建条目时可触发,仍会重复运行十几次,且修改/替换附件时流程完全不触发。
可直接落地的修复步骤
1. 清空原有错误触发条件,添加2条精准触发规则
打开触发器的设置面板,找到「触发条件」配置项,删除之前配置的错误规则,依次添加以下2条规则:
注意:表达式内字段名需和你当前环境的字段内部名保持一致
// 仅当条目附件集合发生变化时触发流程,过滤非附件字段修改产生的触发事件 @not(equals(triggerBody()?['Attachments'], triggerBody()?['_Attachments']))
// 过滤流程自身更新条目产生的触发事件,双重阻断自循环 @not(equals(triggerOutputs()?['headers/x-ms-user-id'], workflow().run.id))
2. 新增空附件兼容逻辑,修正变量赋值规则
在「获取附件」节点后、变量初始化节点后新增判断:
- 若
length(body('Get_attachments'))等于0(即条目无附件),将AttachmentURL变量赋值为空字符串 - 若
length(body('Get_attachments'))大于0,保持原有赋值逻辑first(body('Get_attachments'))?['AbsoluteUri']即可
3. 新增前置判断,避免无意义更新
在「更新条目」节点前新增条件控制节点:
- 判断规则:
AttachmentURL不等于 触发条目的PicLink字段当前值- 条件成立(附件链接和已存储值不一致,属于新增/替换附件场景):执行原有「更新条目」节点,将
PicLink赋值为AttachmentURL - 条件不成立(附件链接无变化,属于循环触发场景):直接终止流程,终止状态选择「成功」即可
- 条件成立(附件链接和已存储值不一致,属于新增/替换附件场景):执行原有「更新条目」节点,将
4. 调整流并发配置避免重复运行
打开流的整体设置面板,找到「并发控制」选项,开启后将并行度设置为1,关闭自动重试规则,避免同一条目短时间内多次触发产生重复运行。
内容的提问来源于stack exchange,提问作者Jasco
相关产品推荐
相关产品推荐

