Skip to content

Sección: Programación

La programación de adquio genera eventos programados y periódicos según las reglas de esta sección. Los eventos pueden luego disparar comportamientos en los scripts.

Calendarios

Un calendario es un conjunto de días, que pueden restringir los eventos programados. Cuando un evento programado está vinculado a un calendario, el evento solo se activará si el día actual está incluído en el calendario.

Un calendario se define con los siguientes valores:

  • Calendario padre
  • Día inicio (día y mes con año opcional)
  • Día de fin (día y mes con año opcional)
  • Días de la semana
  • Meses
  • Inclusiones (lista de días con mes, año opcional)
  • Exclusiones (lista de días con mes, año opcional)

El algoritmo para determinar si un día pertenece a un calendario sigue estas reglas por orden:

  1. Si el día cumple una inclusión, el día pertenece.
  2. Si el día es antes del inicio o es después del fin, el día no pertenece. (Si no hay año definido, el año será el del día).
  3. Si hay calendario padre y el día no pertenece al calendario padre, el día no pertenece a este calendario.
  4. Si el día o mes no está en la lista de días de la semana o meses, el día no pertenece.
  5. Si el día cumple alguna exclusión, el día no pertenece.
  6. Si no se cumple ninguna regla anterior, el día pertenece.

Eventos periódicos

Los eventos periódicos se disparan en rangos de tiempo iguales. El parámetro Dispara cada define cada cuanto se dispara el evento, contiene un desplegable para elegir la unidad de tiempo.

Los eventos periódicos tienen un nombre que los diferencia entre sí.

Eventos programados

Un evento programado se dispara cada vez que la hora local cumple las reglas establecidas. Permite para lanzar eventos periódicos con reglas más complejas que un periodo fijo.

Por ejemplo, se podría especificar un evento programado para el segundo 0 de cada minuto, de forma que se sabe con certeza que será disparado cada minuto pero sincronizado con el cambio.

Los eventos programados pueden estar vinculados a un calendario, por ejemplo, se podría crear un evento de tipo "apertura" a las 8:00 de todos los días, pero restringido a un calendario que solo incluyese de lunes a viernes y excluyese días festivos.

Los eventos programados pueden tener una duración, en cuyo caso se genera un evento de desactivación una vez ha transcurrido esa duración desde el inicio.

Para detectar y manejar el caso de que un corte del sistema (reinicio programado, corte de corriente, avería...) impida lanzar el evento de fin, se dispone de una configuración de reinicio. La configuración de disparar en reinicio puede tener tres valores:

  • No: no disparar nunca cuando inicia el sistema
  • Siempre: disparar siempre que se inicia el sistema un evento, éste será de inicio si está dentro de la duración del evento (reglas de tiempo y duración) o de fin de lo contrario
  • Cuando haya cambio de estado: disparar solo si la programación implica que se debería haber disparado antes y dada la duración todavía no se habría disparado el fin de este evento

Hay dos modos de definir la programación de este tipo de eventos.

Nomenclatura similar a CRON

Una cadena cron tiene 5 ó 6 campos, separados por espacios. Cada campo de la regla puede ser un número, una lista de números, un rango (dos números separados por guión) o un asterisco, el asterisco representa a todos los números posibles.

El orden de los campos es el siguiente (de izquierda a derecha):

  1. Segundos (solo si hay 6 campos, si no el campo omitido es este. Si se omite se asume valor 0)
  2. Minutos
  3. Horas
  4. Día del mes
  5. Número de mes, se permite número o nombre en inglés (January, February...; abreviaciones de tres letras: Jan, Feb...)
  6. Día de la semana (0 y 7 corresponden al domingo), se permiten nombres en inglés (monday, tuesday...; abreviaciones de tres letras: mon, tue...)

Por ejemplo 0 * 1-5 2 3 sería la regla que se dispararía cuando fuese cualquier hora en punto (minuto 0, hora *) de los días 1 al 5 del mes, solo en Febrero y cuando el día sea miércoles (día 3 de la semana).

Nota: El interfaz web no incluye ninguna alerta ni aviso si la regla cron especificada no es válida.

Definiendo campos

Si no se marca la nomenclatura CRON, se podrán especificar los campos equivalentes en el formulario. Se permite insertar múltiples datos numéricos separados por coma, no se permiten rangos ni nombres en inglés.

Nota: Por consistencia y para evitar errores habituales, si las horas están especificadas pero los minutos no, se establece el campo minutos a 0 automáticamente. Igualmente, si los minutos están establecidos (incluso si lo están por la regla anterior) y los segundos no, se establecen a 0 los segundos. De esta forma se evita tener por error reglas que disparen cada segundo sin ser la intención original del usuario.

Reaccionando a los eventos

La reacción de los eventos se especifica en los scripts. Para ver cómo manejar estos eventos y otros propios del funcionamiento de adquio, vea la sección de automatización con scripts.