Занятие 5: Добавление класса подписки

На этом занятии в файл определения приложения (application definition file, ADF) будет добавлен класс подписки, а затем будет обновлен экземпляр служб Notification Services, чтобы применить изменения к базе данных приложения. Затем можно просмотреть изменения, сделанные в базе данных приложения.

Основные сведения о классе подписки

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

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

Если приложение поддерживает несколько языковых стандартов и устройств подписки (например, электронная почта и сотовые телефоны), в подписку можно также добавить поля DeviceName и SubscriberLocale. Эти поля позволяют настраивать уведомления для различных устройств, часовых поясов и языков.

Службы Notification Services добавляют в базовую таблицу поле SubscriberId для каждого класса подписки.

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

Класс подписки позволяет задавать другие сведения, например индексы по данным подписок и дополнительные таблицы. Дополнительные сведения о классах подписок см. в разделе Определение классов подписки.

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

Класс подписки WeatherCity

В данном приложении требуется добавить в файл ADF класс подписки WeatherCity. Этот класс подписки имеет три поля: DeviceName, SubscriberLocale и City. Поле City очень важно в данном приложении. При создании подписок на прогнозы погоды подписчики должны указать название города.

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

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

  • Как было рассмотрено на занятии 3, класс событий WeatherData имеет пять полей: City, Date, Low, High и Forecast.
  • Класс подписки содержит поле City.
  • Как было рассмотрено на занятии 4, класс уведомлений WeatherAlerts содержит те же поля, что и класс событий (City, Date, Low, High и Forecast).
  • Кроме того, базовая таблица уведомлений содержит следующие поля: SubscriberId, DeviceName и SubscriberLocale.

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

INSERT INTO WeatherAlerts(SubscriberId, 
   DeviceName, SubscriberLocale, City, Date, Low, High, 
   Forecast)
SELECT s.SubscriberId, s.DeviceName, s.SubscriberLocale,
    e.City, e.Date, e.Low, e.High, e.Forecast
FROM WeatherData e, WeatherCity s
WHERE e.City = s.City;

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

Добавление класса подписки в ADF-файл

XML-код в данном разделе определяет класс подписки. Изучите этот XML-код и скопируйте его в файл ADF согласно приведенным инструкциям.

Добавление класса подписки в файл ADF

  1. Нажмите кнопку Скопировать код, чтобы скопировать XML-код в буфер обмена Windows.

    <!-- Subscription Classes -->
    <SubscriptionClasses>
      <SubscriptionClass>
        <SubscriptionClassName>WeatherCity</SubscriptionClassName>
        <Schema>
          <Field>
            <FieldName>DeviceName</FieldName>
            <FieldType>nvarchar(255)</FieldType>
            <FieldTypeMods>not null</FieldTypeMods>
          </Field>
          <Field>
            <FieldName>SubscriberLocale</FieldName>
            <FieldType>nvarchar(10)</FieldType>
            <FieldTypeMods>not null</FieldTypeMods>
          </Field>
          <Field>
            <FieldName>City</FieldName>
            <FieldType>nvarchar(40)</FieldType>
            <FieldTypeMods>not null</FieldTypeMods>
          </Field>
        </Schema>
        <EventRules>
          <EventRule>
            <RuleName>WeatherEventRule</RuleName>
            <EventClassName>WeatherData</EventClassName>
            <Action>
              INSERT INTO WeatherAlerts(SubscriberId, 
                 DeviceName, SubscriberLocale, City, Date, Low, High, 
                 Forecast)
              SELECT s.SubscriberId, s.DeviceName, s.SubscriberLocale,
                  e.City, e.Date, e.Low, e.High, e.Forecast
              FROM WeatherData e, WeatherCity s
              WHERE e.City = s.City;
            </Action>
          </EventRule>
        </EventRules>
      </SubscriptionClass>
    </SubscriptionClasses>
    
  2. В обозревателе решений откройте файл WeatherADF.xml.

  3. Замените следующий XML-код вновь скопированным кодом.

    <!-- Subscription Classes -->

    <SubscriptionClasses></SubscriptionClasses>

  4. В меню Файл выберите команду Сохранить WeatherADF.xml.

Обновление экземпляра служб Notification Services

После изменения файла ADF требуется обновить экземпляр служб Notification Services, чтобы добавить объекты класса подписки в базу данных приложения.

Обновление экземпляра служб Notification Services

  1. В обозревателе объектов раскройте узел Службы Notification Services.

  2. Щелкните правой кнопкой мыши пункт Учебник, установите указатель на пункт Задачи и выберите команду Обновить.

  3. В диалоговом окне Обновление экземпляра нажмите кнопку Обзор, найдите файл TutorialICF.xml и нажмите кнопку Открыть.

  4. На панели Параметры просмотрите значения параметров.

  5. Нажмите кнопку ОК.

  6. Просмотрите диалоговое окно Службы Notification Services — обновление сводки и нажмите кнопку Обновить.

  7. По завершении обновления нажмите кнопку Закрыть.

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

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

  • Представление dbo.WeatherCityView содержит представление записей подписок для связанного класса подписки.
  • Представление dbo.WeatherCity содержит текущий набор подписок, оцениваемых приложением. В запросе создания уведомления в этом представлении будут выбираться данные подписок.
  • Таблица dbo.NSWeatherCitySubscriptions является базовой таблицей, содержащей данные подписок для класса подписки.
    ms166580.Caution(ru-ru,SQL.90).gifВнимание!
    Не следует изменять данные в самих таблицах и представлениях подписок. Используйте для этого объекты, управляющие подписками. Дополнительные сведения см. в разделе Разработка интерфейсов управления подписками.

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

Чтобы увидеть новые объекты, может возникнуть необходимость обновить обозреватель объектов.

Следующее занятие

Занятие 6. Добавление поставщика событий

См. также

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

Учебник по службам Notification Services

Другие ресурсы

Представления служб Notification Services
Таблицы служб Notification Services
Определение классов подписки
Построение решений на основе служб Notification Services
Введение в службы SQL Server Notification Services

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

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