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
Important : |
---|
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