第 5 課:加入訂閱類別
在這一課,您會將訂閱類別加入應用程式定義檔案 (ADF),然後更新 Notification Services 的執行個體,以將所做的變更套用到應用程式資料庫。然後,您可以檢閱對應用程式資料庫所做的變更。
訂閱類別入門
當您定義訂閱類別時,會定義訂閱資料和查詢的儲存體,這些查詢從事件和訂閱資料中產生通知。
在定義訂閱資料的儲存體時,要為您收集的訂閱資料定義欄位。例如,如果訂閱資料有一部分是關於縣 (市),您可以加入 City 訂閱欄位。然後,您要提供一個介面,讓訂閱者能夠建立他們可指定縣 (市) 的訂閱。
如果應用程式支援多個訂閱者地區設定和多個裝置,例如電子郵件和行動電話,則您也可以將 DeviceName 和 SubscriberLocale 欄位加入訂閱欄位中。這些欄位可讓您自訂不同裝置、時區和語言的通知。
Notification Services 會將 SubscriberId 欄位加入每一個訂閱類別的基礎資料表。
除了定義訂閱欄位之外,您還要定義通知產生規則。這個規則是一項 Transact-SQL 查詢,它比對事件和訂閱資料,然後將結果插入通知類別檢視中。這些規則可以是事件驅動或排程。每當事件發生時,就會執行事件驅動規則。排程規則是在訂閱所提供的排程上評估個別訂閱。
訂閱類別可定義其他資訊,例如訂閱資料和補充資料表的索引。如需有關訂閱類別的詳細資訊,請參閱<定義訂閱類別>。
在建立應用程式時,Notification Services 會使用訂閱類別定義,建立訂閱類別的資料表、檢視、索引和預存程序。
WeatherCity 訂閱類別
針對這個應用程式,您要將 WeatherCity 訂閱類別加入 ADF 中。這個訂閱類別有 3 個欄位: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,然後遵照指示將 XML 複製到 ADF。
將訂閱類別加入 ADF
按一下 [複製程式碼],將 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>
在 [方案總管] 中,開啟 [WeatherADF.xml]。
將下列 XML 取代成您剛才複製的程式碼。
<!-- Subscription Classes -->
<SubscriptionClasses></SubscriptionClasses>
在 [檔案] 功能表上,選取 [儲存 WeatherADF.xml]。
更新 Notification Services 的執行個體
在修改 ADF 之後,您要更新 Notification Services 的執行個體,將訂閱類別物件加入應用程式資料庫。
若要更新 Notification Services 的執行個體
在 [物件總管] 中,展開 [Notification Services]。
以滑鼠右鍵按一下 [教學課程],指向 [工作],然後選取 [更新]。
在 [更新執行個體] 對話方塊中,按一下 [瀏覽],尋找 TutorialICF.xml 檔案,然後按一下 [開啟]。
在 [參數] 窗格中,檢閱參數值。
按一下 [確定]。
檢閱 [Notification Services - 更新摘要] 對話方塊,然後按一下 [更新]。
當更新動作完成時,按一下 [關閉]。
請檢閱應用程式資料庫中的變更。
當您更新執行個體時,Notification Services 會在 TutorialWeather 應用程式資料庫中加入通知類別的資料表、檢視和預存程序。
- dbo.WeatherCityView 檢視提供相關聯的訂閱類別之訂閱記錄的檢視。
- dbo.WeatherCity 檢視包含應用程式正在評估的目前訂閱集。在通知產生查詢中,您可以從這個檢視選取訂閱資料。
- dbo.NSWeatherCitySubscriptions 資料表是包含訂閱類別之訂閱資料的基礎資料表。
注意:
請勿在訂閱資料表和檢視中直接修改資料。請使用訂閱管理物件。如需詳細資訊,請參閱<開發訂閱管理介面>。
您可以使用 [物件總管] 來檢查 TutorialWeather 資料庫中的這些物件。僅供內部使用的資料表和檢視包含用於內部追蹤和資料查閱的資料。
您必須重新整理 [物件總管] 才能看到新物件。
下一課
請參閱
概念
其他資源
Notification Services 檢視
Notification Services 資料表
定義訂閱類別
建立 Notification 解決方案
SQL Server Notification Services 簡介