Lenguaje de procesado de eventos
# Lenguaje de procesado de eventos

El Lenguaje de procesado de eventos o EPL (Event Processing Language en inglés) es un lenguaje de consulta similar a SQL con las cláusulas: SELECT, FROM, WHERE, GROUP BY, HAVING y ORDER BY. Las cadenas reemplazan a las tablas como fuente de datos y los eventos reemplazan a las filas como unidad básica de datos.

Esper es un motor implementado en Java que nos permite procesar eventos o mensajes en tiempo real, no en un tiempo cercano al real. Esto significa que a veces se tienen que procesar eventos complejos (CEP) y analizar el flujo de estos eventos. Las consultas de eventos en cadena que ofrece Esper, abordan las necesidades del flujo de eventos en el análisis de las aplicaciones CEP (aplicaciones que procesan eventos complejos). Estas consultas proporcionan, para usar con los eventos encadenados: ventanas, agregaciones, uniones y análisis de funciones. Estas consultas siguen la sintaxis de EPL. Esto permite al programador implementar aplicaciones en tiempo real capaces de enviar y escuchar a la vez continuos flujos de eventos. Como los flujos de eventos están disponibles en la aplicación, el programador tiene la opción de implementar filtros para escuchar eventos específicos de interés, relacionados con eventos del mundo real.

## Ejemplo

EPL ha sido diseñado de una forma similar al lenguaje de consultas SQL, pero a diferencia de éste, se utilizan vistas en vez de tablas. Las vistas representan las diferentes operaciones necesarias para estructurar y obtener los datos de los flujos de eventos.

Existen varias vistas en EPL, las cuales tienen diferentes funcionalidades; podemos encontrar ext:time_order que ordena los eventos que se producen fuera de orden, ext:rank que obtiene los eventos más recientes que tienen el mismo valor que unos criterios dados o ext:sort que ordena los eventos que devuelva la expresión.

