i
Ciclo de vida de la alerta
Creación de la Alerta.
Al iniciarse la ejecución de una actividad, ésta es registrada en la tabla de tareas pendientes (“to_do_list”), y si tiene alertas definidas, se las almacena en la tabla de alertas pendientes, (“to_do_list_alert”). De este modo, en el mismo momento en que la actividad se incluye como tarea pendiente, sus alertas se incluyen como alertas pendientes de emitir.
El sistema calcula el instante en que debe ser emitida por primera vez.
El primer paso es determinar la cantidad de segundos que deben transcurrir desde que la actividad comienza su ejecución hasta que el sistema deba emitir por primera vez la alerta.
Se analiza la definición de la actividad y se la expresa en “segundos”. Como explicamos antes, esa duración puede ser la duración máxima o la duración promedio, según se defina en la alerta.
Duración Actividad en Segundos = DA.DD + DA.HH + DA.MM |
** Ver: "Cálculo de Tiempos - Segundos por Periodo". |
Luego, esa cantidad de segundos se ve incrementada o disminuida según los valores ingresados en la sección Inicio de Alerta.
Inicio en Segundos = Inicio.DD + Inicio.HH + Inicio.MM |
** Ver: "Cálculo de Tiempos - Segundos por Periodo". |
Y entonces:
Segundos Inicio Alerta = duración Actividad en Segundos + Inicio en Segundos |
Finalmente, la fecha de primera alerta se calcula como la fecha de inicio de ejecución más los segundos calculados:
Fecha Primer Alerta = Fecha Inicio Ejecución + Segundos Inicio Alerta |
Cancelación y Reactivación del Caso.
Cuando se ejecuta la operación de “Cancelar Caso”, el sistema actualiza la lista de tareas pendientes del usuario, eliminando la actividad que estaba en ejecución.
En ese mismo momento, si existen alertas pendientes de emitir para esa actividad, también son eliminadas (de la tabla To_do_list_alert).
Cuando se ejecuta la operación de “Reactivar Caso”, el sistema actualiza la lista de tareas pendientes del usuario, incluyendo la actividad que estaba en ejecución.
En ese mismo momento, si existen alertas definidas para esa actividad, se las incluye en la tabla de alertas pendientes de emitir. (tabla To_do_list_alert).
El sistema calcula el instante en que debe ser emitida por primera vez, tal como se explicó antes.
Finalización de la Actividad.
Cuando una actividad finaliza su ejecución, el sistema analiza si existen alertas pendientes de emitir para esa actividad y las elimina de la tabla de alertas pendientes.
La emisión efectiva de las alertas pendientes, está a cargo de una Tarea Programada, de tipo Generadora de Alertas para Actividades. Deyel provee, como parte de la instalación básica, una tarea de este tipo, cuya descripción es “EJECUTA LAS ALERTAS DE LAS ACTIVIDADES”.
Esta tarea programada se configura normalmente para ejecutar a intervalos regulares de tiempo, por ejemplo, cada 5 minutos. Con cada ejecución, se ejecuta la clase BTAlertEjecutor, que describimos más adelante. Para mayor información ver "Administración de Tareas Programadas".
La ejecución de estas tareas programadas, puede monitorearse utilizando el Monitor de tareas Programadas.
La clase BTAlertExecutor
Esta es la clase que se invoca se manera automática cuando se ejecuta la tarea programada "EJECUTA LAS ALERTAS DE LAS ACTIVIDADES" .
Se realiza lo siguiente:
•Recuperar Alertas Pendientes
Se recibe como parámetro un valor fecha-hora que representa el momento en que se ejecuta la tarea programada. Llamemos Fecha Procesamiento a dicho valor.
Se recorre la tabla de alertas pendientes (to_do_list_alert), buscando aquellas tales que DT_ALERT sea menor o igual a la “Fecha de Ejecución”.
DT_ALERT <= Fecha Procesamiento |
Recordemos que el campo DT_ALERT indica el instante en que debe ocurrir la próxima emisión de la alerta, y que fue calculado considerando el calendario laboral del participante que ejecuta la actividad. O sea que la búsqueda anterior recupera todas las alertas pendientes que debieron emitirse.
Para cada una de las alertas pendientes recuperadas se realiza el siguiente procedimiento:
•Verificar Estado de la Actividad
Se verifica que la actividad asociada esté EN_EJECUCIÓN. Esto es para no emitir alertas sobre actividades que no están en el estado correcto. Si no se cumple, entonces se ignora la alerta, pasando a la siguiente.
•Verificar Feriados
Se verifica que la Fecha Ejecución no este definida como feriado para el participante responsable de ejecutar la actividad. Esto es para evitar que el sistema emita alertas durante días festivos, no laborables. Si fecha ejecución es día feriado, entonces se ignora la alerta, pasando a la siguiente.
•Calcular la Cantidad de Segundos Ejecutados
Se calcula la cantidad de segundos que transcurrieron desde que la actividad comenzó su ejecución hasta la Fecha Procesamiento.
NO se consideran en esa sumatoria los segundos durante los cuales la actividad estuvo suspendida.
Este cálculo de tiempo puede ser lineal o laboral, según se especifique en el parámetro Considerar tiempo. Ver más adelante el punto: "Cálculo de Tiempos".
•Calcular la Cantidad de Segundos hasta Iniciar Alerta
Se calcula la cantidad de segundos que deben transcurrir desde que la actividad comenzó su ejecución hasta que el sistema deba emitir por primera vez la alerta.
En primer lugar se analiza la definición de la actividad y se calcula, en segundos, la duración de la actividad. Como explicamos antes, esa duración puede ser la duración máxima o la duración promedio, según se defina en la alerta.
Duración Actividad en Segundos = DA.DD + DA.HH + DA.MM + DA.SS |
** Ver: "Cálculo de Tiempos - Segundos por Periodo". |
Luego, esa cantidad de segundos se ve incrementada o disminuida según los valores ingresados en la sección Inicio de Alerta.
Inicio en Segundos = Inicio.DD + Inicio.HH + Inicio.MM |
** Ver: "Cálculo de Tiempos - Segundos por Periodo". |
Y entonces:
Segundos Inicio Alerta = Duración Actividad en Segundos + Inicio en Segundos |
•Calcular la Cantidad de segundos hasta finalizar la alerta
Se calcula la cantidad de segundos que deben transcurrir desde que la actividad comenzó su ejecución hasta que el sistema deba emitir por última vez la alerta.
Se considera el paso previo, donde se calculó la cantidad de segundos hasta iniciar la alerta y luego, se suma la cantidad de segundos que debe durar el periodo de alerta. Esto fue definido en la sección Duración de la Alerta.
Alertamiento en Segundos = Duración.DD + Duración.HH + Duración.MM |
** Ver: "Cálculo de Tiempos - Segundos por Periodo".
Y entonces: |
Segundos Final Alertamiento = Segundos Inicio Alertamiento + Alertamiento en Segundos |
•Emisión de la Alerta
En este paso, y en función de los cálculos realizados antes, se determina si la alerta debe emitirse o no.
SI (Cantidad de segundos ejecutados) < Segundos Inicio Alerta
En estos casos no se debe emitir alerta.
Todavía no se alcanzó el tiempo de alerta.
SI NO
SI (Cantidad de segundos ejecutados) <= Segundos Final Alerta
En estos casos se debe emitir la alerta. Estamos dentro del periodo de alerta.
- Se envía notificación por mail.
- Se registra emisión de la alerta en el registro de alertas emitidas.
- Se calcula el instante de próxima ejecución de la alerta.
SI NO |
En estos casos estamos ante una alerta cuyo plazo ha expirado.
Estas alertas expiradas se tratan de la siguiente manera:
Cuando ya se han procesado previamente, NO se emite una nueva notificación.
Cuando es la primer ocasión en que se procesa la alerta, se emite la notificación solo si en la configuración del
sistema se ha indicado SEND_MAIL_ALERT_EXPIRED=TRUE
** Ver “Herramienta de Configuracion - SLConfig”.
- Se elimina la alerta del registro de Alertas Pendientes.
SI (Es la primera vez que se procesa el alerta) Y (SEND_MAIL_ALERT_EXPIRED=TRUE)
- Se envía notificación por mail.
- Se registra emisión de la alerta en el registro de alertas emitidas.
- Se indica en dicho registro que la alerta fue enviada luego de la expiración.
Observación: Cuando se envían las notificaciones por mail, se analiza la configuración del sistema recuperando el parámetro ALERT_EMAIL_TO. En caso de estar informado, se concatena el contenido de esta variable a los destinatarios del mail.
•Cálculo del Instante de Próxima Ejecución de la Alerta
Para calcular el instante de próxima ejecución, se analiza la definición de la alerta, considerando el Intervalo de la alerta.
Los valores de Días (Intervalo.DD), Horas (Intervalo.HH) y Minutos (Intervalo.MM) allí informados, permiten establecer el intervalo de tiempo o frecuencia con que debe emitirse la alerta.
Si el intervalo o frecuencia no fue informada, entonces no se actualiza el campo DT_ALERT. Se mantiene el mismo valor y la alerta será emitida cada vez que corra el proceso de emisión de alertas.
Si el intervalo fue especificado, entonces se calcula su duración expresada en segundos.
Intervalo en Segundos = Intervalo.DD + Intervalo.HH + Intervalo.MM
** Ver: "Cálculo de Tiempos - Segundos por Periodo".
Luego, se realiza el siguiente cálculo:
Se toma DT_ALERT desde la base de datos.
Se expresa en el time-zone del usuario responsable
Se calcula DTALERT = DT_ALERT + Intervalo en Segundos.
** Ver: "Cálculo de Tiempos – Fecha + Cantidad de Segundos".
Se expresa en el time Zone del Servidor
Se almacena DTALERT
Como consideración especial, se exige que el instante de próxima ejecución sea mayor que la Fecha Ejecución. O sea que el cálculo anterior se repite hasta que se cumpla la siguiente condición: DT_ALERT > Fecha Ejecución