Un bucle infinito en un flujo de Power Automate vinculado a una lista o biblioteca de SharePoint puede provocar miles de ejecuciones no deseadas, llenar el registro de auditoría y ralentizar el rendimiento del sitio. El bucle ocurre cuando un flujo se desencadena por un cambio, realiza otro cambio y ese segundo cambio vuelve a desencadenar el mismo flujo, creando un ciclo que se perpetúa. Este artículo explica los tres patrones de desencadenador más comunes que causan bucles y proporciona una lista de verificación práctica que puede aplicar a cualquier flujo que posea o mantenga.
Puntos clave: Tres elementos de la lista de verificación para prevenir bucles infinitos
- Filtro de condición de desencadenador en el desencadenador de SharePoint: Agregue una condición que verifique una columna de estado para que el flujo se ejecute solo cuando el elemento esté en un estado específico, no en cada actualización.
- Actualice solo la columna requerida, no todo el elemento: Use la acción “Actualizar elemento” con el valor de una sola columna en lugar de la acción “Actualizar propiedades de archivo” que modifica todo el elemento.
- Configure un control de simultaneidad y un límite de historial de ejecuciones: Establezca el grado de simultaneidad en 1 y habilite un mecanismo de bloqueo a nivel de fila para evitar ejecuciones superpuestas que pueden escalar a un bucle.
Por qué los flujos de Power Automate quedan atrapados en bucles infinitos
Cada flujo desencadenado por SharePoint en Power Automate comienza cuando se crea o modifica un elemento. El desencadenador se activa, el flujo ejecuta una o más acciones y una de esas acciones actualiza el mismo elemento que inició el flujo. Esa actualización parece un nuevo cambio para SharePoint, por lo que el desencadenador se activa nuevamente. El ciclo se repite hasta que el flujo alcanza su límite de ejecuciones o usted lo detiene manualmente.
La causa raíz es casi siempre una acción que escribe de vuelta en el elemento desencadenador. Ejemplos comunes incluyen actualizar una columna de estado después de una aprobación, establecer una marca de tiempo o copiar un valor de otra columna. Si el flujo no distingue entre el cambio original del usuario y su propio cambio, el bucle continúa.
Power Automate no tiene un interruptor de bucle integrado. Debe diseñar el flujo para detectar y detener sus propias actualizaciones. La lista de verificación a continuación le proporciona tres mecanismos concretos para lograrlo.
Lista de verificación práctica para diseñar un flujo sin bucles
Aplique cada uno de los siguientes tres elementos a cada flujo nuevo o existente que se desencadene en una lista o biblioteca de SharePoint. Pruebe cada elemento en un entorno de desarrollo antes de mover el flujo a producción.
1. Agregue una condición de desencadenador que verifique una columna de estado
Una condición de desencadenador es un filtro que se ejecuta antes de que se inicie el flujo. Si la condición se evalúa como falsa, el flujo no se ejecuta en absoluto. Esta es la forma más efectiva de detener un bucle porque el desencadenador nunca se activa para los cambios realizados por el propio flujo.
- Agregue una columna de estado a su lista de SharePoint
Cree una columna de opción denominada “FlowStatus” con valores como “Pending”, “Processing” y “Completed”. Establezca el valor predeterminado en “Pending”. - Abra la configuración del desencadenador en Power Automate
En el diseñador de flujo, seleccione el desencadenador “Cuando se crea o modifica un elemento”. Haga clic en los puntos suspensivos (…) y elija “Configuración”. - Escriba la expresión de condición del desencadenador
En el campo “Condiciones del desencadenador”, ingrese:@equals(triggerOutputs()?['body/FlowStatus'], 'Pending'). Esto garantiza que el flujo se ejecute solo cuando el elemento esté en el estado “Pending”. - Establezca la columna de estado en la acción del flujo
En la primera acción después del desencadenador, use la acción “Actualizar elemento” para cambiar “FlowStatus” de “Pending” a “Processing”. Cuando finalice el flujo, actualícelo a “Completed”. Debido a que la condición del desencadenador ahora filtra por “Pending”, el flujo no se ejecutará nuevamente cuando el estado cambie a “Processing” o “Completed”.
2. Actualice solo las columnas que necesitan cambiar
Muchos bucles infinitos comienzan porque el flujo usa la acción “Actualizar propiedades de archivo”, que envía todos los valores de las columnas de vuelta a SharePoint. Incluso las columnas que no cambiaron se envían, y SharePoint lo trata como una modificación. El desencadenador se activa nuevamente aunque no haya cambiado ningún dato real.
- Use “Actualizar elemento” en lugar de “Actualizar propiedades de archivo”
En Power Automate, la acción “Actualizar elemento” le permite especificar solo las columnas que desea cambiar. Deje todas las demás columnas en blanco. SharePoint no registrará un cambio en esas columnas. - Elimine el contenido dinámico de las columnas no modificadas
Si utilizó la acción “Obtener elemento” anteriormente en el flujo para recuperar todos los campos, no pase esos valores a la acción de actualización. Pase solo el valor de la columna única que pretende cambiar. - Pruebe con una actualización de una sola columna
Ejecute el flujo manualmente en un elemento. Verifique el historial del elemento de SharePoint. Debería ver solo una entrada de actualización, no una serie de actualizaciones causadas por el bucle.
3. Habilite el control de simultaneidad y el bloqueo a nivel de fila
El control de simultaneidad limita cuántas instancias del mismo flujo pueden ejecutarse al mismo tiempo. Cuando se combina con una columna de estado, evita que dos ejecuciones superpuestas intenten actualizar el mismo elemento.
- Establezca el grado de simultaneidad en 1
En la configuración del desencadenador, expanda “Control de simultaneidad”. Active el interruptor. Establezca el “Grado de paralelismo” en 1. Esto obliga a Power Automate a procesar un evento de desencadenador a la vez para este flujo. - Habilite el bloqueo a nivel de fila en SharePoint
El bloqueo a nivel de fila es una configuración de lista de SharePoint que evita que dos solicitudes modifiquen el mismo elemento simultáneamente. Vaya a Configuración de la lista > Configuración avanzada y establezca “¿Permitir la descarga de elementos de esta lista a clientes sin conexión?” en “No”. Esto obliga a que todas las actualizaciones pasen por el servidor, que aplica bloqueos de escritura. - Combine con la columna de estado
Cuando la simultaneidad es 1 y la columna de estado se establece en “Processing” al inicio del flujo, cualquier desencadenador posterior que se active durante la ejecución verá el estado como “Processing” y será bloqueado por la condición del desencadenador.
Qué hacer si un flujo ya está en un bucle
Si un flujo se ejecuta cientos o miles de veces y no puede detenerlo desde el portal de Power Automate, use los siguientes pasos de emergencia.
Detenga el flujo inmediatamente
Abra el flujo en Power Automate y desactive el interruptor. Esto detiene todas las nuevas ejecuciones. Las ejecuciones existentes en la cola aún se completarán, pero no comenzarán nuevas.
Elimine las ejecuciones en cola
Vaya al historial de ejecuciones del flujo. Seleccione todas las ejecuciones en cola que aún no hayan comenzado y haga clic en “Cancelar”. Esto borra el trabajo pendiente.
Restaure la lista de SharePoint a un estado limpio
Si el bucle cambió muchos elementos, use la función “Historial de versiones” de SharePoint para restaurar los elementos a su estado anterior al inicio del bucle. Seleccione el elemento, haga clic en “Historial de versiones” y restaure la versión anterior a la primera ejecución del bucle.
Aplique la lista de verificación antes de volver a activar el flujo
No vuelva a habilitar el flujo hasta que haya agregado una condición de desencadenador, cambiado a actualizaciones de una sola columna y habilitado el control de simultaneidad. Pruebe primero con un elemento.
Patrón de desencadenador que causa bucles vs. patrón seguro
| Elemento | Patrón que causa bucles | Patrón seguro |
|---|---|---|
| Condición del desencadenador | Sin condición de desencadenador; el flujo se ejecuta ante cualquier cambio | La condición del desencadenador verifica el valor de una columna de estado |
| Acción de actualización | “Actualizar propiedades de archivo” con todas las columnas | “Actualizar elemento” solo con la columna modificada |
| Simultaneidad | Predeterminado (ejecuciones paralelas ilimitadas) | Grado de simultaneidad establecido en 1 |
| Manejo de la columna de estado | Sin columna de estado; el flujo actualiza el elemento directamente | Columna de estado establecida antes y después de la acción principal |
Al aplicar los tres elementos de la lista de verificación y comprender la diferencia entre el patrón que causa bucles y el patrón seguro, puede diseñar flujos que se ejecuten de manera confiable sin crear ciclos no deseados. Comience agregando una columna de estado con una condición de desencadenador en cada nuevo flujo que cree. Para los flujos existentes, audite las acciones de actualización y reemplace cualquier acción “Actualizar propiedades de archivo” por una acción “Actualizar elemento” específica. Pruebe cada cambio en un entorno de espacio aislado antes de promover el flujo a producción.