Pasos controladores de errores/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 pasos de ejecución, pasos Opción, pasos For-Each y pasos pospuestos 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 muestra 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). Cuando se ejecuten los pasos protegidos (correctamente o no), FlowForce ejecuta los controladores del bloque.
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 controlador Cuando haya errores ejecuta cierta acción si uno de los pasos del bloque protegido da lugar a error.
•El controlador Cuando la operación funcione correctamente ejecuta cierta acción si todos los pasos protegidos finalizan correctamente.
•El controlador Al reintentar se ejecuta se ejecuta si cualquiera de los pasos protegidos han fallado. Los pasos protegidos se vuelven a ejecutartantas veces como se haya definido en la opción Número de reintentos (véase la opción Reintentar más abajo). La opción predeterminada es 0.
•El controlador Siempre ejecuta cierta acción independientemente de si los pasos protegidos finalizan 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 ejecutado los pasos protegidos. El bloque Cuando haya errores se ejecuta antes que el primer bloque Siempre sólo si los pasos protegidos terminaron de ejecutarse con algún error.
En el bloque protegido de muestra anterior, 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 sólo se ejecutan si le quedan intentos a la secuencia protegida. 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 intente ejecutar un número de veces siga estos pasos:
1.Indique el número de reintentos que necesita (p.ej. 3 veces) en el cuadro de texto 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 uno o varios pasos que se deben intentar ejecutar de nuevo si ocurre un error.
En la imagen siguiente puede ver un trabajo que carga un archivo a un servidor FTP y que se intentará ejecutar 3 veces si se encuentra un 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 errores/operación correcta haciendo clic en el botón configurar un tiempo de espera en la parte superior del bloque Errores/operación correcta. Al hacer clic en este botón, aparecerán dos opciones: tiempo de espera y forzar detención tras N segundos adicionales. El primer tiempo de espera cancelará un paso de ejecución si no se ha podido realizar correctamente después de un tiempo determinado (en segundos). El paso de trabajo puede acceder a la solicitud u omitirla. Cuando expira el primer tiempo de espera, se procederá a tramitar el segundo tiempo de espera que aborta el paso del trabajo de manera imperativa. Los tiempos de espera hacen que el paso abortado resulte fallido. Si ha definido controladores Cuando haya errores, Al reintentar o Siempre, éstos se procesarán a continuación.
Pasos reanudados
Los pasos reanudados permiten seguir con la ejecución incluso después de haber encontrado un error. Los pasos reanudados son relevantes para el control de errores y sólo pueden ocurrir en secciones de bloques controladores protegidos. Los pasos reanudados también se pueden utilizar dentro de condicionales que se utilizan dentro de secciones de bloques controladores protegidos.
Cómo funcionan los pasos reanudados
La idea principal del paso reanudado es reemplazar el resultado del paso protegido fallido por un objeto resultado recién construido. Así se evita que si se produce un error en el paso controlador de errores/operación correcta, se cancele todo el trabajo. A continuación puede ver las acciones que se realizan al ejecutar un paso reanudado:
1.El resultado del bloque protegido correspondiente se establece en la expresión calculada.
2.Después, el paso reanudado abandona el bloque protegido del que es controlador.
3.La ejecución continúa después del bloque protegido (puede ser el paso siguiente o el final del trabajo) como si el bloque protegido hubiera tenido éxito.
Una vez que el paso reanudado ha terminado de ejecutarse, no se ejecutarán más bloques controladores del bloque protegido actual o incluso pasos dentro del bloque controlador actual. Si necesita definir algunas operaciones de depuración, puede anidar otro bloque protegido dentro del primero y añadir, por ejemplo, controladores Siempre o Cuando la operación funcione correctamente.
Añadir un paso reanudado
Para agregar un paso reanudado, siga estos pasos:
1.Cree un paso controlador de errores/operación correcta
2.Haga clic en el icono Más en la ubicación deseada.
3.Seleccione Paso reanudado de la lista.
4.Aparecerá el paso reanudado que contiene un cuadro de texto en el que deberá introducir una función de expresión. El resultado del bloque protegido actual se establecerá en la expresión calculada en este campo.
La expresión pasada al paso reanudado debe ser compatible con el tipo devuelto del bloque protegido, que es el tipo del último paso ejecutado dentro de la secuencia protegida. A continuación puede ver una lista de las funciones de expresión que puede usar:
Dónde colocar un paso reanudado
Existen diferentes puntos en los que puede colocar los pasos reanudados en bloques protegidos. A continuación puede ver algunas posibilidades:
•Ejemplo 1: Puede colocar un paso reanudado dentro de un bloque controlador.
•Ejemplo 2: También puede dividir el bloque protegido en dos bloques anidados, uno que contenga un paso reanudado y otro que ejecute los controladores Siempre restantes.
Ejemplo
En la práctica no es necesario definir todos los tipos de controladores por cada trabajo (aunque si quiere puede hacerlo). 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.