Ejemplo: Usar una crónica de eventos para suscripciones programadas

Actualizado: 17 de julio de 2006

El ejemplo siguiente muestra cómo usar una crónica de eventos con una clase de evento de Notification Services para proporcionar datos de eventos para suscripciones programadas. En este ejemplo, una aplicación de actualización meteorológica informa a los usuarios acerca de la previsión meteorológica para su área cada día.

Escenario

Una aplicación de Notification Services recopila datos sobre la previsión meteorológica y envía notificaciones meteorológicas a los suscriptores. Cada suscripción especifica una ciudad para la cual recopilar información meteorológica y una programación para recibir notificaciones. A la hora programada de una suscripción, la aplicación envía al suscriptor la previsión meteorológica más reciente de la ciudad.

La aplicación tiene una crónica de eventos que almacena la previsión meteorológica más reciente de todas las principales ciudades. En esta aplicación, cada lote de eventos contiene previsiones meteorológicas para todas las ciudades que son compatibles. Cuando llega un lote de previsiones meteorológicas, la regla de crónica de eventos elimina las antiguas y agrega las nuevas a la crónica de eventos.

Tabla de crónica de eventos

En la clase de evento, debe definir la tabla de crónica de eventos. La crónica utiliza las mismas columnas que la clase de evento (City, Date, Low, High y Forecast).

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME = 'WeatherEventsChron'
        AND TABLE_SCHEMA = 'dbo')
    DROP TABLE dbo.WeatherEventsChron;
CREATE TABLE dbo.WeatherEventsChron
    (
    [City]nvarchar(35),
    [Date]datetime,
    [Low]float,
    [High]float,
    [Forecast]nvarchar(3500)
    PRIMARY KEY (City)
    );

Cuando se actualiza la aplicación, si se realizan cambios en la crónica de eventos, quita la tabla actual y crea una nueva. Para obtener más información acerca de esta sintaxis, vea Definir tablas de crónica de eventos.

Regla de crónica de eventos

También en la clase de evento, el usuario define una regla de crónica de eventos que se ejecuta cada vez que llega un lote de eventos. La regla siguiente, primero, elimina todos los datos de la crónica de eventos. A continuación, selecciona el lote actual de eventos de la vista WeatherEvents, que contiene los eventos actuales para la clase de evento, y agrega los eventos a la crónica de eventos.

DELETE FROM dbo.WeatherEventsChron;
INSERT INTO dbo.WeatherEventsChron(City, Date, Low, High, Forecast)
SELECT e.City, e.Date, e.Low, e.High, e.Forecast
FROM dbo.WeatherEvents e;

Para obtener más información, vea Definir reglas de crónica de eventos.

Regla programada utilizada para generar notificaciones

La regla programada utilizada para generar notificaciones usa la crónica de eventos como origen de eventos. Esto garantiza que las suscripciones programadas tienen datos de eventos.

INSERT INTO dbo.WeatherNotifications(SubscriberId,
    DeviceName, SubscriberLocale,
    City, Date, Low, High, Forecast)
SELECT s.SubscriberId,
    s.DeviceName, s.SubscriberLocale,
    c.City, c.Date, c.Low, c.High, c.Forecast
FROM dbo.WeatherSubscriptions s JOIN dbo.WeatherEventsChron c
    ON s.City = c.City;

Resultado

A las 8:00 a. m. llega un nuevo lote de eventos con la última información meteorológica. La regla de crónica de eventos se ejecuta y reemplaza los datos antiguos de la crónica con los nuevos datos de eventos.

A las 8:15 a. m. se van a evaluar varias suscripciones programadas. El generador ejecuta la regla programada y genera notificaciones mediante los datos de eventos de la crónica de eventos.

Vea también

Conceptos

Definir crónicas para una clase de evento
Definir tablas de crónica de eventos
Definir reglas de crónica de eventos
Ejemplo: comparar datos de eventos para evitar notificaciones duplicadas
Ejemplo: usar valores altos de datos de eventos para impedir notificaciones duplicadas

Ayuda e información

Obtener ayuda sobre SQL Server 2005