更新 : 2006 年 7 月 17 日
次の例では、Notification Services イベント クラスでイベント記録を使用して、定期的なサブスクリプションのイベント データを提供します。この例では、天気更新アプリケーションがユーザーに対して、その地域の日ごとの予報に関する通知を行います。
シナリオ
Notification Services アプリケーションで天気予報データを収集し、サブスクライバに天気の通知を送信します。各サブスクリプションでは、天気情報を収集する都市と、通知を受け取るスケジュールを指定します。サブスクリプションでスケジュールされた時刻になると、アプリケーションがサブスクライバにその都市の最新の天気予報を送信します。
このアプリケーションには、すべての主要都市の最新の天気予報を格納するイベント記録があります。各イベント バッチには、アプリケーションでサポートされているすべての都市の天気予報が含まれています。天気予報のバッチが到着すると、イベント記録ルールによって古い予報が削除され、新しい予報がイベント記録に追加されます。
イベント記録テーブル
イベント クラスで、イベント記録テーブルを定義する必要があります。記録はイベント クラスと同じ列を使用します (City、Date、Low、High、および Forecast)。
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'WeatherEventsChron'
AND TABLE_SCHEMA = 'dbo')
DROP TABLE dbo.WeatherEventsChron;
CREATE TABLE dbo.WeatherEventsChron
(
[City]nvarchar(35),
[Date]datetime,
[Low]float,
[High]float,
[Forecast]nvarchar(3500)
PRIMARY KEY (City)
);
アプリケーションを更新すると、イベント記録に変更があれば、Notification Services が現在のテーブルを削除し、新しいテーブルを作成します。この構文の詳細については、「イベント記録テーブルの定義」を参照してください。
イベント記録のルール
同じくイベント クラスで、イベント バッチが到着するたびに実行されるイベント記録のルールを定義します。次のルールでは、最初にすべてのデータがイベント記録から削除されます。その後、イベント クラスの現在のイベントが含まれている WeatherEvents ビューから現在のイベント バッチが選択されて、イベント記録にイベントが追加されます。
DELETE FROM dbo.WeatherEventsChron;
INSERT INTO dbo.WeatherEventsChron(City, Date, Low, High, Forecast)
SELECT e.City, e.Date, e.Low, e.High, e.Forecast
FROM dbo.WeatherEvents e;
詳細については、「イベント記録ルールの定義」を参照してください。
通知の生成に使用される定期的なルール
通知の生成に使用される定期的なルールは、イベント ソースとしてイベント記録を使用します。これにより、定期的なサブスクリプションのイベント データが確保されます。
INSERT INTO dbo.WeatherNotifications(SubscriberId,
DeviceName, SubscriberLocale,
City, Date, Low, High, Forecast)
SELECT s.SubscriberId,
s.DeviceName, s.SubscriberLocale,
c.City, c.Date, c.Low, c.High, c.Forecast
FROM dbo.WeatherSubscriptions s JOIN dbo.WeatherEventsChron c
ON s.City = c.City;
結果
8:00 A.M. には、イベントの新しいバッチが、最新の天気情報と共に到着します。イベント記録のルールが実行されて、古い記録データが新しいイベント データに置き換えられます。
8:15 A.M. には、複数の定期的なサブスクリプションが評価されることになっています。ジェネレータが定期的なルールを実行し、イベント記録のイベント データを使用して通知を生成します。
参照
概念
イベント クラスの記録の定義
イベント記録テーブルの定義
イベント記録ルールの定義
イベント データの比較による通知の重複防止の例
イベント データの最高値を使用して通知の重複を防止する例