«Task Scheduler», la evolución de las colas de proyecto de NAV

Cristian FloresTutoriales Leave a Comment

Muchas son las novedades que Microsoft ha traído consigo en su nueva versión de Dynamics NAV 2017. Algunos de mis compañeras ya han hablado de algunas de ellas y han comentado cómo, por ejemplo, fraccionar ingresos y gastos, o establecer roles y permisos.

Hoy me gustaría hablar de las llamadas colas de proyecto, que también han sido mejoradas por la compañía de Redmond para poder programar tareas más complejas, abriendo un nuevo y amplio abanico de posibilidades.

Seguro que muchos de vosotros ya las conocéis, puesto que vienen acompañándonos desde hace varias versiones. Para los que no, las colas de proyecto nos permiten ejecutar tareas en una hora y fecha concretas.

¿Qué hay de nuevo entonces en esta última versión? Dynamics NAV 2017 nos ofrece la funcionalidad «Task Scheduler«, que al habilitarla en nuestro Servidor NAV, permite que las tareas se ejecuten en una sesión en segundo plano y, una vez completada, esta sesión se cierra por completo.

Además, esta última versión del ERP de Microsoft también nos permite definir cuántas tareas se pueden ejecutar de manera simultánea. Todas estas opciones están disponibles en el menú de Administración de Dynamics NAV.

Código C/AL y las colas de proyecto

Como acabo de comentar, ahora disponemos de nuevas funciones para crear y gestionar las colas de proyecto. Desde el menú de funciones C/AL, en el entorno de desarrollo, tenemos el nuevo tipo TASKSCHEDULER con estas nuevas funciones.

"Task Scheduler", la evolución de las colas de proyecto de NAV

  • CREATETASK: Crea una tarea para ejecutar una Codeunit en una fecha y hora específicas.
  • TASKEXISTS: Comprueba si una tarea ya está creada.
  • CANCELTASK: Cancela una tarea específica.
  • SETTASKREADY: Establece la tarea como preparada para poder ser ejecutada.

Flujo de las tareas

Veamos el proceso que siguen las tareas:

  1. Cuando añadimos la tarea, ésta se guarda en la tabla 2000000175 “Scheduled Task”.
  2. Cuando la tarea está en estado preparado y llega la hora y fecha en la que lo hemos programado, una nueva sesión en segundo plano se abre para ejecutar la Codeunit especificada.
    • Esta sesión podemos verla en la tabla 2000000111 “Session Event”.
  3. Si ocurre un error durante la ejecución de la tarea, se ejecutará la codeunit de error que hayamos indicado pasándole el error. En caso que no haya especificada una codeunit de error, pasa al ciclo de reintentos.

Los reintentos se ejecutan de la siguiente manera, al no ser que la tarea sea interrumpida por la codeunit de error:

  • Dos minutos después del primer fallo.
  • Cuatro minutos después del segundo fallo.
  • Quince minutos después del tercer fallo y siguientes hasta un máximo de diez intentos.

Fallos en las tareas

Hay que tener en cuenta que, dado que las tareas se ejecutan en segundo plano, las funciones que requieren una interfaz de usuario no mostrarán ningún tipo de mensaje o error y tendrán un comportamiento similar a la función STARTSESSION suprimiendo los cuadros de diálogo. Si se requiere CONFIRMAR una acción por parte del usuario provoca un fallo en la tarea. Además, pueden producirse fallos por:

  • Se produjo un error en la conexión SQL o error transitorio con la base de datos.
  • La empresa con la que trabaja la tarea no puede abrirse.
  • La instancia de Microsoft Dynamics NAV Server se reinició mientras se estaba ejecutando la tarea.
  • El usuario no tiene permisos para ejecutar los objetos que se utilizan en la tarea.

Podéis ver estos errores en el visor de eventos del servidor que ejecuta la instancia de Microsoft Dynamics NAV.

Sin embargo, si tenemos en cuenta todo esto, lo cierto es que disponemos de un programador de tareas mucho más completo igualándose al nivel del programador de tareas de Windows. Así que ahora ya tienes una nueva opción para, por ejemplo, controlar cuándo se ejecutan determinadas operaciones o procesos.

Entre los beneficios de la opción “Task Scheduler” encontramos la ejecución de múltiples tareas simultáneas y la gestión de fallos sencilla en caso de que la tarea falle. ¿Qué significa esto? Que ahora te permite indicar una codeunit que se ejecutará en caso de fallo pudiendo trabajar con el error o realizando otras tareas.

Ahora ya estás listo para utilizar las colas de proyecto y si tienes cualquier duda, ¡estamos a tu disposición!

Cristian Flores
Dynamics

 

Si quieres ponerte en contacto con nosotros puedes usar este formulario o llamarnos al 902 500 358:

Deja un comentario