8.2 Features of RAPIDE
The Rapide event pattern language is a declarative computer language for writing patterns of events. The patterns can specify sets of events together with their parameters, timestamps, and causal dependencies, and which events are causally independent of each other.
Declarative means that Rapide-EPL consists of mathematical expressions that "declare" (or describe) patterns. It does not include any algorithmic programming features like assignment or conditional branches. It is as simple a language as can meet the basic requirements for CEP.
Here is a summary of its main features.
Strong typing to avoid common errors in writing patterns.
Basic data types for specifying the data parameters of events and contexts.
Event types for expressing the types of events in a pattern.
Basic event patterns that allow us to express patterns that match single eventsfor example, any order from any customer.
Pattern operators for expressing relationships between events. Pattern operators are used to specify complex patterns of many events in precise relationships.
Context that lets us restrict matches of patterns to specific contexts in which events are observed.
Temporal operators that allow us to specify the timing of events that match a pattern, or when a pattern should or should not match.
Pattern macros that let us express complex patterns succinctly and build libraries of patterns.
-
Mathematical semantics. Rapide-EPL has a simple one-page definition of matching that provides a specification for any pattern matcher.
The syntax is easy to understand and is similar to the syntax of object-oriented languages such as Java or C#, with a few small variations. In fact, Rapide-EPL can be viewed as an "add-on" or extension of expressions in these languages.
In the following sections, we describe Rapide-EPL and the semantics of pattern matching. We want to tell you, the reader, as simply as possible how to write event patterns in Rapide-EPL. This is done with informal, intuitive descriptions of matching. We don't give a mathematical definition of matching here. There are precise formal definitions of matching in other documents about Rapide.