Esempio: Utilizzo di valori massimi di dati per impedire la duplicazione delle notifiche

Nell'esempio seguente viene illustrato come utilizzare una tabella della cronologia eventi per impedire la duplicazione delle notifiche in base ai valori massimi per i dati degli eventi durante un periodo di tempo specificato. In questo esempio un'applicazione di notifica relativa a titoli azionari invia notifiche all'utente quando le quotazioni dei titoli selezionati raggiungono soglie predefinite.

Scenario

L'applicazione ottiene i nuovi dati degli eventi relativi ai titoli ogni 20 minuti da un servizio Web. I dati relativi alla mattinata sono illustrati nella tabella seguente.

Ora Simbolo titolo Quotazione titolo ($USD)

09:00 GMT

AWKS

69.98

09:20 GMT

AWKS

70.35

09:40 GMT

AWKS

70.87

10:00 GMT

AWKS

71.55

10:20 GMT

AWKS

72.00

La sottoscrizione guidata dagli eventi prevede una notifica quando il titolo AWKS raggiunge un valore di $71.00 (dollari USA) o superiore. L'utente riceverà quindi una notifica basata sui dati delle 10:00 GMT. Dopo che il batch di eventi viene elaborato e la notifica generata, il valore massimo per la giornata corrente, $71,55, viene inserito o aggiornato nella tabella della cronologia degli eventi tramite una regola della cronologia degli eventi definita per l'applicazione.

Regola di sottoscrizione

I dati degli eventi delle 10:20 GMT vengono inviati per essere elaborati. L'azione di generazione della notifica definita per la regola di sottoscrizione utilizza la tabella della cronologia degli eventi per impedire notifiche duplicate, escludendo le notifiche duplicate una volta superato il prezzo che attiva la notifica, a meno che non venga raggiunto un nuovo valore massimo:

-- Generate notifications 
SELECT dbo.StockNotificationNotify(S.SubscriberId,
    S.SubscriberDeviceName, S.SubscriberLocale,
    E.StockSymbol, E.StockPrice)
FROM dbo.StockSubscriptions S 
    JOIN dbo.StockEvents E
        ON S.StockSymbol = E.StockSymbol
    JOIN dbo.StockEventChron C
        ON S.StockSymbol = C.StockSymbol
WHERE S.StockTriggerPrice <= E.StockPrice
    AND S.StockTriggerPrice > C.StockHighPrice

-- Insert new events into event chronicle
INSERT dbo.StockEventChron(StockSymbol, StockHighPrice)
SELECT E.StockSymbol, E.StockPrice
FROM dbo.StockEvents E
WHERE E.StockSymbol
    NOT IN (SELECT StockSymbol FROM dbo.StockEventChron)

-- Update existing events in event chronicle
UPDATE dbo.StockEventChron
SET C.StockHighPrice = E.StockPrice
FROM dbo.StockEvents E JOIN dbo.StockEventChron C
ON E.StockSymbol = C.StockSymbol
WHERE E.StockPrice > C.StockHighPrice
ms166492.note(it-it,SQL.90).gifImportante:
Se si definisce un'applicazione in un file XML, è necessario sostituire i caratteri XML riservati, ad esempio '>', con i relativi riferimenti a entità. Per ulteriori informazioni, vedere XML Reserved Characters.

Risultati

Le sottoscrizioni con un prezzo di attivazione della notifica di $71,55 o inferiore hanno già ricevuto una notifica, e non ne riceveranno altre. Le sottoscrizioni con un prezzo di attivazione maggiore del massimo memorizzato di $71,55, ma minore o uguale al nuovo massimo di $72,00 ricevono una notifica. Una volta generate le notifiche, la regola di cronologia degli eventi aggiorna di nuovo la tabella della cronologia degli eventi con i dati più recenti.

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: Confronto tra dati degli eventi per impedire la duplicazione delle notifiche

Guida in linea e informazioni

Assistenza su SQL Server 2005