El programa Scheduler como le llamé, es una aplicación sencilla que busca ejecutar tareas comunes
en horarios definidos por el usuario o de forma inmediata si es que es necesario para operar el
aplicativo y darle soporte a su ejecución. Para lo anterior utiliza lo que son peticiones programadas
y peticiones inmediatas.
Por ejemplo podrán definirse tareas como las siguientes:
1) Depurar tablas de bases de datos
2) Renombrar archivos
3) Depurar algún repositorio de archivos
4) Ejecutar la generación de algunos reportes
5) Ejecutar algún cierre diario
6) Importar información de algún archivo o base de datos
7) Conectarse a algún servicio para obtener alguna información
El programa inicializa el Scheduler y recibe dos archivos de entrada Ejecuta.txt y Scheduler.txt.
Las peticiones son claves separadas por pipes de 3 caracteres. En este caso son la “001” que crea un
archivo con los valores de las variables de ambiente,”002” que pausa el aplicativo por 5 minutos y “003”
que termina la ejecución del Scheduler de forma inmediata.
Lo anterior quiere decir que a las 20:08 ejecutara las tareas “001” y “003”, a las 12:00 la “005” y así sucesivamente.
Cabe indicar que si alguna tarea lleva mucho tiempo ejecutándose y ocupa el horario de otra, esa otra ya no se
ejecutara. Por ejemplo si la tarea “005” de las 12:00 termina a las 19:00, la tarea “002” de las 18:00 ya no se
ejecutara ese día
Esto quiere decir que sin importar la hora, en cuanto el aplicativo detecta que existe este archivo,
carga las peticiones y las ejecuta en el orden que las encontró. En este caso 001-002-003-005 y 004.
Este archivo es renombrado para que solo se use una vez y no caiga en un ciclo interminable.
Entiendo que hay herramientas en el mercado para solucionar esta necesidad pero a veces son costosas o están
casadas con el ambiente en el que se están ejecutando. Por eso comparto está idea en JAVA que no debería
tener mucho problema al ser migrada hacía otras plataformas siempre que corran JAVA y pues en sí me parece
que la idea es buena incluso para implementarse en otros lenguajes cuando la plataforma no tenga para
ejecutar JAVA.