レッスン 4 : 通知クラスの追加
このレッスンでは、アプリケーション定義ファイル (ADF) に通知クラスを追加し、Notification Services のインスタンスを更新して、アプリケーション データベースに変更を適用します。その後、アプリケーション データベースに対する変更を確認します。
通知クラスの概要
通知クラスとは、Notification Services アプリケーションによって生成される通知の 1 つです。通知クラスを定義するときは、次の情報を定義します。
- 通知データのフィールド。これには、データ型が含まれます。これらのフィールドは、サブスクライバに送信するデータを定義します。
- コンテンツ フォーマッタに関する情報。通知クラス用として通知を書式設定します。既定の XSLT (Extensible Stylesheet Language Transformations) コンテンツ フォーマッタ、またはカスタム コンテンツ フォーマッタを使用できます。
- 通知を配信する配信プロトコルの使用方法に関する情報。
さらに、ダイジェスト配信、マルチキャスト配信、通知の有効期限なども設定できます。通知クラスの詳細については、「通知クラスの定義」を参照してください。
ユーザーがアプリケーションを作成または更新すると、Notification Services は通知クラス定義に基づいて、通知データの保存と管理に必要なテーブル、ビュー、インデックス、およびストアド プロシージャを作成します。
通知テーブルと通知ビューを作成すると、SubscriberId、DeviceName、SubscriberLocale の各フィールドが自動的に追加されます。Notification Services が使用するこれらのフィールドについては、この後のレッスンで説明します。
WeatherAlerts 通知クラス
このアプリケーションでは、WeatherAlerts 通知クラスを ADF に追加します。この通知クラスには 5 つの通知フィールドがあります。また、XSLT コンテンツ フォーマッタと File 配信プロトコルもあります。
- 通知フィールドは、City、Date、Low、High、および Forecast です。このアプリケーションでは、通知クラスのフィールドとイベント クラスのフィールドが一致していますが、これらは必ずしも一致している必要はありません。
- 通知を配信するとき、Notification Services は、既定の XSLT コンテンツ フォーマッタを使用して生データを書式設定し、カスタマイズされたメッセージを生成します。XSLT ファイルの名前は WeatherTransform.xslt です。このファイルの場所は
%_AppPath_%
パラメータにより定義されています。このパラメータの値は ICF に指定されています。
XSLT コンテンツ フォーマッタの詳細については、「XSLT コンテンツ フォーマッタ」を参照してください。 - 書式を適用した後は、既定の File 配信プロトコルを使用して通知がファイルに配信されます。ファイルの名前と場所は、ICF の DeliveryChannels 要素で定義されます。
プロトコルの定義には、メッセージ ヘッダー用のフィールド定義 (SMTP が使用するフィールドなど) のほか、再試行、失敗、およびタイムアウトの設定を構成するプロトコル実行設定などがあります。File プロトコルはこれらの設定を使用しませんが、ヘッダー フィールドはそれ以外のほとんどのプロトコルで使用されます。メモ : File 配信プロトコルは、主に実験やテストのために使用されます。
通知クラス 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 ファイルを選択して [開く] をクリックします。
[パラメータ] グリッドでパラメータの値を確認します。インスタンスの作成に使用した値と同じ値を使用します。
[OK] をクリックします。
[Notification Services - 更新の概要] ダイアログ ボックスの内容を確認し、[更新] をクリックします。
更新操作が完了したら、[閉じる] をクリックします。
データベースの変更の確認
インスタンスを更新すると、通知クラスのテーブル、ビュー、およびストアド プロシージャが TutorialWeather アプリケーション データベース追加されます。
- dbo.WeatherAlerts ビューは、通知生成ルールに従って通知が追加される場所です。
- dbo.NSWeatherAlertsFileNotifications ビューには、File 配信プロトコルを経由して WeatherAlerts 通知クラスから送信された通知が含まれています。このビューは内部でのみ使用されます。
- dbo.NSWeatherAlertsNotificationDistribution ビューは、内部の Notification Services テーブルを結合し、通知配信に関する情報を提供します。
- dbo.NSWeatherAlertsNotifications テーブルは、通知クラスに必要な通知データが保存されているテーブルです。通知データは、Vaccumer のデータ削除プロセスで削除されるまで、このテーブルに残ります。このビューは内部でのみ使用されます。
注意 : 以上の通知テーブルとビューのデータは、直接修正しないでください。
TutorialWeather データベースのこれらのオブジェクトは、オブジェクト エクスプローラで確認できます。内部でのみ使用されるテーブルとビューには、内部操作で使用されるデータのみが含まれます。このデータを理解する必要はありません。
新しいオブジェクトを確認するには、オブジェクト エクスプローラを更新しなければならない場合があります。
次のレッスン
参照
概念
Notification Services のチュートリアル
その他の技術情報
イベント クラスの定義
通知ソリューションの作成
SQL Server Notification Services の紹介