Поделиться через


Пример. Сравнение данных события для предотвращения дублирования уведомлений

В приведенном ниже примере показано использование таблицы хроники событий для исключения избыточных уведомлений на основе ранее полученных данных события. Подписчикам посылаются только новые, уникальные данные. В этом примере приложение обновления новостей уведомляет пользователя о новых заголовках новостей на конкретном веб-узле, связанном с новостями.

Сценарий

Подписка на основе событий определена для уведомления пользователя каждый раз при размещении нового заголовка на веб-узле, связанном с новостями. Веб-узел не дает никаких возможностей для определения поставщиком событий времени изменения заголовка, поэтому поставщик событий собирает содержимое элемента заголовка каждые 15 минут. В следующей таблице показаны данные на утро.

Время Заголовок новостей

09:00 по Гринвичу

Политический кризис в столице

09:15 по Гринвичу

Политический кризис в столице

09:30 по Гринвичу

Перестрелка в Каскадных горах

Пользователь получает уведомление на основании данных в 09:00 по Гринвичу, содержащих текущий заголовок: «Политический кризис в Олимпии». После обработки пакетов событий и создания уведомления правило хроники событий, определенное для данного приложения, вставляет в таблицу хроники событий строку для текущего заголовка.

Правило подписки

Операция создания уведомления, определенная для правила подписки, использует таблицу хроники событий, чтобы не допустить появление дублирующихся уведомлений посредством исключения событий, заголовки которых уже существуют в таблице хроники событий.

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)

Результаты

В этом примере процесс уведомления происходит следующим образом.

  1. Первый заголовок под названием «Политический кризис в Олимпии» отсутствует в таблице хроники и отправляется пользователю в качестве уведомления. Затем этот заголовок вносится в таблицу хроники.
  2. Второй заголовок под названием «Политический кризис в Олимпии» идентичен существующей записи (из первого заголовка) в таблице хроники. Он не отправляется пользователю, и таблица хроники не обновляется.
  3. Третий заголовок под названием «Перестрелка в Каскадных горах» отсутствует в таблице хроники и отправляется пользователю в качестве уведомления. Затем этот заголовок вносится в таблицу хроники.

См. также

Основные понятия

Определение хроники для класса событий
Определение таблиц хроники событий
Определение правил подписок
Пример. Использование хроники событий для запланированных подписок
Пример. Использование верхних значений данных события для предотвращения дублирования уведомлений

Справка и поддержка

Получение помощи по SQL Server 2005