Sto creando attività pianificate che vengono eseguite su base giornaliera per monitorare gli eventi di sistema e inviare notifiche via email in base a determinati criteri. Ad esempio, se la sottoscrizione utente scadrà dopo un mese, l'utilità di pianificazione rileverà il risultato confrontando le date e quindi inviando una notifica via e-mail. Ci sono molti compiti che ascoltano molti eventi accaduti nel sistema, molti dei quali controllano le date.
Voglio assicurarmi di non inviare questa email il giorno successivo, perché la condizione è ancora valida e sarà valida tutti i giorni fino a quando (ad esempio, l'utente aggiorna il suo abbonamento).
Sto cercando un design che impedisca all'utilità di pianificazione dell'invio di inviare e-mail se già inviato.
Il mio approccio è creare la tabella Evento che contiene chiavi esterne da varie tabelle e verificare se esistono combinazioni di chiavi con un tipo di evento specifico e viene notificato. se è così, non lo notificherò di nuovo.
Con questa progettazione, l'attività si verificherà eventType = 'subscription_expire' e companyId = [id] e seriviceid = [id] se già esistono.
Mentre l'attività due controllerà eventTyp = 'notPaidInvoice' e productId = [id] e companyId = [id] esistono già o meno.
Non mi piace il design a causa di molte chiavi esterne coinvolte e mancanza di scalabilità se vengono aggiunte nuove attività e regole.
C'è un approccio standard o popolare per gestire queste situazioni?