Programa Scheduler.

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.

El código es el siguiente y a partir de este pueden comenzar a programar sus propias tareas. Para que lo copien en eclipse lo ejecuten, revisen su contenido hagan las adecuaciones que necesiten.

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
    

Y bueno pues en tareas podemos tener un número muy grande de ideas y en algunas empresas muy celosas de sus procesos el llevarlas a cabo implica hacer tareas burocráticas que a veces quitan tiempo y esto nos puede ayudar a aligerar estos procesos.

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.

El archivo Scheduler.txt tiene las peticiones programas que podría tener un contenido como el siguiente 
para ejecutarlas por horario

20:08|001|003
12:00|005
18:00|002
00:00|004
20:07|004
    

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

Por otro lado el archivo Ejecuta.txt puede tener un contenido como el que se ve a continuación

001|002|003
005|004
    

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.