Esempio: Confronto tra dati degli eventi per impedire la duplicazione delle notifiche

Nell'esempio seguente viene illustrato come utilizzare una tabella della cronologia degli eventi per evitare notifiche ridondanti basate su dati degli eventi ricevuti in precedenza. Ai sottoscrittori vengono inviati solo i dati nuovi e univoci. Nell'esempio un'applicazione di aggiornamento delle notizie notifica all'utente la presenza di nuovi articoli in un particolare sito Web di notizie.

Scenario

La sottoscrizione guidata dagli eventi viene definita in modo da inviare una notifica all'utente ogni volta che un nuovo articolo viene pubblicato nel sito Web. Dato che il sito Web non consente in alcun modo al provider di eventi di sapere quando gli articoli si modificano, il provider di eventi raccoglie il contenuto degli articoli ogni 15 minuti. I dati relativi alla mattinata sono illustrati nella tabella seguente.

Ora Articolo

09:00 GMT

Paralisi politica nella capitale

09:15 GMT

Paralisi politica nella capitale

09:30 GMT

Violento incendio alle cascate

L'utente riceve una notifica in base ai dati delle 09:00 GMT, che include l'articolo corrente, "Paralisi politica a Olimpia." Dopo che il batch di eventi viene elaborato e la notifica generata, una riga per l'articolo corrente viene inserita nella tabella della cronologia degli eventi tramite una regola della cronologia degli eventi definita per l'applicazione.

Regola di sottoscrizione

L'azione di generazione della notifica definita per la regola di sottoscrizione utilizza la tabella della cronologia degli eventi per impedire notifiche duplicate, escludendo gli eventi il cui valore di articolo sia già esistente nella tabella della cronologia degli eventi:

SELECT dbo.NewsNotificationNotify(S.SubscriberId,
S.SubscriberDeviceName, S.SubscriberLocale,
E.Headline, E.BrowseBackURL)
FROM dbo.NewsSubscriptions S, dbo.NewsEvents E
WHERE E.Headline 
NOT IN (SELECT Headline from dbo.NewsEventChron )
INSERT dbo.NewsEventChron(Headline)
SELECT NewsEvents.Headline
FROM dbo.NewsEvents
WHERE NewsEvents.Headline
NOT IN (SELECT Headline FROM dbo.NewsEventChron)

Risultati

In base all'esempio, il processo di notifica continua come segue:

  1. Il primo articolo, "Paralisi politica ad Olimpia," non è incluso nella tabella della cronologia e viene inviato come notifica. La tabella della cronologia viene quindi aggiornata con l'articolo.
  2. Il secondo articolo, "Paralisi politica a Olimpia", è identico a un record esistente (quello relativo al primo articolo) nella tabella della cronologia. Non viene quindi inviato all'utente e la tabella della cronologia non viene aggiornata.
  3. Il terzo articolo, "Violento incendio alle cascate", non è incluso nella tabella della cronologia e viene inviato come notifica. La tabella della cronologia viene quindi aggiornata con l'articolo.

Vedere anche

Concetti

Definizione delle cronologie per una classe di evento
Definizione di tabelle della cronologia degli eventi
Definizione delle regole di sottoscrizione
Esempio: Utilizzo di un cronologia eventi per le sottoscrizioni pianificate
Esempio: Utilizzo di valori massimi di dati per impedire la duplicazione delle notifiche

Guida in linea e informazioni

Assistenza su SQL Server 2005