Partager via


Exemple : utilisation de valeurs de données d'événement élevées pour éviter les notifications en double

L'exemple suivant illustre comment utiliser une table des chroniques d'événements pour éviter les notifications en double, en fonction des valeurs de données d'événement les plus grandes pendant un intervalle de temps spécifié. Dans cet exemple, une application de notifications boursières vous fournit des notifications quand leurs actions sélectionnées croisent des seuils prédéfinis.

Scénario

L'application récupère les nouvelles données d'événement de stock auprès d'un service Web toutes les 20 minutes. Les données du matin sont illustrées dans le tableau suivant.

Heure d'entrée Code Stock Prix Stock (dollars américains)

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

Votre abonnement géré par événements déclenche une notification lorsque le stock de AWKS atteint une valeur égale ou supérieure à 71,00 $. Vous recevez donc une notification basée sur les données enregistrées à 10:00 GMT. Une fois que le lot d'événements a été traité et que votre notification est générée, la valeur la plus élevée de la journée, 71,55 $ jusqu'alors, est entrée ou mise à jour dans la table des chroniques d'événement par une règle de chronique d'événements définie pour cette application.

Règle d'abonnement

Les données d'événement enregistrées à 10:20 GMT arrivent pour traitement. L'action de génération des notifications définie pour la règle d'abonnement utilise la table des chroniques d'événements pour éviter les notifications en double. Pour cela, l'action exclut les notifications en double une fois que le prix de déclencheur a été transmis, sauf si un nouveau pic a été atteint :

-- 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(fr-fr,SQL.90).gifImportant :
Si vous définissez une application dans un fichier XML, vous devez remplacer les caractères XML réservés, tels que '>', par leurs références d'entité. Pour plus d'informations, consultez XML Reserved Characters.

Résultats

Tout abonnement dont un prix de déclencheur est inférieur au égal à 71,55 $ a déjà reçu une notification et n'en recevra pas d'autre. Tout abonnement dont un prix de déclencheur est supérieur au prix maximal stocké de 71,55 $, mais inférieur ou égal au nouveau prix maximal de 72,00 $, reçoit une notification. Une fois les notifications générées, la règle de chronique d'événements met à nouveau à jour la table des chroniques d'événements avec les données les plus récentes.

Voir aussi

Concepts

Définition de chroniques pour une classe d'événements
Définition des tables de chroniques d'événements
Définition de règles d'abonnement
Exemple : Utilisation d'une chronique d'événements pour les abonnements planifiés
Exemple : comparaison de données d'événements afin d'éviter les notifications en double

Aide et Informations

Assistance sur SQL Server 2005