Expresiones Cron

El proyecto Quartz, es un programador de tareas empresarial hecho en Java. Esto quiere decir que podemos utilizar quartz cuando requerimos que algún proceso de nuestro sistema sea ejecutado cada determinado periodo de tiempo o en determinada fecha.

La ejecución de la tareas programadas se realiza a través de Triggers. Ahora veremos org.quartz.CronTrigger, el cual utiliza una sintaxis basada en el Cron de los sistemas Unix/Linux y que permite especificar expresiones complejas para la programación de las tareas.

Las expresiones del cron de Quartz se componen de 7 campos en los cuales se puede especificar valores fijos o subexpresiones (rangos, intervalos)

Segundos. Acepta números enteros del 0 al 59.
Minutos. Acepta números enteros del 0 al 59.
Horas. Acepta números enteros del 0 al 23.
Días del mes. Acepta números enteros del 0 al 31.
Meses. Acepta números enteros del 0 al 11 o las cadenas JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV y DEC.
Días de la semana. Acepta números enteros del 1 al 7 o las cadenas SUN, MON, TUE, WED, THU, FRI y SAT
Años (opcional)

30 30 15 15 3 MON 2010
La expresión anterior indicaría que la tarea será ejecutada el día Lúnes 15 de Marzo de 2010 a las 15:30:30.

CronExpression, además nos permite utilizar los siguientes caracteres comodines:

* Indica que todos los valores posibles del campo sobre el cual se asigna aplican para ejecución.

30 30 15 15 * MON 2010
Con esta expresión indicamos que la tarea se ejecutará los días 15 de mes que caigan en lúnes durante todo el 2010 a las 15:30:30.

? Es aplicable para los campos Días del mes y Días de la semana y es utilizado para determinar que en uno de los campos no se define un valor especifico, y en el otro sí.

00 21 12 15 * ? 2010
Con esta expresión indicamos que la tarea se ejecutará los días 15 de cada mes durante todo el 2010 a las 12:21:00.

00 21 12 ? * WED 2010
Y con esta indicamos que la tarea se ejecutará todos los días Miércoles del 2010 a las 12:21:00.

L Es aplicable para los campos Días del mes y Días de la semana y significa el 'último' aunque varía de acuerdo al campo en el cual se coloque. En el campo Día del mes significa el último día del mes.

00 21 12 L * ? 2010
La tarea se ejecutará el último día de cada mes durante todo el 2010 a las 12:21:00.

Mientras que en el campo Día de la semana si se coloca sólo significa 7 (sábado)

00 21 12 ? * L 2010
La tarea se ejecutará todos los sábados del 2010 a las 15:30:30.

Tambien se puede colocar junto a un día de la semana lo cual significa el último día 'n' del mes.

00 21 12 ? * MONL 2010
La tarea se ejecutará el último lúnes de cada mes durante el 2010 a las 12:21:00.

W Es aplicable al campo Días del mes y significa el 'Día laboral (lunes-viernes / 2-6) más cercano'.

00 21 12 23W * ? 2010
La tarea se ejecutará Cada mes en el día laboral más cercano al 23 durante el 2010 a las 12:21:00.

# Es aplicable al campo Días de la semana y significa el 'n' día laboral del mes.

00 21 12 ? * 3#2 2010
La tarea se ejecutará el segundo martes de cada mes durante el 2010 a las 12:21:00.

/ Es aplicable a los campos Segundos, Minutos y Horas y significa periodos de ejecución.

0 0/10 15 ? * 3#2 2010
La tarea se ejecutará Cada 10 minutos durante a las 15 horas del segundo martes de cada mes durante el 2010.

Dentro de los campos también podemos agregar subexpresiones para definir rangos o juegos de valores.

30 30 15 ? * SUN-TUE 2010-2012
La tarea de ejecutará del Domingo al Martes a las 15:30:30 todas las semanas desde el 2010 hasta el 2012.

00 21 12 ? SEP-OCT TUE,THU
La tarea de ejecutará todos los Martes y Jueves desde Septiembre hasta Octubre a las 12:21:00.

Como se puede observar las CronExpressions de Quartz permiten una gran flexibilidad al momento de definir la programación de nuestras tareas.

Comentarios