# Complex Event Processing

Complex Event Processing (CEP, deutsch Verarbeitung komplexer Ereignisse) ist ein Themenbereich der Informatik, der sich mit der Erkennung, Analyse, Gruppierung und Verarbeitung voneinander abhängiger Ereignisse (englisch events) beschäftigt. CEP ist somit ein Sammelbegriff für Methoden, Techniken und Werkzeuge, um Ereignisse zu verarbeiten, während sie passieren, also kontinuierlich und zeitnah. CEP leitet aus Ereignissen höheres, wertvolles Wissen in Form von sog. komplexen Ereignissen ab, d. h. Situationen, die sich nur als Kombination mehrerer Ereignisse erkennen lassen. Um verschiedenartige Datenströme in Echtzeit zu verarbeiten und die Ereignisse zu extrahieren und zu analysieren, müssen von diesbezüglichen Systemen hohe Lasten verkraftet werden. Einsatzgebiete sind beispielsweise Netzwerküberwachung, öffentliche Sicherheit, Katastrophenschutz oder Energiemanagement.

## Überblick

In ereignisgesteuerten Computerapplikationen wird der Ablauf des Programms durch eine streng sequentielle Folge von Events gesteuert. Das heißt, einzelne Ereignisse wie z. B. ein Maus-Klick, der Eingang einer E-Mail oder das Ende eines Ladevorgangs lösen weitere abhängige Ereignisse aus, wie z. B. das Speichern einer Datei auf der Festplatte, das Aufleuchten einer Hinweismeldung oder das Öffnen eines Programmfensters.
Das CEP befasst sich mit Ereignissen, die mehrfach redundant, mehrläufig nebeneinander und vielfältig unzuverlässig verkettet auftreten. Zudem ist die Logik des Auftretens nicht scharf, sondern unscharf (Fuzzylogik) definiert. Die CEP liefert bereinigte Ereignisse als Status, welche die unerwünschten oder überflüssigen Quellereignisse eliminieren.

### Events

Complex Event Processing verwendet den Begriff Event in den folgenden Bedeutungen:
* Alles was passiert oder als passiert angesehen wird
* Ein Objekt, das ein Ereignis repräsentiert, kodiert oder speichert; für gewöhnlich zum Zwecke der maschinenbasierten Verarbeitung
* Ein Event ist ein Ereignis innerhalb eines bestimmten Systems oder einer Domäne. Es ist etwas, das bereits passiert ist oder als etwas Geschehenes innerhalb dieser Anwendungsdomäne betrachtet wird. Der Ausdruck Event wird auch dazu verwendet, um eine Programmierentität zu beschreiben, die ein derartiges Ereignis in einem IT-System repräsentiert
Bei CEP geht es im Speziellen um die Behandlung von Ereignissen, die erst durch das Zusammenwirken mehrerer Ereignisse auftreten. Diese weisen beispielsweise fakultativ folgende Merkmale auf:
* die Ereignisse können voneinander abhängig sein und treten auf physikalischen Gründen fallweise mehrfach auf: Ein Komplexereignis zeigt keine Wiederholungen, sondern lediglich signifikante Änderungen eines Status. Das erfordert ein Filtern der Ereignisse
* die Ereignisse treten nacheinander ablösend oder auch nebeneinander gleichzeitig ein.
* die Ereignisse sind hierarchisch voneinander abhängig und treten wiederholt in derselben Verkettung auf.
* die Ereignisse sind sämtlich unabhängig: Ein Komplexereignis ist ein Kompositum von mehreren Ereignissen und definiert einen Status.
* die Ereignisse können zusammenhängen: Ein Komplexereignis liegt vor, wenn eine bestimmte Relation, beispielsweise eine Fuzzy-Relation in einem Zeitintervall erfüllt ist.
* die Ereignisse treten teils in nebenläufigen Prozessen auf: Ein Komplexereignis liegt vor, wenn eine bestimmte Mehrheit von Ereignissen eingetreten ist.

### Geschichte des Begriffs

Ursprünglich wurde der Begriff von David Luckham erstmals in seinem Buch The Power of Events bekannt gemacht. Er leitete den Begriff von Event Processing ab, einer Menge von Technologien und Konzepten, die das erste Mal um 1950 Verwendung fanden. Über die Zeit hinweg sind Konzepte der Netzwerktechnik, von Active Databases, Middleware, service-orientierter Architektur und anderen Gebieten eingeflossen, die auch mit Ereignisverarbeitung zu tun haben.
Heute ist sich die Community uneins über den Begriff Complex, da häufig versucht wird, statt Komplexität zu verbergen, diese willkürlich zu ignorieren. Aus diesem Grund wird heute auch häufig wieder Event Processing synonym zu Complex Event Processing verwendet. Die begriffliche Vereinfachung steht im Widerspruch zu der Klassifikation ereignisgesteuerter Verarbeitung, die aus dem Bereich Event Driven Architecture (EDA) bekannt ist.
Neben den Begriffen Complex Event Processing und Event Processing wird aus Marketinggründen auch der Ausdruck Business Event Processing verwendet.

## Konzepte

In Complex Event Processing sind bisher high-level Konzepte beschrieben, die das Thema der Eventverarbeitung und der Erkennung von Ereignismustern bearbeiten. Einige dieser Begriffe sind stark überladen, da sie auch in anderen Gebieten der Informationstechnologie, der Mathematik sowie in Teilbereichen auch in der Betriebswirtschaft verwendet werden. Auch wenn diese Begriffsüberladung bisher für einige Diskussion innerhalb der Complex Event Processing / Event Processing Community gesorgt hat, so sind die Begriffe kompatibel mit der existierenden Literatur. Ihre Bedeutungen können vom verwendeten Kontext abgeleitet werden.
Complex Event Processing geht noch einen Schritt weiter und definiert ein virtuelles Event als ein "Ereignis, das nicht tatsächlich in der physikalischen Welt auftritt, sondern erscheint, um ein Ereignis in der wirklichen Welt anzudeuten; Ein Ereignis, das man sich vorstellt, modelliert oder simuliert." Ein virtuelles Event wird wie jedes andere Ereignis in CEP behandelt.
Offensichtlich kann fast alles, was in der realen Welt oder innerhalb eines Rechners existiert, als Ereignis für die Nutzung durch CEP angesehen werden. Die Definition ist absichtlich so breit gehalten, da CEP beabsichtigt, Beziehungen sowohl zwischen den unterschiedlichen Ereignisebenen als auch unter den Design Patterns zur Erstellung dieser Ereignisse herzustellen, so dass ihre Semantik, ihr Speichermedium und ihr Übertragungsmechanismus nicht beeinträchtigt werden. In Teilbereichen ist diese Definition kompatibel (wenn auch breiter) zur Ereignisdefinition der Wahrscheinlichkeitstheorie.

### Abstraktionsebenen und Abhängigkeiten

Grundlegendes Konzept von CEP ist eine Strukturierung der Ereignisse in Abstraktionsebenen. Auf einer Abstraktionsebene hängen einzelne Events voneinander ab und nehmen aufeinander Einfluss (horizontale Abhängigkeit). Wenn man verschiedene dieser Events zu einer Gruppe zusammenfasst und daraus ein übergeordnetes Ereignis bildet, spricht man von diesem als einer Aggregation oder eben einem komplexen Event. Dieses komplexe Event befindet sich in einer vertikalen Abhängigkeit von den einzelnen Ereignissen, aus denen es besteht und die sich eine Abstraktionsebene tiefer befinden.
Neben der vertikalen Abstraktion gibt es auch noch die horizontale Abstraktion. Hier werden Ereignisse verschiedener Ebenen, z. B. Netzwerk Monitoring Ereignisse, Datenbankereignisse und Geschäftsprozessvorfälle so miteinander verknüpft, dass sich daraus ein höherwertiges, komplexes Ereignis ableiten lässt. Derzeit gibt es noch wenig Implementierungserfahrung mit der Bildung von horizontalen Abhängigkeiten, da es eine nicht triviale Aufgabe ist, die Kausalität der Vorkommnisse zwischen den einzelnen Ebenen darzustellen.

## Akademische und unternehmerische Aktivitäten

Das Thema Complex Event Processing ist Gegenstand sowohl in der akademischen Forschung als auch der Produktentwicklung der Softwarehäuser.
Seit etwa der Jahrtausendwende ist es Bestandteil verschiedener Forschungsprojekte an den Universitäten. Die folgende Liste gibt einen Einblick.

### Akademische Forschungsprojekte

* iPRODICT (Deutsches Forschungszentrum für Künstliche Intelligenz, Universität des Saarlandes): iPRODICT erforscht in einem interdisziplinären Team aus Forschern und Industrieexperten einen intelligenten Ansatz zur teil-automatisierten Anpassung und Verbesserung von Geschäftsprozessen. Neben der Analyse gesammelter Prozessdaten als auch der Echtzeitauswertung aktueller Kontextinformationen aus Sensornetzwerken wird insbesondere auf innovative Weise der optimale Prozessablauf mittels Prognoseberechnungen antizipiert (iPRODICT). So gelingt es, Prozesse mittels Big-Data-Analyseverfahren in Echtzeit individuell auf die jeweilige Kontextsituation anzupassen. Der entwickelte iPRODICT-Ansatz wird in Form eines integrierten Prototypen innerhalb eines ambitionierten Anwendungsszenarios aus der Prozessfertigung beim Anwendungspartner Saarstahl AG implementiert, getestet und validiert. Dies soll einerseits die Machbarkeit des Ansatzes unterstreichen und andererseits die Nutzenpotentiale, wie die frühzeitige Antizipation von Prozessproblemen basierend auf der Analyse großer Datenmengen, messbar machen.
* STREAM (Stanford University): Motivation des STREAM Projekts ist die Notwendigkeit lang laufender, kontinuierlicher Abfragen auf Datenströmen, die beispielsweise aus dem Netzwerk Monitoring, dem Telco Datenmanagement, der Produktion und aus Sensornetzwerken stammen, anstelle von einmaligen Abfragen auf gespeicherten Datensätzen.
* Rapide (Stanford University): Um Events und ihre horizontalen und vertikalen Abhängigkeiten formal beschreiben zu können, wurde an der Universität von Stanford eine Event Processing Language (EPL) mit dem Namen Rapide entwickelt. Sie ist dafür gedacht, dass man sie als Erweiterung in moderne objektorientierte Sprachen wie Java oder C# integrieren kann.
* Telegraph (UC Berkeley): Telegraph ist ein adaptives Datenflusssystem, das es erlaubt auf Daten aus unterschiedlichen Quellen zuzugreifen, zu kombinieren, analysieren. Als Datenflusssystem kann Telegraph sowohl gespeicherte Daten als auch Datenströme aus Sensornetzwerken verarbeiten.
* Aurora (Brandeis University, Brown University und MIT): Aurora adressiert drei breite Anwendungstypen in einem einzigen Framework. Diese sind kontinuierliches Echtzeit Monitoring von Anwendungen, zugleich die Verarbeitung von persistent gehaltenen, archivierten Daten in großen Mengen, sowie die Kombination der Echtzeitdaten mit den historischen auf eine effiziente Art und Weise.
* Borealis (Brandeis University, Brown University und MIT): Borealis ist eine verteilte Datenstrom Engine, die auf den Erfahrungen aus den Projekten Aurora und Medusa aufbaut. Die Software ist für Linux x86 basierte Rechner designed.
* SASE (UC Berkeley/UMass Amherst): Eine wachsende Anzahl von Anwendungen benötigt ein hohes Volumen von Echtzeitdaten beispielsweise in den Bereichen von Financial Services, Netzwerk Monitoring und Sensornetzwerken. Diese Anforderungen werden im SASE Projekt mittels einer deklarativen Ereignissprache mit einer formalen Semantik, den theoretischen Grundlagen von CEP auf einem effizienten, automatenbasierten Implementierung umgesetzt.
* Cayuga (Cornell University): Publish/Subscribe ist ein beliebtes Paradigma, um das Interesse eines Nutzers („Subscribtion“) an Ereignissen („Publications“) auszudrücken. Cayuga beschäftigt sich mit dem Thema zustandsbehafteter Subscriptions und es Nutzern zu ermöglichen, den Kontext über mehrere Ereignisse zu halten.
* Odysseus (Universität Oldenburg): Odysseus ist ein Framework für Event- und Datenstromverarbeitung dessen Architektur auf flexible, erweiterbare und anpassbare Komponenten basiert. Dies erlaubt es, die heterogenen Ansätze der verschiedenen Systeme in einem System zu integrieren, um dadurch die Vorteile zu verbinden oder schnell durch neue Konzepte zu ergänzen. Die Verarbeitung erlaubt dabei verschiedene Datenmodelle, die durch beliebige Anfragesprachen definiert werden kann und dabei zusätzliche Konzepte wie Optimierungen, Lastmanagement, Scheduling, Verteilung oder Robustheit adressiert.
* PIPES (Universität Marburg): PIPES beschäftigt sich mit den Forschungsproblemen von adaptivem Speichermanagement für das Scheduling und die Query Optimierung in einer generischen Laufzeitumgebung, der Wartbarkeit von Datenströmen sowie dem Indexing von historischen Abfragen, der Maintenance von nicht parametrisierten Schätzvariablen über Datenströmen, statischen und dynamischen Multy-Query Optimierungen und Sortierten, mehrfachen Join Operationen über Datenströmen.
* CEPiL (University of Stuttgart, GeorgiaTech) . Zentrale Zielstellung des Projektes "CEP in the Large" (CEPiL) ist es, eine hochskalierbare komplexe Ereignisverarbeitung unter hoher Dynamik der an der Ereignisverarbeitung beteiligten Komponenten sowie Produzenten und Konsumenten von Informationen zu verwirklichen. Insbesondere soll das im Rahmen des Projektes entwickelte System zusätzlichen Anforderungen heutiger Anwendungen bzgl. Robustheit und Datensicherheit genügen.
* SpoVNet (Karlsruhe Institute of Technology, University of Stuttgart, University of Mannheim, University of Tübingen) . Ziel der SpoVnet-Architektur ist es, dezentral organisierte Anwendungen spontan auf heterogene Netze mit geforderter Dienstgüte abzubilden. Insbesondere wurden in diesem Projekt adaptive Verfahren für Ereignis-basierte Kommunikation entwickelt, die Overlay-Topologien von Ereignisbroker an sich dynamisch ändernde Netzstrukturen anpassen.
* BeepBeep (Université du Québec à Chicoutimi): BeepBeep 3 ist eine Ereignisstrom-Engine: Sie empfängt einen von einer Anwendung oder einem Prozess erzeugten Ereignisstrom und erzeugt in Echtzeit einen neuen Ereignisstrom. Intern analysiert und transformiert BeepBeep den Ereignisstrom durch Durchlaufen einer Kette grundlegender Ereignisprozessoren, wobei der Ausgang eines (oder mehrerer) Prozessoren zum Eingang des nächsten geleitet wird.
Neben den genannten Projekten setzt sich die Forschung weiterhin thematisch mit Complex Event Processing oder Event Processing auseinander. Ein Überblick über aktuelle Veröffentlichungen aus dem Forschungsumfeld lässt sich unter anderem auf der von Arnd Schröter gepflegten Link Collection event-based.org gewinnen.