第 5 课:添加订阅类

在本课中,将在应用程序定义文件 (ADF) 中添加一个订阅类,然后更新 Notification Services 实例,将更改应用于应用程序数据库。然后可以查看对应用程序数据库所做的更改。

订阅类入门

定义订阅类时,将定义订阅数据的存储,并定义从事件和订阅数据生成通知的查询。

定义订阅数据的存储时,将定义所收集的订阅数据的字段。例如,如果订阅数据的一部分是感兴趣的城市,则可以添加 City 订阅字段。然后,提供一个接口,让订阅方创建订阅,并在订阅中指定城市。

如果应用程序支持多个订阅方区域设置和多个设备(例如,电子邮件和移动电话),还可以将 DeviceNameSubscriberLocale 字段添加到订阅字段中。这些字段用于根据不同的设备、时区和语言对通知进行自定义。

Notification Services 将 SubscriberId 字段添加到每个订阅类的基础表中。

除了定义订阅字段以外,还必须定义通知生成规则。该规则是 Transact-SQL 查询,它使事件与订阅数据匹配,并将结果插入到通知类视图中。这些规则可以是事件驱动的,也可以是计划的。一旦事件到达,就将运行事件驱动的规则。计划的规则将按订阅中提供的计划对单个订阅进行计算。

订阅类可以定义其他信息,例如,订阅数据和补充表的索引。有关订阅类的详细信息,请参阅定义订阅类

创建应用程序时,Notification Services 将使用订阅类的定义来创建订阅类的表、视图、索引和存储过程。

WeatherCity 订阅类

对于该应用程序,将向 ADF 中添加 WeatherCity 订阅类。该订阅类有三个字段,DeviceNameSubscriberLocaleCityCity 字段是该应用程序的重要字段。订阅方创建天气订阅时,必须指定城市的名称。

定义 DeviceNameSubscriberLocale 订阅字段后,就可以添加对多个设备和区域设置的支持。

此订阅类还定义了一个通知生成查询。若要编写该查询,必须知道哪些事件数据是可用的,需要产生哪些通知数据,以及哪些订阅数据是可用的:

  • 第 3 课中显示 WeatherData 事件类有五个字段:CityDateLowHighForecast
  • 订阅类有 City 字段。
  • 第 4 课中显示 WeatherAlerts 通知类与事件类有相同的字段(CityDateLowHighForecast)。
  • 同时请记住,基础通知表包含下列字段:SubscriberIdDeviceNameSubscriberLocale

这些字段在视图中将成为列。通过知道这些字段,可以联接事件和订阅视图,并将数据插入到通知视图中:

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,然后按照说明将 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. 右键单击 Tutorial,指向**“任务”,再选择“更新”**。

  3. 在**“更新实例”对话框中,单击“浏览”,找到 TutorialICF.xml 文件,再单击“打开”**。

  4. 在**“参数”**窗格中,检查参数值。

  5. 单击**“确定”**。

  6. 查看**“Notification Services - 更新摘要”对话框,再单击“更新”**。

  7. 更新操作完成后,单击**“关闭”**。

查看在应用程序数据库中所做的更改

更新实例时,Notification Services 将在 TutorialWeather 应用程序数据库中添加订阅类的表、视图和存储过程:

  • dbo.WeatherCityView 视图提供了关联的订阅类的订阅记录视图。
  • dbo.WeatherCity 视图包含应用程序所计算的当前订阅集。在通知生成查询中,从该视图中选择订阅数据。
  • dbo.NSWeatherCitySubscriptions 表是基础表,它包含订阅类的订阅数据。
    ms166580.Caution(zh-cn,SQL.90).gif注意:
    不要直接修改订阅表和视图中的数据。使用订阅管理对象。有关详细信息,请参阅开发订阅管理界面

可以使用对象资源管理器来检查 TutorialWeather 数据库中的这些对象。供内部使用的表和视图只包含用于内部跟踪和数据查找的数据。

可能需要刷新对象资源管理器,才能看到新对象。

下一课

第 6 课:添加事件提供程序

请参阅

概念

Notification Services 教程

其他资源

Notification Services 视图
Notification Services 表
定义订阅类
生成通知解决方案
SQL Server Notification Services 简介

帮助和信息

获取 SQL Server 2005 帮助