Définition de règles d'événement

Si votre application prend en charge les abonnements pilotés par les événements, vous devez définir au moins une règle d'événement.

Les règles d'événement sont des jeux nommés d'une ou plusieurs requêtes Transact-SQL qui créent des notifications pour les abonnements pilotés par les événements. Les règles d'événement peuvent éventuellement manipuler les données dans les chroniques d'événements. Les règles d'événement sont traitées pour chaque lot d'événements peu après l'arrivée du lot d'événements.

ms171059.note(fr-fr,SQL.90).gifRemarque :
Le moment exact d'activation des règles d'événement dépend de la durée de quantum et du mode de traitement des événements par l'application. Pour plus d'informations, consultez Définition de la durée de quantum du générateur et Spécification de l'ordre de traitement des événements.

Chaque classe d'abonnement peut contenir une ou plusieurs règles d'événement. Toutefois, vous ne pouvez pas spécifier l'ordre d'activation des règles. Les règles d'événement peuvent être activées dans n'importe quel ordre.

Traitement des règles d'événement

Notification Services utilise le processus suivant pour générer des notifications à partir des règles d'événement :

  1. Les événements arrivent.
  2. Notification Services crée un seul lot d'événements par classe d'événements, puis ajoute chaque lot d'événements à sa table d'événements respective.
  3. Notification Services exécute toutes les règles de chronique pour la classe d'événements, ce qui tient à jour les tables de chroniques d'événements.
    Si la règle de chronique échoue, le traitement est interrompu et le lot d'événements est marqué en échec. Les règles d'événement ne sont pas exécutées car elles dépendent de la réussite du traitement des lots d'événements.
  4. Notification Services active ensuite les règles d'événement, qui joignent les données d'événements aux données d'abonnement pour générer les notifications. Les règles d'événement fonctionnent par rapport à une vue qui répertorie uniquement les événements actuels pour la classe d'événements et une vue d'abonnement qui répertorie uniquement les abonnements activés. Les règles d'événement peuvent également utiliser les données de chronique d'événement.
  5. Les règles d'événement ajoutent les notifications résultantes aux tables de notifications. Ces données sont utilisées pour créer et distribuer les notifications.

Comme les notifications sont générées peu après l'arrivée des événements, les règles d'événement conviennent bien aux événements qui se déroulent de manière aléatoire et aux données pour lesquelles le temps est important. Les abonnements aux mises à jour d'enchères et les alertes d'actualités de dernière minute représentent des exemples d'applications qui doivent utiliser des règles d'événement.

Définition d'une règle d'événement

Une règle d'événement fait partie d'une classe d'abonnement. Lorsque vous définissez une classe d'abonnement, vous devez définir au moins une règle, planifiée ou pilotée par les événements. Pour définir une règle d'événement, vous créez un élément de règle d'événement. Ensuite, vous fournissez un nom, une action à effectuer et le nom de la classe d'événements liée. Vous pouvez également fournir une valeur de délai d'attente pour l'action de la règle d'événement.

Pour définir une règle d'événement

Attribution d'un nom àune règle d'événement

Chaque règle d'événement doit avoir un nom unique dans l'application. Ce nom est utilisé pour identifier chaque règle à des fins d'administration.

Pour nommer une règle d'événement

  • Si vous définissez une règle d'événement par le biais de XML, définissez son nom à l'aide de l'RuleName Element for EventRule (ADF).
  • Si vous définissez une règle d'événement par programme, définissez son nom dans la classe SubscriptionEventRule (NMO).
  • Si vous définissez une règle d'événement contenant une action conditionnelle par programme, définissez son nom dans la classe SubscriptionConditionEventRule (NMO).

Définition d'une action ou d'une action conditionnelle

Une action est la requête exécutée par Notification Services à chaque fois qu'il active la règle. Les règles d'événement peuvent contenir des actions simples et des actions conditionnelles plus complexes :

  • Une action contient une requête Transact-SQL utilisée pour générer des notifications en fonction de correspondances entre les champs d'abonnement et les champs d'événement. Lorsque les abonnés créent des abonnements, ils définissent les paramètres de la requête prédéfinie. Pour plus d'informations sur la définition d'actions simples, consultez Définition des actions.
  • Une action conditionnelle contient également une requête Transact-SQL, mais cette requête définit une vue à partir de laquelle les abonnés peuvent définir leurs abonnements. Au lieu de fournir les paramètres d'une requête prédéfinie, les abonnés sélectionnent les champs qui les intéressent, puis définissent leurs propres conditions à l'aide d'un ensemble prédéterminé d'opérateurs. Pour plus d'informations sur la définition d'actions conditionnelles, consultez Définition des actions de condition.

Définition d'une valeur de délai d'attente

Le délai d'action spécifie la durée autorisée pour terminer les instructions figurant dans l'action ou l'action conditionnelle. Si les instructions ne sont pas terminées avant l'expiration du délai d'attente, Notification Services restaure la transaction, marque la règle d'événement en échec et écrit une erreur dans le journal des événements.

Pour spécifier une valeur de délai

Liaison de la règle à une classe d'événements

Chaque règle d'événement doit être associée à une seule classe d'événements. Notification Services active la règle d'événement seulement après avoir traité les lots d'événements de la classe d'événements spécifiée.

Pour lier la règle à une classe d'événements

Voir aussi

Concepts

Définition de règles planifiées
Définition des actions
Définition des actions de condition
Définition de règles d'abonnement
Définition de chroniques pour une classe d'événements

Aide et Informations

Assistance sur SQL Server 2005