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.
Remarque : |
---|
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 :
- Les événements arrivent.
- 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.
- 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. - 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.
- 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
- Si vous définissez une application par le biais de XML, définissez les règles d'événement à l'aide de l'EventRule Element (ADF).
- Si vous définissez des règles d'événement par programme, créez des objets SubscriptionEventRule individuels et ajoutez-les à une classe d'abonnement à l'aide de la propriété SubscriptionEventRules.
- Si vous définissez des règles d'événement contenant des actions conditionnelles par programme, créez des objets SubscriptionConditionEventRule individuels et ajoutez-les à une classe d'abonnement à l'aide de la propriété SubscriptionConditionEventRules.
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
- Si vous définissez une règle d'événement par le biais de XML, définissez la valeur de délai d'attente à l'aide de l'ActionTimeout Element for EventRule (ADF).
- Si vous définissez une règle d'événement par programme, définissez la valeur de délai d'attente à l'aide de la propriété Microsoft.SqlServer.Management.Nmo.SubscriptionEventRule.ActionTimeout (NMO).
- Si vous définissez une règle d'événement contenant une action conditionnelle par programme, définissez la valeur de délai d'attente à l'aide de la propriété Microsoft.SqlServer.Management.Nmo.SubscriptionConditionEventRule.ActionTimeout (NMO).
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
- Si vous définissez une règle d'événement par le biais de XML, spécifiez le nom de la classe d'événements à l'aide de l'EventClassName Element for EventRule (ADF).
- Si vous définissez une règle d'événement par programme, définissez le nom de la classe d'événements à l'aide de la propriété Microsoft.SqlServer.Management.Nmo.SubscriptionEventRule.EventClassName (NMO).
- Si vous définissez une règle d'événement contenant une action conditionnelle par programme, définissez le nom de la classe d'événements à l'aide de la propriété Microsoft.SqlServer.Management.Nmo.SubscriptionConditionEventRule.EventClassName (NMO).
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