Herramientas y Framework de Scheduler a nivel empresarial (Quartz O.Source y Flux)
Cuando enfrentamos la operación de un departamento de informática, nos damos cuenta que el concepto "Operación" con lleva varios puntos en común, mas halla de la empresa en donde estemos trabajando y dando soporte operativo con nuestros sistemas informáticos.Descubrimos que existen tareas comunes, repetitivas, programables,gatillables o calendarizables que incluso toman en ciertos casos la forma de workflow de procesos o tareas recurrentes. Ejemplos de ello son y sin limitarse a estos: Procesos de facturación, Procesos de intercambio de archivos, procesos de generación de reportes mensuales, sincronización de carpetas o información, ejecución de webservice, cálculos de cierre de cajas o flujos, etc.
En la mayoría de las veces observo que son estas tareas las que mas tiempo y recursos humanos consumen en los típicos departamentos de informática de muchas empresas (No importando el tamaño de ellas). No obstante esta forma tradicional de operar, hoy en día existen soluciones también informáticas que nos permiten cambiar este modelo de operaciones o uno automatizado, donde el tiempo y recursos de los departamentos informáticos de las empresas quedan con el espacio de tiempo necesario para concentrarse en aspectos mas orientados al negocio de la misma que a su operación, logrando desligarse en un gran porcentaje de los temas operativos y sus costos asociados.
Si bien es cierto esta tecnología no es nueva, y en general se conocen como Sistemas o Motores de Schedulers. El concepto nuevo en este ámbito es el desarrollo en base a Frameworks de Schedulers y en colaboración con sistemas Scheduler mas potentes y flexibles. Veamos de que se trata:
Supongamos que necesitamos todo los jueves de cada semana gatillar un proceso que debe entregar como salida, una serie de reportes ejecutivos. De manera que ellos este disponibles todos los lunes a primera hora para la gerencia comercial de la empresa. El enfoque que se observa comúnmente, es algo así:
El jueves, un operador gatillara el proceso durante, digamos la mañana de ese día. Por la tarde lo estará monitorizando. En este punto podría fallar dicho proceso por un sin numero de posibles causas, desde problemas con la data, hasta fallos de conexión. En la experiencia del operador, este sabe perfectamente que debe hacer ante cada caso. Este conocimiento radica en el disparar una serie de procesos alternativos que generaran en un punto continuidad en el proceso fallido, permitiendo que este termine correctamente y genere los resultado esperados. Para todo este el operador a reservado adicionalmente el día viernes de cada semana para lidiar con estos temas, de complicarse el escenario del día jueves.
Bueno, como comprenderán este tipo de labores y escenarios ocurre en una empresa no con un solo proceso, sino con docenas de ellos todos los meses, y todos los años. El tiempo invertido y los recursos dedicados son por lejos los causantes del mayor porcentaje del costo de operaciones del departamento de informática.
La alternativa a ella, pasa por utilizar herramientas informáticas. Hablamos en este caso en particular de la combinación Framework de Scheduler y Motores de Scheduler. Personalmente hago la diferencia entre ambos, aunque existen herramientas que contemplan en un solo paquete ambas características. La parte de Framwork de scheduler, nos permite poner inteligencia de operación embebida dentro de nuestras aplicaciones, para que estas sepan como responder ante excepciones de operación. Por otro lado los Motores de Scheduler son los iniciadores de la operación, los controladores maestros y orquestadores de ella. Interectuando plenamente con las componentes del Framework de Scheduler que se han incorporado en las aplicaciones, esto potencia el modelo. Pero no es restricción del mismo. Un motor de Scheduler es capas de operar sin necesidad que las aplicaciones compartan un protocolo de framework con el mismo, aunque es deseable, en modelos complejos de operación.
Un ejemplo de herramientas framework scheduler es Quartz. Este es un framework de Scheduler de nivel empresarial, en base a APIs Java J2EE, que posee dentro de sus características empresariales, niveles de administración de cluster, y tolerancia a fallas, manejo transaccional y lo mejor de todo es una solucion Open Source, en base a la licencia de tipo Apache 2.0. Quartz opera embebido en una aplicación Java, en un server aplication y de otras formas similares, calendarizando, ejecutando y notificando los procesos que usted implemente con el mismo.
Veamos un ejemplo básico y elemental de como programar un proceso, vía Quartz. Observemos el siguiente código:
-
<br />SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); <br />Scheduler sched = schedFact.getScheduler(); <br />sched.start();</p> <p>JobDetail jobDetail = new JobDetail("myJob",null,DumbJob.class);</p> <p>Trigger trigger = TriggerUtils.makeHourlyTrigger(); // fire every hour <br />trigger.setStartTime(TriggerUtils.getEvenHourDate(new Date())); // start on the next even hour <br />trigger.setName("myTrigger");</p> <p>sched.scheduleJob(jobDetail, trigger); <br />
En la línea de código numero 5 podemos ver como se programa la tarea a realizar y en las líneas 7,8 y 9 como se especifica su periodicidad.
Bien, este ejemplo es relativamente básico y simple, pero Quartz provee de mecanismos bastante mas sofisticados para calendarizar trabajos, tiene todo un modelo de objetos orientado a Triggers, TriggerListeners, JobListeners, SchedulerListeners y CronTriggers. Lo que le da una potencia realmente fuerte a la hora de calendarizar sus procesos. Pero lo mas significativo de esta herramienta es que maneja el concepto de tarea o job como genérico paramétrico, permitiendo que su Job mantenga una parte de la inteligencia de la operación que usted desea que tenga (al definirse como una clase java que usted construye), y deja el resto de la calendarizacion, programación por eventos, gatillantes o ejecución por tiempo en manos del Scheduler. Para finalizar Quartz provee todo un mecanismo de manejo de contexto transaccional via JTA, y soporte para almacenar sus Jobs en un repositorio de tipo base de datos, así como capacidad de interactuar con EJB y JMS.
Ahora si desea mayor potencia en soluciones Scheduler, un producto comercial muy potente e interesante a evaluar es FLUX, que viene en 2 sabores FLUX (Scheduler) y FLUX BPM (Scheduler con esteroides, con sabor a BPM, pero no tanto).
Flux provee entre otras características, las siguientes funcionalidades de Scheduler:
- Automatización de Tareas
- EFT Enhanced File Transfer (FTP con Esteroides)
- Sistema de Ejecución de Procesos
- Invocación a WebService
- Consola de administración WebEnabledd
- Un Engine o Motor WorkFlow
- APIs (Java J2EE) de invocacion a framwork FLUX
Su sabor BPM (Flux BPM) agrega importantes herramientas para facilitar el uso de personas usuarias no expertas de sistemas, tales como :
- Coordinación de Tareas Humanas
- Estandarización de Procesos de Negocio (Pero estándar FLUX)
- Codificación automática de procesos (Base)
- Conductor de Tareas vía WebForms
- Dashboard de Procesos
En el caso de Flux BPM, en realidad no es un BPM 100% pero tal vez hasta le sobre con las características de BPM que trae, si su problemas es mas operativo que de procesos de negocio.
Bien, lo animo a no practicar el antiguo refrán que dice "En casa de herrero, cuchillo de palo". Apoyese de herramientas informáticas y su trabajo informático, en particular de operación.
Aquí van los links, suerte en su trabajo y saqueles provecho a los links.
Quartz y Flux
Algunos comentarios adicionales acerca de Flux en el Podcast adjunto. A ver si aumento un poco mas la velocidad de posteo, esta semana el trabajo me a impedido subir los post como hubiera querido.
Saludos Cordiales
Javier Urrutia.

(2 votos, promedio: 4.50 de 5)





¿Es posible con quartz lanzar un proceso solo una vez?. Mi idea era poder lanzar procesos como reportes, etc desde una aplicación web, y que el usuario pueda ver luego el avance de dichos procesos. Tengo reportes y otros como por ejemplo Importaciones que llevan mucho tiempo y dan como problema que se vence la sesión, también no puedo realizar ningún control, una vez lanzados estos no se pueden parar.