Definizione delle regole eventi
Se l'applicazione supporta le sottoscrizioni basate sugli eventi, è necessario definire almeno una regola di eventi.
Le regole eventi sono set denominati di una o più query Transact-SQL che creano notifiche per le sottoscrizioni basate su eventi. Facoltativamente, le regole eventi possono modificare i dati nelle cronologie degli eventi. Le regole eventi vengono elaborate per ogni batch di eventi subito dopo l'arrivo del batch.
[!NOTA] Il momento esatto di attivazione delle regole eventi dipende dalla durata del quantum e dalla modalità di elaborazione degli eventi da parte del'applicazione. Per ulteriori informazioni, vedere Specificazione della durata dei quantum del generatore e Impostazione dell'ordine di elaborazione degli eventi.
Ogni classe di sottoscrizione può contenere una o più regole eventi. Tuttavia, non è possibile specificare un ordine di esecuzione delle regole. Le regole eventi possono venire attivate in qualsiasi ordine.
Elaborazione di regole eventi
Notification Services utilizza il seguente processo per generare le notifiche dalle regole eventi:
- Arrivo degli eventi.
- Notification Services crea un batch di eventi per classe di evento, e quindi aggiunge ogni batch di eventi alla rispettiva tabella degli eventi.
- Notification Services esegue eventuali regole cronologia per la classe di evento, che include le tabella cronologia eventi.
Se la regola cronologia non riesce, l'elaborazione si interrompe e il batch di eventi viene contrassegnato come non riuscito. Le regole eventi non verranno eseguite in quanto dipendono dalla corretta elaborazione dei batch di eventi. - Notification Services attiva quindi le regole eventi, che uniscono in join i dati degli eventi con i dati di sottoscrizione per generare le notifiche. Le regole eventi funzionano con una vista nella quale sono elencati solo gli eventi correnti per la classe di evento e una vista di sottoscrizione nella quale sono elencate solo le sottoscrizioni attivate. Le regole eventi possono inoltre utilizzare i dati delle cronologia degli eventi.
- Le regole eventi aggiungono le notifiche risultanti alle tabelle di notifica. Questi dati sono utilizzati per generare e distribuire le notifiche.
Poiché le notifiche vengono generate subito dopo l'arrivo degli eventi, le regole eventi sono utili per eventi che si verificano con frequenza casuale e per i dati correlati a momenti specifici. Sottoscrizioni per aggiornamenti relativi a un'asta e avvisi relativi alle ultime notizie sono esempi di applicazioni per le quali è consigliabile utilizzare le regole eventi.
Definizione di regole eventi
Una regola eventi è parte di una classe di sottoscrizione. Quando si definisce una classe di sottoscrizione, è necessario definire almeno una regola (eventi o pianificata). Per definire una regola eventi, creare un elemento di regola eventi. Specificare quindi un nome, un'azione da eseguire e il nome della classe di evento collegata. È inoltre possibile specificare un valore di timeout per l'azione della regola eventi.
Per definire una regola eventi
- Se si definisce un'applicazione tramite XML, definire le regole eventi utilizzando EventRule Element (ADF).
- Se si definiscono le regole eventi a livello di programmazione, creare i singoli oggetti SubscriptionEventRule e quindi aggiungerli a una classe di sottoscrizione utilizzando la proprietà SubscriptionEventRules.
- Se si definiscono le regole eventi con le azioni condizionali a livello di programmazione, creare i singoli oggetti SubscriptionConditionEventRule e quindi aggiungerli a una classe di sottoscrizione utilizzando la proprietà SubscriptionConditionEventRules.
Denominazione di una regola eventi
Ogni regola eventi deve avere un nome univoco all'interno dell'applicazione. Questo nome viene utilizzato per identificare ogni regola a scopi amministrativi.
Per denominare una regola eventi
- Se si definisce un regola eventi tramite XML, definire il nome della regola eventi utilizzando RuleName Element for EventRule (ADF).
- Se si definisce un regola eventi a livello di programmazione, definire il nome della regola eventi nella classe SubscriptionEventRule (NMO).
- Se si definisce un regola eventi con un azione condizionale a livello di programmazione, definire un nome per la regola eventi nella classe SubscriptionConditionEventRule (NMO).
Definizione di un'azione o di un'azione condizionale
Un'azione è la query eseguita da Notification Services ogni volta che viene attivata la regola. Le regole eventi possono includere azioni semplici e azioni condizionali, più complesse:
- Un'azione include una query Transact-SQL utilizzata per generare notifiche basate sulle corrispondenze tra campi sottoscrizione e campi evento. Quando i sottoscrittori creano le sottoscrizioni, definiscono i parametri per la query predefinita. Per informazioni sulla definizione delle azioni semplici, vedere Definizione di azioni.
- Un'azione condizionale inoltre include una query Transact-SQL, che definisce però una vista dalla quale i sottoscrittori possono definire le proprie sottoscrizioni. Anzichè specificare i parametri per una query predefinita, i sottoscrittori selezionano i campi di interesse e quindi definiscono le proprie condizioni utilizzando un set predefinito di operatori. Per informazioni sulla definizione delle azioni condizionali, vedere Definizione di azioni condizionali.
Specificazione di valore di timeout
Il timeout dell'azione specifica il periodo temporale consentito per le istruzioni nell'azione o nell'azione condizionale da completare. Se le istruzioni non vengono completate prima del timeout, Notification Services esegue il rollback della transazione, contrassegna la regola eventi come non riuscita e inserisce un errore nel log eventi.
Per specificare un valore di timeout
- Se si definisce una regola eventi tramite XML, definire il valore di timeout utilizzando ActionTimeout Element for EventRule (ADF).
- Se si definisce una regola eventi a livello di programmazione, definire il valore di timeout utilizzando la proprietà Microsoft.SqlServer.Management.Nmo.SubscriptionEventRule.ActionTimeout (NMO).
- Se si definisce una regola eventi con un'azione condizionale a livello di programmazione, definire il valore di timeout utilizzando la proprietà Microsoft.SqlServer.Management.Nmo.SubscriptionConditionEventRule.ActionTimeout (NMO).
Collegamento della regola a una classe di evento
Ogni regola eventi deve essere associata a una singola classe di evento Notification Services attiva la regola eventi solo dopo l'elaborazione dei batch di eventi dalla classe di evento specificata.
Per collegare la regola a una classe di evento
- Se si definisce un regola eventi tramite XML, specificare il nome della classe di evento utilizzando EventClassName Element for EventRule (ADF).
- Se si definisce un regola eventi a livello di programmazione, specificare il nome della classe di evento utilizzando la proprietà Microsoft.SqlServer.Management.Nmo.SubscriptionEventRule.EventClassName (NMO).
- Se si definisce un regola eventi con un azione condizionale a livello di programmazione, definire il nome della classe di evento utilizzando la proprietà Microsoft.SqlServer.Management.Nmo.SubscriptionConditionEventRule.EventClassName (NMO).
Vedere anche
Concetti
Definizione delle regole pianificate
Definizione di azioni
Definizione di azioni condizionali
Definizione delle regole di sottoscrizione
Definizione delle cronologie per una classe di evento