第 4 课:添加通知类

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

通知类概述

通知类代表由 Notification Services 应用程序生成的一种通知类型。定义通知类时,需要定义下列信息:

  • 通知数据(包括数据类型)的字段。这些字段用于定义将要发送给订阅方的数据。
  • 有关内容格式化程序的信息,该程序用于为通知类设置通知格式。可以使用内置可扩展样式表语言转换 (XSLT) 内容格式化程序,也可以使用自定义内容格式化程序。
  • 有关如何使用传递协议传递通知的信息。

此外,还可以定义可选设置,如摘要或多播传递以及通知到期时间等。有关通知类的详细信息,请参阅定义通知类

创建或更新应用程序时,Notification Services 使用通知类定义来创建表、视图、索引和存储过程,用于存储和管理通知数据。

创建通知表和视图时,Notification Services 将添加下列字段:SubscriberIdDeviceNameSubscriberLocale。这些字段是 Notification Services 必需的,将在后面的课程中说明。

WeatherAlerts 通知类

对于此应用程序,您将在 ADF 中添加一个 WeatherAlerts 通知类。此通知类有五个通知字段、一个 XSLT 内容格式化程序和一个文件传递协议。

  • 这五个通知字段分别是 CityDateLowHighForecast。在此应用程序中,通知类字段与事件类字段匹配,但这不是必需的。
  • Notification Services 分发通知时,会使用内置 XSLT 内容格式化程序,将原始数据格式化为自定义消息。XSLT 文件的名称为 WeatherTransform.xslt,该文件的位置由 %_AppPath_% 参数定义;此参数的值在 ICF 中提供。
    有关 XSLT 内容格式化程序的详细信息,请参阅 XSLT 内容格式化程序
  • 格式化后,Notification Services 会使用内置文件传递协议,将通知传递给一个文件。该文件的名称和位置在 ICF 的 DeliveryChannels 元素中定义。
    协议定义可以包含消息标头的字段定义(如 SMTP 所需的那些字段定义),以及用于配置重试、失败和超时设置的协议执行设置。文件协议不使用这些设置,但多数其他协议都要使用标头字段。
    ms170473.note(zh-cn,SQL.90).gif注意:
    文件传递协议主要用于确定原型和进行测试。

将通知类 XML 添加到 ADF

本部分中的 XML 定义了通知类。检查 XML,然后按照说明将 XML 复制到 ADF。

将通知类 XML 添加到 ADF

  1. 单击**“复制代码”**以将 XML 复制到 Windows 剪贴板。

    <!-- Notification Classes -->
    <NotificationClasses>
      <NotificationClass>
        <NotificationClassName>
          WeatherAlerts</NotificationClassName>
        <Schema>
          <Fields>
            <Field>
              <FieldName>City</FieldName>
              <FieldType>nvarchar(35)</FieldType>
            </Field>
            <Field>
              <FieldName>Date</FieldName>
              <FieldType>datetime</FieldType>
            </Field>
            <Field>
              <FieldName>Low</FieldName>
              <FieldType>float</FieldType>
            </Field>
            <Field>
              <FieldName>High</FieldName>
              <FieldType>float</FieldType>
            </Field>
            <Field>
              <FieldName>Forecast</FieldName>
              <FieldType>nvarchar(3500)</FieldType>
            </Field>
          </Fields>
        </Schema>
        <ContentFormatter>
          <ClassName>XsltFormatter</ClassName>
          <Arguments>
            <Argument>
              <Name>XsltBaseDirectoryPath</Name>
              <Value>%_AppPath_%</Value>
            </Argument>
            <Argument>
              <Name>XsltFileName</Name>
              <Value>WeatherTransform.xslt</Value>
            </Argument>
          </Arguments>
        </ContentFormatter>
        <Protocols>
          <Protocol>
            <ProtocolName>File</ProtocolName>
          </Protocol>
        </Protocols>
      </NotificationClass>
    </NotificationClasses>
    
  2. 在解决方案资源管理器中,打开 WeatherADF.xml。

  3. 用刚复制的 XML 替换以下 XML。

    <!-- Notification Classes -->

    <NotificationClasses></NotificationClasses>

  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.WeatherAlerts 视图是通知生成规则插入通知的地方。
  • dbo.NSWeatherAlertsFileNotifications 视图包含使用文件传递协议发送的 WeatherAlerts 通知类通知。此视图仅供内部使用。
  • dbo.NSWeatherAlertsNotificationDistribution 视图将若干 Notification Services 内部表中的数据合并,以提供通知分发尝试的有关信息。
  • dbo.NSWeatherAlertsNotifications 表是包含通知类的通知数据的基础表。在被 Vacuumer 数据删除进程删除之前,通知数据将一直留在此表中。此表仅限内部使用。
    ms170473.Caution(zh-cn,SQL.90).gif注意:
    不要直接修改通知表和视图中的数据。

可以使用对象资源管理器来检查 TutorialWeather 数据库中的这些对象。仅限内部使用的表和视图包含用于内部操作的数据;您无需了解此类数据。

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

下一课

第 5 课:添加订阅类

请参阅

概念

Notification Services 教程

其他资源

定义事件类
生成通知解决方案
SQL Server Notification Services 简介

帮助和信息

获取 SQL Server 2005 帮助