Définition du schéma de notification
Les règles d'abonnement insèrent les notifications dans une vue de notifications. C'est une vue de la table des notifications qui est nommée en fonction de la classe de notification. Les schémas de la vue et de la table sous-jacente sont dérivés du schéma de la classe de notification. Vous définissez les champs qui constituent ce schéma dans la classe de notification.
Cette rubrique décrit les champs par défaut que Notification Services ajoute au schéma et explique comment créer des champs personnalisés, notamment des champs calculés personnalisés, pour les données de notification.
Champs de notification par défaut
Lors de la création de la table qui stocke des notifications pour une classe de notification, Notification Services crée une colonne dans la table pour chaque champ de notification déclaré et ajoute cinq autres colonnes utilisées pour la mise en forme et la remise des notifications :
Remarque : |
---|
Ne définissez pas les champs suivants dans le schéma de classe de notification. Si vous le faites, la création de l'application échoue en raison des définitions de champ dupliquées. |
- NotificationId est une colonne bigint. Notification Services fournit une valeur pour ce champ pour chaque notification. La valeur est unique dans la classe de notification.
- NotificationBatchId est une colonne bigint. Chaque activation de règle qui génère des notifications produit un ou plusieurs lots de notifications. Notification Services insère automatiquement le numéro du lot dans la table de notifications.
- SubscriberId est une colonne nvarchar(255) qui contient l'ID de l'abonné pour la notification générée. Notification Services utilise l'ID d'abonné pour rechercher les informations de remise pour la notification. La règle d'abonnement qui génère les notifications doit insérer cette valeur.
- DeviceName est une colonne nvarchar(255) qui contient le nom d'un périphérique d'abonnés, tel qu'il est stocké dans la table SubscriberDevices de la base de données d'instance. Notification Services utilise le nom de périphérique pour obtenir les informations de remise; et peut fournir le nom de périphérique à un module de formatage de contenu pour la mise en forme personnalisée. La règle d'abonnement qui génère les notifications doit insérer cette valeur. Notez que la paire SubscriberId et DeviceName doit correspondre à un enregistrement de la table SubscriberDevices.
- SubscriberLocale est une colonne nvarchar(10) qui contient un code de paramètres régionaux. Ce codes de paramètres régionaux, qui doit être un des codes de paramètres régionaux pris en charge, doit être inséré par la règle d'abonnement. Notification Services transmet ces informations au module de formatage de contenu afin qu'il effectue la mise en forme spécifique aux paramètres régionaux. Pour obtenir la liste de codes pris en charge, consultez Subscriber Locale Codes.
Les colonnes suivantes de la table de notifications sont définies par vos champs de notification de la classe de notification. Après vos champs personnalisés, Notification Services ajoute trois champs supplémentaires pour le suivi de la remise des notifications :
- DeliveryStatusCode est une colonne tinyint qui contient un code d'état de remise. Cette information n'est pas destinée à être utilisée pour les rapports.
- SentTime est une colonne datetime qui contient l'heure à laquelle le protocole de remise a rendu compte de l'état de la remise de notification.
- LinkNotificationId est une colonne bigint qui est uniquement pertinente avec l'utilisation de la livraison de type digest. Si la notification a été incluse dans un résumé, mais n'était pas la première notification du résumé, ce champ contient l'ID de la première notification. La première notification contient les informations sur l'état et l'heure.
Ces champs ne sont pas destinés au débogage et aux rapports. Utilisez plutôt la Vue NS<NotificationClassName>NotificationDistribution, qui fournit ces informations dans un format plus lisible.
Champs de notification personnalisés
Les champs personnalisés sont ceux qui stockent les données qui intéressent les abonnés, ou les champs utilisés pour générer la notification définitive.
La définition des champs personnalisés pour une classe de notification nécessite que vous sachiez quelles données vous souhaitez envoyer. En outre, ces données doivent correspondre aux données produites par la règle d'abonnement qui génère les notifications.
Vous devez pour chaque champ personnalisé définir le nom du champ et le type de données. Si vous souhaitez envoyer des notifications qui incluent des prévisions météorologiques, vous pouvez définir les champs de notification suivants :
- Nom du champ : City ; Type de champ : nvarchar(35)
- Nom du champ : State ; Type de champ : nvarchar(35)
- Nom du champ : Forecast ; Type de champ : nvarchar(3500)
Les types de données de ces champs doivent être compatibles avec les types de données source utilisés lors de la génération des notifications.
Si vous utilisez la livraison de type digest et souhaitez regrouper toutes les notifications d'un abonné pour un même état, définissez le regroupement de type digest sur la valeur true pour ce champ. La nouvelle définition du champ State est la suivante :
- Nom du champ : State ; Type de champ : nvarchar(35) ; regroupement de type digest : true
Pour plus d'informations sur la livraison de type digest, consultez Spécification de la livraison de type digest ou par multidiffusion.
Pour définir des champs pour une classe de notification
- Si vous définissez une application en utilisant XML, définissez des champs individuels dans le Fields Element for Schema (ADF).
- Si vous définissez une application en utilisant des objets NMO (Notification Services Management Objects), créez les champs individuels en utilisant les objets NotificationField et ajoutez-les à une NotificationFieldCollection en utilisant la propriété NotificationFields.
Champs calculés
Les champs calculés vous permettent de calculer des données de notification juste avant que le contenu soit transmis au module de formatage de contenu.
Les champs calculés utilisent des expressions Transact-SQL pour générer une valeur pour un champ de notification juste avant que la notification soit transmise au module de formatage de contenu. Vous pouvez utiliser toutes les expressions Transact-SQL pouvant être évaluées dans une requête SELECT dans la base de données d'application. Cela inclut l'utilisation des constantes arbitraires et les appels de fonctions.
Remarque : |
---|
Dans la syntaxe Transact-SQL, les chaînes de constantes doivent figurer entre guillemets. Par conséquent, si vous utilisez une chaîne dans un champ calculé, vous devez l'entourer d'apostrophes seules. Si la chaîne est en Unicode, vous devez également la faire précéder d'un N ; par exemple, N'maChaîne'. |
Si vous voulez ajouter un champ calculé à la classe de notification, vous devez définir un nom de champ et l'expression Transact-SQL. Par exemple, pour convertir un prix en chaîne mise en forme, spécifiez l'élément suivant dans la définition du champ calculé :
- Nom du champ : FormattedStockPrice;
- Expression Transact-SQL : (CONVERT(NVARCHAR(10), StockPrice 1)
Lorsqu'une notification est envoyée au module de formatage de contenu, ce champ calculé prend la valeur du champ StockPrice pour la convertir en chaîne mise en forme. Par exemple, si le champ StockPrice est la valeur money 1 000,70, le champ FormattedStockPrice contiendra la chaîne suivante : 1,000.70.
Vous pouvez également spécifier qu'un champ calculé soit utilisé pour déterminer quelles sont les notifications qui sont regroupées pour la livraison de type digest. Pour regrouper des notifications ayant la même valeur de champ calculé, définissez la propriété du regroupement de type digest sur la valeur true pour le champ calculé.
Pour définir des champs calculés pour une classe de notification
- Si vous définissez une application en XML, définissez chaque champ dans un ComputedFields Element (ADF).
- Si vous définissez une application par programme, créez des champs individuels dans les objets NotificationComputedField et ajoutez-les à une NotificationComputedFieldCollection dans un objet NotificationClass en utilisant la propriété NotificationComputedFields.
Voir aussi
Concepts
Configuration des modules de formatage de contenu
Spécification de la livraison de type digest ou par multidiffusion
Spécification de la taille de lot de notifications
Spécification de la période de conservation des notifications
Spécification de la livraison de type digest ou par multidiffusion
Autres ressources
Définition des classes de notification
Configuration des protocoles de remise
Expressions (Transact-SQL)
CREATE TABLE (Transact-SQL)
Définition des classes de notification
Définition des applications Notification Services