Cuando se ejecuta una actividad que contiene recordatorios, dichos recordatorios se persisten en la entidad Recordatorios. La hora en la que debe enviarse un recordatorio se calcula como sigue:
- Se recupera la duración de entrega del recordatorio en segundos. Puede especificarse directamente en segundos o en un atributo de objeto de datos de flujo de trabajo.
- Se recupera la duración en segundos de la fecha límite asociada al recordatorio. Puede especificarse directamente en segundos o en un atributo de objeto de datos de flujo de trabajo.
- Si la duración de entrega del recordatorio es un número positivo y este número es menor que la duración de la fecha límite (no se pueden especificar entregas de recordatorio con horas que sean mayores que la fecha límite por motivos obvios), la hora de entrega de la notificación de recordatorio se calcula como la duración de fecha límite menos la duración de la entrega de recordatorio. Esta duración en segundos se convierte a fecha y hora, y se suma a la fecha y hora en que se crea el recordatorio. Esto se almacena entonces en el registro de recordatorio como la fecha y hora en que debe enviarse la notificación de recordatorio.
Los recordatorios configurados para las fechas límite se procesan y envían invocando el trabajo por lotes ScanTaskDeadlines. Dicho trabajo por lotes invoca la función DeadlineScanner. scanDeadlines(), que busca los recordatorios pendientes y y envía las notificaciones de recordatorio asociadas (utilizando la estrategia de asignación de notificación de recordatorios para determinar los usuarios a quienes hay que enviar las notificaciones). Los recordatorios enviados se eliminan de la entidad Reminders para garantizar que no se vuelvan a enviar. Cuando la actividad finaliza, se eliminan los recordatorios configurados para esa actividad que no se han enviado.