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


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

Изменения: 17 июля 2006 г.

Следующий пример показывает использование хроники событий с классом событий службы Notification Services для предоставления данных событий для запланированных подписок. В этом примере приложение обновления прогноза погоды ежедневно уведомляет пользователей о прогнозе погоды в их области.

Сценарий

Приложение служб Notification Services собирает данные прогноза и отправляет уведомления о прогнозе погоды подписчикам. Каждая подписка задает город, для которого собираются данные о погоде, и планирует прием уведомлений. При наступлении запланированного времени подписки приложение отправляет подписчику самый последний прогноз погоды.

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

Таблица хроники событий

В классе событий необходимо определить таблицу хроники событий. Хроники используют те же столбцы, что и класс событий (City, Date, Low, High и Forecast).

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME = 'WeatherEventsChron'
        AND TABLE_SCHEMA = 'dbo')
    DROP TABLE dbo.WeatherEventsChron;
CREATE TABLE dbo.WeatherEventsChron
    (
    [City]nvarchar(35),
    [Date]datetime,
    [Low]float,
    [High]float,
    [Forecast]nvarchar(3500)
    PRIMARY KEY (City)
    );

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

Правило хроники событий

В классе событий определите правило хроники событий, которое выполняется при каждом прибытии пакета событий. Следующее правило сначала удаляет все данные хроники событий. Затем правило выбирает текущий пакет событий из представления WeatherEvents, которое содержит текущие события для класса событий, и добавляет события в хронику событий.

DELETE FROM dbo.WeatherEventsChron;
INSERT INTO dbo.WeatherEventsChron(City, Date, Low, High, Forecast)
SELECT e.City, e.Date, e.Low, e.High, e.Forecast
FROM dbo.WeatherEvents e;

Дополнительные сведения см. в разделе Определение правил хроники событий.

Запланированное правило, используемое для создания уведомлений

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

INSERT INTO dbo.WeatherNotifications(SubscriberId,
    DeviceName, SubscriberLocale,
    City, Date, Low, High, Forecast)
SELECT s.SubscriberId,
    s.DeviceName, s.SubscriberLocale,
    c.City, c.Date, c.Low, c.High, c.Forecast
FROM dbo.WeatherSubscriptions s JOIN dbo.WeatherEventsChron c
    ON s.City = c.City;

Результаты

В 8:00 прибывает новый пакет событий с последними данными о погоде. Запускается правило хроники событий и заменяет старые хронологические данные новыми.

В 8:15 необходимо оценить несколько запланированных подписок. Генератор запускает запланированное правило и создает уведомления с помощью данных событий, находящихся в хронике событий.

См. также

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

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

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

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