Tres activadores diferentes te permiten programar una automatización con anticipación:
El primero, Time.ScheduledTimeEvent,
te permite programar una automatización para que comience en un solo instante preciso en
el futuro o de forma recurrente, según la hora del reloj o un evento solar
(es decir, el amanecer o el atardecer).
Por ejemplo, este activador inicia la automatización a las 10:00 p.m. todos los días:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
Como alternativa, puedes especificar un evento de hora solar en lugar de la hora del reloj. El parámetro
para este tipo de activador es un
SolarTimeStruct
que consta de lo siguiente:
type, que esSolarTimeType.SunriseoSolarTimeType.Sunset.offset, que te permite cambiar la hora de inicio en relación con el evento solar en cualquier cantidad de tiempo. Los valores positivos introducen un retraso después del evento solar, y los valores negativos hacen que el activador se active antes del evento solar.
El siguiente ejemplo es un activador que inicia la automatización 15 minutos antes del amanecer todos los días:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
Los otros dos activadores son activadores de eventos programados recurrentes, que te permiten crear automatizaciones que se ejecutan periódicamente según criterios más específicos que pueden incluir condiciones basadas en el tiempo y en el calendario.
Time.RecurringClockTimeScheduledEvent
te permite programar una automatización en función de una o más condiciones de fecha o hora.
Este activador usa una sintaxis similar a la que usa la utilidad cron de Unix para especificar el programa de una automatización recurrente.
Time.RecurringSolarTimeScheduledEvent
te permite programar una automatización según la hora del amanecer o del atardecer,
de forma opcional, en combinación con una condición basada en el calendario.
cron expresión
Es posible que ya conozcas cron, un comando que se usa en sistemas Unix y Linux
para programar trabajos recurrentes.
Los activadores de eventos programados recurrentes usan una sintaxis de expresión de programación similar a la que usa cron y, por este motivo, las expresiones de programación que se usan con estos activadores se denominan expresiones de cron.
Existen varios "tipos" de cron y varias variaciones de
sintaxis en estas implementaciones. Las expresiones cron del activador de eventos programados recurrentes usan la misma sintaxis que el programador de Quartz.
La sintaxis de la expresión cron de Quartz se explica en la documentación de CronExpression de Quartz.
Ejemplos
A continuación, se incluyen algunos ejemplos para ilustrar este concepto.
| Caso de uso | Segundo | Minuto | Hora | Día del mes | Mes | Día de la semana | Año |
|---|---|---|---|---|---|---|---|
| Ejecutar cada 24 horas, a medianoche | 0 |
0 |
0 |
? |
* |
* |
* |
| Ejecutar todos los martes a las 6:00 a.m. | 0 |
30 |
19 |
? |
* |
3 |
* |
| Se ejecuta cada hora, un cuarto de hora después de la hora, durante el mes de febrero. | 0 |
15 |
* |
? |
2 |
* |
* |
| Ejecutar una vez por hora | 0 |
0 |
* |
? |
* |
* |
* |
| Se ejecuta cada 24 horas, a la medianoche, de enero a marzo, el día de la semana más cercano al 1 del mes. | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
| El segundo jueves de febrero, una vez por hora, a las y cuarto | 0 |
15 |
* |
? |
2 |
5#2 |
* |
| Se ejecuta cada hora, un cuarto de hora después de la hora, el último día del mes de febrero. | 0 |
15 |
* |
L |
2 |
? |
* |
| Ejecutar a las 6:00 a.m. todos los martes y jueves | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
En un activador RecurringClockTimeScheduledEvent, la cadena de expresión cron se asigna al campo Time.RecurringClockTimeScheduledEvent.cronExpression.
A continuación, se muestra un ejemplo de un activador RecurringClockTimeScheduledEvent que
inicia la automatización a las 8:00 p.m. todos los miércoles de abril:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
El elemento de inicio RecurringSolarTimeScheduleEvent toma dos parámetros:
- Un
SolarTimeStruct. cronExpression: Es un subconjunto de una expresióncronque consta solo de los campos Día del mes, Mes, Día de la semana y Año. La hora solar determina la hora exacta en que se iniciará la automatización, por lo que se omiten los campos Segundo, Minuto y Hora.
En el siguiente ejemplo, se muestra un activador que hace que una automatización se inicie una hora después del amanecer, todos los miércoles de abril:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }