Pasos controladores de error/operación correcta
Cuando un paso de un trabajo da lugar a error, el trabajo también se considera fallido. Para realizar algunas acciones de limpieza antes de que finalice el trabajo (como registrar el error o enviar notificaciones por correo electrónico), puede crear controladores de errores/operación correcta. Estos identificadores sirven para proteger la ejecución de uno o varios pasos del trabajo (p. ej. bloques protegidos). Los controladores de errores/operación correcta y los pasos protegidos forman parte de los llamados bloques protegidos (véase Estructura de un bloque protegido más abajo).
En función de sus necesidades, puede crear bloques Paso de ejecución, Opción, For-Each y Aplazar dentro de un bloque protegido. También puede anidar bloques protegidos dentro del bloque protegido.
Agregar un controlador de errores/operación correcta
Para agregar un controlador de errores, cree un trabajo o abra uno que ya exista y haga clic en nuevo controlador de errores/operación correcta. Después seleccione el controlador correspondiente.
Estructura de un bloque protegido
En el ejemplo puede ver la estructura de un bloque protegido. El bloque protegido de la imagen consiste en pasos protegidos (pasos A y B) y controladores que indican si la operación se llevó a cabo correctamente o no (pasos C, D, E y F). Siempre que se hayan ejecutado los pasos protegidos (correctamente o no), a continuación se ejecutarán los bloques del controlador.
Bloque protegido
Paso A
Paso B
Cuando haya errores
Paso C
Al reintentar
Paso D
Cuando la operación funcione correctamente
Paso E
Siempre
Paso F
Bloque protegido
Tipos de controladores
Cada uno de ellos tiene una condición particular que, de cumplirse, hace que se ejecuten los pasos de ese controlador. Los controladores de errores pueden ser de varios tipos:
•El bloque Cuando haya errores se ejecuta si falla alguno de los pasos protegidos.
•El bloque Cuando la operación funcione correctamente se ejecuta si todos los pasos protegidos finalizan correctamente.
•El controlador Al reintentar se ejecuta si falla algún paso protegido. Los pasos protegidos se ejecutan tantas veces como se especifique en la opción de recuento de reintentos (consulte la opción Reintentar más abajo). El valor predeterminado de esta opción es 0.
•El controlador Siempre se ejecuta independientemente de si los pasos protegidos se han realizado correctamente o no.
Orden de ejecución de los controladores
Los bloques de controladores siempre se ejecutan en el orden indicado. Por ejemplo, si hay un bloque Siempre seguido de un bloque Cuando haya errores y luego por otro bloque Siempre, los dos bloques Siempre se ejecutan en el orden indicado una vez se hayan terminado de ejecutar los pasos protegidos. El bloque Cuando haya errores se ejecuta antes que el primer bloque Siempre solo si los pasos protegidos terminaron de ejecutarse con algún error.
En el bloque protegido de ejemplo que aparece más arriba, si los pasos A o B fallan, se abandonan los pasos protegidos y se garantiza la ejecución de los pasos C y F (porque son de tipo Cuando haya errores y Siempre, respectivamente). El paso D solo se ejecuta si quedan intentos (véase la subsección siguiente).
Opción Reintentar
Puede que haya casos en los que quiera intentar volver a ejecutar un paso si su ejecución falló o por alguna otra razón. Para que sea posible volver a intentar un paso en caso de que se encuentre un error, FlowForce Server ofrece la opción Reintentar. Por defecto, esta opción es 0, lo que significa que el bloque protegido se ejecutará una sola vez y no se volverá a intentar.
Los bloques Al reintentar solo se ejecutan si a los pasos protegidos les quedan reintentos. El reintento en sí no empieza hasta que no se han ejecutado correctamente todos los bloques de controladores y solamente si los pasos protegidos se abandonaron porque se produjo un error. Cuando no quedan reintentos, el error se vuelve a producir fuera de este bloque protegido.
Para agregar un paso de ejecución que se reintentará un número determinado de veces, siga las instrucciones que se indican a continuación:
1.Especifique el número de reintentos que necesita (por ejemplo, 3 veces) en el campo de texto situado en la parte superior del paso Controlador de errores/operación correcta (imagen siguiente).
2.Haga clic en el botón
que hay bajo la sección Ejecutar con controlador de errores/operación correcta y agregue el paso (o pasos) que se debe(n) intentar ejecutar de nuevo si ocurre un error.
En el ejemplo siguiente, el trabajo, que carga un archivo en un servidor FTP, se reintentará tres veces en caso de error. El número de reintentos de cualquier instancia de trabajo aparece en el registro. Si además necesita obtener y procesar el número de reintentos en tiempo de ejecución, llame a la función de expresión retry-count.

Configurar un tiempo de espera
Puede configurar un tiempo de espera en un paso controlador de error/operación correcta haciendo clic en el botón configurar un tiempo de espera en la parte superior del bloque Error/operación correcta. Al hacer clic en este botón, aparecerán dos opciones: tiempo de espera y forzar detención tras un tiempo adicional de N segundos. El primer tiempo de espera cancela un paso del trabajo si no se completa con éxito tras el tiempo especificado (en segundos). El paso de trabajo puede acceder a la solicitud u omitirla. Cuando haya expirado el primer tiempo de espera, se activará el segundo tiempo de espera y se forzará la cancelación del paso del trabajo. Los tiempos de espera hacen que el paso cancelado falle. Si ha definido controladores Cuando haya errores, Al reintentar o Siempre, estos se procesarán a continuación.
Pasos Reanudar
Los pasos Reanudar permiten continuar la ejecución incluso después de que se haya producido un error. Los pasos Reanudar son relevantes para el control de errores y solo pueden ocurrir en secciones de controladores de bloques protegidos. Los pasos Reanudar también se pueden utilizar dentro de condicionales que se utilizan dentro de secciones de controladores de bloques protegidos.
Cómo funcionan los pasos Reanudar
La idea principal del paso Reanudar es reemplazar el resultado del paso protegido que ha fallado con un objeto de resultado recién creado. Esto evita que el trabajo se interrumpa en caso de que se produzca un error dentro del paso de control de errores/operación correcta. Cuando se ejecuta un paso Reanudar, se llevan a cabo las siguientes acciones:
1.El resultado del bloque protegido correspondiente se define como la expresión calculada.
2.Después de eso, el paso Reanudar abandona el bloque protegido del que es controlador.
3.La ejecución se reanuda después del bloque protegido, que podría ser el siguiente paso después de él o el final del trabajo, como si el bloque protegido se hubiera ejecutado correctamente.
Una vez que el paso Reanudar haya terminado de ejecutarse, no se ejecutarán más bloques de controladores del bloque protegido actual, ni siquiera los pasos dentro del bloque controlador actual. Si necesita definir algunas operaciones de limpieza, puede anidar otro bloque protegido dentro del primero y añadir, por ejemplo, controladores Siempre o Cuando la operación funcione correctamente.
Agregar un paso Reanudar
Para agregar un paso Reanudar:
1.Cree un paso de control de errores/operación correcta.
2.Haga clic en el icono + en la ubicación deseada.
3.Seleccione Paso Reanudar en la lista.
4.Aparecerá el paso Reanudar, que contiene un campo de texto en el que deberá introducir una función de expresión. El resultado del bloque protegido actual se definirá como la expresión calculada en este campo.
La expresión que se pasa al paso Reanudar debe ser compatible con el tipo devuelto del bloque protegido, que es el tipo del último paso ejecutado dentro de la secuencia protegida. La siguiente lista muestra las funciones de expresión que puede utilizar:
Dónde colocar el paso Reanudar
Hay diferentes ubicaciones donde puede colocar los pasos Reanudar en bloques protegidos. A continuación se ofrecen algunos ejemplos posibles:
•Ejemplo 1: Puede colocar un paso Reanudar dentro de un bloque controlador.
•Ejemplo 2: También puede dividir el bloque protegido en dos bloques anidados, uno que contenga un paso Reanudar y otro que ejecute los controladores Siempre que queden.
Ejemplo
En la práctica, no es necesario definir todos los tipos de controladores para cada trabajo. Lo más común es definir solamente los controladores Cuando haya errores y Siempre (imagen siguiente).
El primer paso ejecuta un script del directorio C:\scripts. Para ello invoca la función \system\shell\commandline. La ejecución de este paso está protegida por dos controladores: Cuando haya errores y Siempre. Si la ejecución del primer paso falla, el controlador Cuando haya errores solamente envía un correo electrónico con el ID de la instancia de trabajo fallida en el asunto. El controlador Siempre se ejecuta siempre, independientemente de si el primer paso se completó correctamente o no. Este controlador guarda un mensaje en el registro, para lo que ejecuta un script desde el directorio C:\scripts.
Para ver un ejemplo más completo, consulte el apartado Agregar un control de errores a un trabajo.
