SubscriptionClass 要素 (ADF)
1 つのサブスクリプション クラスの定義が含まれます。
構文
<SubscriptionClasses>
<SubscriptionClass>
要素の特性
特性 | 説明 |
---|---|
データ型 |
なし。 |
既定値 |
なし。 |
個数 |
SubscriptionClasses 要素につき 1 個以上 (必須)。 |
更新 |
アプリケーションの更新時に追加および削除できます。 |
要素の関係
関係 | 要素 |
---|---|
親要素 |
|
子要素 |
SubscriptionClassName 要素 (ADF) SubscriptionClass の Schema 要素 (ADF) SubscriptionClass の FileGroup 要素 (ADF) |
解説
SubscriptionClass 要素を削除した後、アプリケーションを更新すると、サブスクリプション クラスが削除され、既存のサブスクリプション テーブルは "Old" を追加した名前に変更されます。既存のサブスクリプション テーブル インデックスは、変更されずに残ります。
既存のサブスクリプション テーブルから新しいサブスクリプション テーブルにデータを転送するには、手動で転送する必要があります。詳細については、「アプリケーションの更新」を参照してください。
使用例
次の例は、株価通知のサブスクリプション クラスを定義する SubscriptionClass 要素を示しています。このサブスクリプション クラスでは、次の処理を実行します。
- サブスクリプション テーブルを定義し、そのテーブルを
Secondary
ファイル グループに配置し、テーブルのインデックスを SubscriberID 列に定義します。この列は、Notification Services によってサブスクリプション クラス スキーマに自動的に定義されます。 - サブスクリプション クラスのイベント ルールを作成します。このイベント ルールでは、イベント トリガの通知を生成し、サブスクリプションの記録を更新します。
- サブスクリプション クラスの定期的なルールを作成します。この定期的なルールでは、定期的なサブスクリプションを生成し、サブスクリプションの記録を更新します。
- サブスクリプションの記録を作成します。
<SubscriptionClass>
<SubscriptionClassName>StockSubscriptions</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>StockSymbol</FieldName>
<FieldType>char(10)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>StockTriggerPrice</FieldName>
<FieldType>money</FieldType>
<FieldTypeMods>NOT NULL DEFAULT 10</FieldTypeMods>
</Field>
</Schema>
<FileGroup>Secondary</FileGroup>
<IndexSqlSchema>
<SqlStatement>
CREATE INDEX StockSubIndex
ON StockSubscriptions (SubscriberId);
</SqlStatement>
</IndexSqlSchema>
<EventRules>
<EventRule>
<RuleName>StockSubscriptionNotifyRule</RuleName>
<Action>
-- Generate event-triggered notifications
INSERT INTO StockNotifications
( SubscriberId, DeviceName, SubscriberLocale,
StockSymbol, StockPrice )
SELECT S.SubscriberId, S.DeviceName,
S.SubscriberLocale, E.StockSymbol, E.StockPrice
FROM StockSubscriptions S JOIN StockEvents E
ON S.StockSymbol = E.StockSymbol
JOIN StockEventChron C
ON S.StockSymbol = C.StockSymbol
WHERE S.StockTriggerPrice <= E.StockPrice
AND S.StockTriggerPrice > C.StockHighPrice;
-- Maintain subscription chronicle
INSERT StockSubscriptionChron
(SubscriberId, StockSymbol, StockPrice)
SELECT S.SubscriberId, S.StockSymbol, E.StockPrice
FROM StockSubscriptions S JOIN StockEvents E
ON S.StockSymbol = E.StockSymbol;
</Action>
<ActionTimeout>P0DT00H01M00S</ActionTimeout>
<EventClassName>StockEvents</EventClassName>
</EventRule>
</EventRules>
<ScheduledRules>
<ScheduledRule>
<RuleName>StockSubScheduledRule</RuleName>
<Action>
-- Generate scheduled notifications
INSERT INTO ScheduledNotifications
( SubscriberId, DeviceName, SubscriberLocale,
StockSymbol, StockPrice )
SELECT S.SubscriberId, S.DeviceName,
S.SubscriberLocale, C.StockSymbol, C.StockPrice
FROM StockSubscriptions S JOIN StockEventChron C
ON S.StockSymbol = C.StockSymbol
WHERE S.StockTriggerPrice <= C.StockHighPrice
GROUP BY S.StockSymbol, C.StockHighPrice;
-- Maintain subscription chronicle
INSERT StockSubscriptionChron
(SubscriberId, StockSymbol, StockPrice)
SELECT S.SubscriberId, S.StockSymbol, C.StockHighPrice
FROM StockSubscriptions S JOIN StockEventChron C
ON S.StockSymbol = C.StockSymbol;
</Action>
<ActionTimeout>P0DT00H00M45S</ActionTimeout>
</ScheduledRule>
</ScheduledRules>
<Chronicles>
<Chronicle>
<ChronicleName>StockSubscriptionChron</ChronicleName>
<SqlSchema>
<SqlStatement>
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'StockSubscriptionChron')
DROP TABLE StockSubscriptionChron;
</SqlStatement>
<SqlStatement>
CREATE TABLE StockSubscriptionChron
(
SubscriberId bigint,
StockSymbol char(10),
StockPrice money
PRIMARY KEY (SubscriberId)
);
</SqlStatement>
</SqlSchema>
</Chronicle>
</Chronicles>
</SubscriptionClass>
参照
関連項目
その他の技術情報
コア サブスクリプション クラスの定義
インスタンスとアプリケーションの更新