第 4 课:添加通知类
在本课中,将在应用程序定义文件 (ADF) 中添加一个通知类,然后更新 Notification Services 实例,将更改应用于应用程序数据库。然后可以查看对应用程序数据库所做的更改。
通知类概述
通知类代表由 Notification Services 应用程序生成的一种通知类型。定义通知类时,需要定义下列信息:
- 通知数据(包括数据类型)的字段。这些字段用于定义将要发送给订阅方的数据。
- 有关内容格式化程序的信息,该程序用于为通知类设置通知格式。可以使用内置可扩展样式表语言转换 (XSLT) 内容格式化程序,也可以使用自定义内容格式化程序。
- 有关如何使用传递协议传递通知的信息。
此外,还可以定义可选设置,如摘要或多播传递以及通知到期时间等。有关通知类的详细信息,请参阅定义通知类。
创建或更新应用程序时,Notification Services 使用通知类定义来创建表、视图、索引和存储过程,用于存储和管理通知数据。
创建通知表和视图时,Notification Services 将添加下列字段:SubscriberId、DeviceName 和 SubscriberLocale。这些字段是 Notification Services 必需的,将在后面的课程中说明。
WeatherAlerts 通知类
对于此应用程序,您将在 ADF 中添加一个 WeatherAlerts 通知类。此通知类有五个通知字段、一个 XSLT 内容格式化程序和一个文件传递协议。
- 这五个通知字段分别是 City、Date、Low、High 和 Forecast。在此应用程序中,通知类字段与事件类字段匹配,但这不是必需的。
- Notification Services 分发通知时,会使用内置 XSLT 内容格式化程序,将原始数据格式化为自定义消息。XSLT 文件的名称为 WeatherTransform.xslt,该文件的位置由
%_AppPath_%
参数定义;此参数的值在 ICF 中提供。
有关 XSLT 内容格式化程序的详细信息,请参阅 XSLT 内容格式化程序。 - 格式化后,Notification Services 会使用内置文件传递协议,将通知传递给一个文件。该文件的名称和位置在 ICF 的 DeliveryChannels 元素中定义。
协议定义可以包含消息标头的字段定义(如 SMTP 所需的那些字段定义),以及用于配置重试、失败和超时设置的协议执行设置。文件协议不使用这些设置,但多数其他协议都要使用标头字段。注意: 文件传递协议主要用于确定原型和进行测试。
将通知类 XML 添加到 ADF
本部分中的 XML 定义了通知类。检查 XML,然后按照说明将 XML 复制到 ADF。
将通知类 XML 添加到 ADF
单击**“复制代码”**以将 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>
在解决方案资源管理器中,打开 WeatherADF.xml。
用刚复制的 XML 替换以下 XML。
<!-- Notification Classes -->
<NotificationClasses></NotificationClasses>
在**“文件”菜单上,选择“保存 WeatherADF.xml”**。
更新 Notification Services 的实例
修改了 ADF 后,即可更新 Notification Services 实例,将通知类对象添加到应用程序数据库中:
更新 Notification Services 的实例
在对象资源管理器中,展开 Notification Services。
右键单击 Tutorial,指向**“任务”,再选择“更新”**。
在**“更新实例”对话框中,单击“浏览”,找到 TutorialICF.xml 文件,再单击“打开”**。
在**“参数”**网格中,查看参数的值。使用与创建该实例时相同的值。
单击**“确定”**。
查看**“Notification Services - 更新摘要”对话框,再单击“更新”**。
更新操作完成后,单击**“关闭”**。
检查数据库更改
更新实例时,Notification Services 将在 TutorialWeather 应用程序数据库中添加通知类的表、视图和存储过程。
- dbo.WeatherAlerts 视图是通知生成规则插入通知的地方。
- dbo.NSWeatherAlertsFileNotifications 视图包含使用文件传递协议发送的 WeatherAlerts 通知类通知。此视图仅供内部使用。
- dbo.NSWeatherAlertsNotificationDistribution 视图将若干 Notification Services 内部表中的数据合并,以提供通知分发尝试的有关信息。
- dbo.NSWeatherAlertsNotifications 表是包含通知类的通知数据的基础表。在被 Vacuumer 数据删除进程删除之前,通知数据将一直留在此表中。此表仅限内部使用。
注意: 不要直接修改通知表和视图中的数据。
可以使用对象资源管理器来检查 TutorialWeather 数据库中的这些对象。仅限内部使用的表和视图包含用于内部操作的数据;您无需了解此类数据。
可能需要刷新对象资源管理器,才能看到新对象。
下一课
请参阅
概念
其他资源
定义事件类
生成通知解决方案
SQL Server Notification Services 简介