Leçon 5 : Ajout d'une classe d'abonnement

Au cours de cette leçon, vous allez ajouter une classe d'abonnement au fichier de définition d'application (ADF), puis mettre à jour l'instance de Notification Services pour appliquer ces modifications à la base de données d'application. Vous pourrez ensuite vérifier les modifications apportées à la base de données d'application.

Informations de base sur les classes d'abonnement

Lorsque vous définissez une classe d'abonnement, vous définissez également le stockage des données d'abonnement et des requêtes qui génèrent les notifications à partir des données d'événement et d'abonnement.

Lorsque vous définissez des données d'abonnement, vous définissez des champs pour les données d'abonnement à collecter. Par exemple, si une partie des données d'abonnement concerne une ville touristique, vous pouvez ajouter le champ d'abonnement City. Ensuite, vous devez fournir une interface pour que les abonnés puissent créer des abonnements dans lesquels spécifier une ville.

Si votre application prend en charge plusieurs paramètres régionaux et plusieurs périphériques d'abonnés, tels que des messageries et des téléphones cellulaires, vous pouvez également ajouter les champs DeviceName et SubscriberLocale aux champs d'abonnement. Ces champs permettent de personnaliser les notifications pour tenir compte des différents périphériques et fuseaux horaires et des différentes langues.

Notification Services ajoute un champ SubscriberId à la tableau sous-jacente pour chaque classe d'abonnement.

Outre la définition de champs d'abonnement, vous devez également définir une règle de génération de notifications. Cette règle est une requête Transact-SQL qui établit une correspondance entre les données d'événement et d'abonnement et insère les résultats dans l'affichage des classes de notifications. Ces règles peuvent être pilotées par des événements ou planifiées. Les règles pilotées par des événements s'exécutent dès qu'un événement se produit. Les règles planifiées évaluent chaque abonnement sur la base de la planification fournie dans l'abonnement.

Une classe d'abonnement peut définir d'autres informations, telles que des index sur des données d'abonnement et des tables complémentaires. Pour plus d'informations sur les classes d'abonnement, consultez Définition de classes d'abonnement.

Lorsque vous créez l'application, Notification Services utilise la définition de classe d'abonnement pour créer les tables, les affichages, les index et les procédures stockées pour la classe d'abonnement.

Classe d'abonnement WeatherCity

Pour cette application, vous allez ajouter une classe d'abonnement WeatherCity au fichier de définition d'application (FDA). Cette classe d'abonnement contient trois champs : DeviceName, SubscriberLocale et City. Le champ City est un champ important pour cette application. Lorsque les abonnés créent des abonnements pour la météorologie, ils doivent spécifier le nom d'une ville.

Les champs d'abonnement DeviceName et SubscriberLocale sont définis de manière à ce que vous puissiez prendre en charge plusieurs périphériques et paramètres régionaux.

Cette classe d'abonnement définit également une requête de génération de notifications. Pour écrire cette requête, vous devez savoir quelles sont les données d'événement disponibles, quelles données de notification vous souhaitez produire et quelles sont les données d'abonnement disponibles :

  • Comme expliqué à la leçon 3, la classe d'événements WeatherData contient cinq champs : City, Date, Low, High et Forecast.
  • La classe d'abonnement contient un champ City.
  • Comme expliqué à la leçon 4, la classe de notifications WeatherAlerts contient les mêmes champs que la classe d'événements (City, Date, Low, High et Forecast).
  • Rappelez-vous également que la table de notification sous-jacente contient les champs suivants : SubscriberId, DeviceName et SubscriberLocale.

Dans les affichages, ces champs deviennent des colonnes. Connaissant l'existence de ces champs, vous pouvez joindre les affichages des événements et des abonnements et insérer les données dans l'affichage des notifications :

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;

Lorsque Notification Services exécute cette requête, il joint l'ensemble actuel des événements de l'affichage des classes d'événements aux abonnements de l'affichage des classes d'abonnements sur la base des correspondances établies entre les valeurs City des événements et des abonnements. Notification Services insère ensuite les résultats dans l'affichage des notifications.

Ajout de la classe d'abonnement au fichier FDA

Le XML de cette section définit la classe d'abonnement. Étudiez-le, puis suivez les instructions pour le copier dans le fichier FDA.

Pour ajouter la classe d'abonnement au fichier FDA

  1. Cliquez sur Copier le code pour copier le XML dans le Presse-papiers 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>
    
  2. Dans l'Explorateur de solutions, ouvrez WeatherADF.xml.

  3. Remplacez le XML suivant par le code que vous venez de copier.

    <!-- Subscription Classes -->

    <SubscriptionClasses></SubscriptionClasses>

  4. Dans le menu Fichier, cliquez sur Enregistrer WeatherADF.xml.

Mise à jour de l'instance de Notification Services

Une fois le fichier FDA modifié, vous devez mettre à jour l'instance de Notification Services pour ajouter les objets de classe d'abonnement à la base de données d'application.

Pour mettre à jour l'instance de Notification Services

  1. Dans l'Explorateur d'objets, développez Notification Services.

  2. Cliquez avec le bouton droit sur Didacticiel, pointez sur Tâches, puis sélectionnez Mettre à jour.

  3. Dans la boîte de dialogue Mettre à jour l'instance, cliquez sur Parcourir, recherchez le fichier TutorialICF.xml, puis cliquez sur Ouvrir.

  4. Dans le volet Paramètres, vérifiez les valeurs des paramètres.

  5. Cliquez sur OK.

  6. Passez en revue la boîte de dialogue Notification Services - Mettre à jour le résumé, puis cliquez sur Mettre à jour.

  7. Une fois la mise à jour terminée, cliquez sur Fermer.

Vérification des modifications apportées à la base de données d'application

Lorsque vous mettez à jour l'instance, Notification Services ajoute des tables, des vues et des procédures stockées pour la classe d'abonnement dans la base de données d'application TutorialWeather :

  • L'affichage dbo.WeatherCityView présente les enregistrements d'abonnements de la classe d'abonnement associée.
  • L'affichage dbo.WeatherCity contient l'ensemble actuel des abonnements en cours d'évaluation par l'application. Pour la requête de génération de notifications, vous devez sélectionner les données d'abonnement dans cet affichage.
  • La table dbo.NSWeatherCitySubscriptions est la table sous-jacente qui contient les données d'abonnement pour la classe d'abonnement.
    ms166580.Caution(fr-fr,SQL.90).gifAttention :
    Ne modifiez pas directement les données dans les tables et les affichages des abonnements. Utilisez les objets de gestion des abonnements. Pour plus d'informations, consultez Développement d'interfaces de gestion d'abonnement.

Vous pouvez utiliser l'Explorateur d'objets pour étudier ces objets dans la base de données TutorialWeather. Les tables et les affichages réservés à un usage interne uniquement, contiennent les données utilisées pour le suivi interne et la recherche de données.

Il peut s'avérer nécessaire de réactualiser l'Explorateur d'objets pour voir les nouveaux objets.

Leçon suivante

Leçon 6 : Ajout d'un fournisseur d'événements

Voir aussi

Concepts

Didacticiel Notification Services

Autres ressources

Vues Notification Services
Tables Notification Services
Définition de classes d'abonnement
Création de solutions de notification
Présentation de SQL Server Notification Services

Aide et Informations

Assistance sur SQL Server 2005