Retry
Tipo: retry · Paquete: Core Activities v1.0.8
Ejecuta un bloque de actividades y, si falla, lo vuelve a intentar hasta un número máximo de veces, con una espera opcional entre intentos. Es ideal para acciones que fallan de forma intermitente y que suelen funcionar al segundo o tercer intento: una página web lenta, una red inestable, un sistema que tarda en responder.
Cómo funciona
Sección titulada «Cómo funciona»- Ejecuta el bloque
body. - Si tiene éxito, termina y continúa el flujo.
- Si falla, registra una advertencia con el motivo (
Falló el intento 1 de 3: …), esperadelaymilisegundos (si lo configuraste) y vuelve a intentar. - Repite hasta agotar
attemptsintentos. Si todos fallan, la actividad falla con un mensaje que incluye el último error (lo que detiene la ejecución, salvo que esté dentro de un Try / Catch).
Casos que no se reintentan:
- Un error de negocio (Throw con
errorType = "BusinessRuleException", también si viene de un playbook invocado): reintentar no arregla los datos, así que Retry falla de inmediato con ese error y conserva su tipo. - Una ejecución terminada desde fuera: se detiene sin más intentos.
- Un Break o Continue dentro del
body: no son errores, pasan al bucle que contiene el Retry.
Parámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
attempts | int | — | Número máximo de intentos, incluido el primero. Ej: 3 = un intento + 2 reintentos. Un valor menor que 1 cuenta como 1. |
Parámetros opcionales
Sección titulada «Parámetros opcionales»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
delay | int | 0 | Milisegundos a esperar entre intentos (no antes del primero ni después del último). 0 = sin espera. |
Sub-flujos
Sección titulada «Sub-flujos»body requerido
Sección titulada «body requerido»Las actividades a ejecutar y, si fallan, reintentar.
Esta actividad no devuelve ningún valor. Lo que produzcan las actividades del body (sus Output) queda con los valores del intento que tuvo éxito.
Ejemplo
Sección titulada «Ejemplo»Reintentar hasta 3 veces una acción web, esperando 2 segundos entre intentos:
Retry attempts = 3 delay = 2000 └─ body: Page Navigate page = pagina url = "https://portal.example.com" Page Click page = pagina selector = "#login"Si el primer intento falla (la página no cargó), espera 2 s y reintenta; si el segundo falla, espera y reintenta una vez más. Si el tercero también falla, la actividad falla con el último error.
Un tiempo de espera agotado dentro del body (un servicio que no responde a tiempo, el timeout de una actividad) es un error como cualquier otro y se reintenta (TimeoutException). Terminar la ejecución, en cambio, corta los reintentos al momento. Desde la versión 1.2.29.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa y solución |
|---|---|
Fallaron los … intentos. Último error: … | Todos los intentos fallaron. El final del mensaje es el error del último intento: corrige esa causa, sube attempts o delay si el sistema necesita más tiempo, o maneja el fallo con un Try / Catch. En la variable de error de un catch, .Message y .Type son los del último error, no este resumen. |
El intento … falló por un error de regla de negocio; no se reintenta: … | Advertencia en el log: un error de negocio cortó los reintentos. La actividad falla con el mensaje original; manéjalo en el catch comparando error.Type == "BusinessRuleException". |
'body' debe ser una lista de actividades. | El Retry no tiene lane body. Agrega dentro las actividades a reintentar. |
Actividades relacionadas
Sección titulada «Actividades relacionadas»- Try / Catch — manejar el error si todos los intentos fallan.
- Throw — lanzar un error de negocio que Retry no reintenta.
- Delay — espera fija (Retry ya incluye
delayentre intentos).