WSO2 Complex Event Processor (WSO2 CEP) helps identify the most meaningful events and patterns from multiple data sources, analyze their impacts, and act on them in real time. 100% open source, it allows you a set up a more agile connected business, responding to urgent business situations with both speed and precision.
12. 12
Experian delivers a digital marketing platform, where CEP plays a key role to analyze in real-time
customers behavior and offer targeted promotions. CEP was chosen after careful analysis, primarily for
its openness, its open source nature, the fact support is driven by engineers and the availability of a
complete middleware, integrated with CEP, for additional use cases.
Eurecat is the Catalunya innovation center (in Spain) - Using CEP to analyze data from iBeacons
deployed within department stores to offer instant rebates to user or send them help if it detected that
they seem “stuck” in the shop area. They chose WSO2 due to real time processing, the variety of IoT
connectors available as well as the extensible framework and the rich configuration language. They
also use WSO2 ESB in conjunction with WSO2 CEP.
Pacific Controls is an innovative company delivering an IoT platform of platforms: Galaxy 2021. The
platform allows to manage all kinds of devices within a building and take automated decisions such as
moving an elevator or starting the air conditioning based on certain conditions. Within Galaxy2021,
CEP is used for monitoring alarms and specific conditions.Pacific Controls also uses other products
from the WSO2 platform, such as WSO2 ESB and Identity Server.
A leading Airlines uses CEP to enhance customer experience by calculating the average time to reach
their boarding gate (going through security, walking, etc.). They also want to track the time it takes to
clean a plane, in order to better streamline the boarding process and notify both the air line and
customers about potential delays. They evaluated WSO2 CEP first as they were already using our
platform and decided to use it as it addressed all their requirements.
27. 27
Category Operators
Event Sequencing
e handle out of order events by using a variant of the K-Slack algorithm, which is a
well-known solution to handling disorder in event streams, by buffering data until order
can be guaranteed.
Compensation for missed events is not supported in the current version, but is on the
roadmap. Additionally, we can use filtering to reduce noisy events in a stream (based
on Kalman filter)
Enrichment
Enrichment is done via two ways: event tables to access historical data from any
JDBC data source, and custom extensions to connect to custom source of data, such
as files.
Business Logic
Scripting can be used to add any business logic to any execution plan. JavaScript,
Scala and R are supported out of the box. Additional, customers can easily invoke
custom logic through their own operators.
Transformation
The filter operator can be used to filter streams on a certain set of conditions, which
can be combined via and/or - Conditions can be expressed using mathematical
operators, regular expressions, string manipulation and logical operators. Additional ,
queries allow to select information from input stream, project them to output stream or
new stream, and replace certain elements
28. 28
Category Operators
Time Windows
Siddhi provides very strong support for time windows, a domain where an SQL-like query language bring
much simplicity compared to a programing language. Several types of windows are supported, including
sliding and tumbling (batch) windows, time windows starting from a point in time, or CRON-based time
windows. Additionally, we support applying streaming processing to events based on the number of events (
length window), the unicity of events or the frequency of events.
Aggregation/Correlation
Using Join and Pattern operators, we can aggregate and correlate two or more streams of data. Join allows
to join events based on condition, while pattern allows to correlate multiple events based on time, logical
relationship or event counting.
Pattern Matching
We detect patterns based on temporal order (based on arrival order), logical relationship (based or the
logical relationship of 2 events, or counting (to limit the number of events matching the pattern). The pattern
may or may not allow events in between the events the condition. If no foreign event is allowed, the
sequence operator must be used.
Custom
Developers can create their own function, operators , time windows and processing operators. The
extensions are written in Java. Once implemented the operators can be used as any other out of the box
operator or function.
Libraries to support custom operators
Developers use the current operators as reference to develop their own, this is one of the key advantages
with open source distribution. We deliver dozens of extensions on GitHub which can be adapted by 3rd
parties. At the implementation level, implementing an extension just involves extending a well-defined
interface.
Other operators
We support more than 100 custom operators on top of the list above, including geographical operators, for
location-based applications, time series, math, natural language processing, integration with machine
learning models created in PMML or our own Machine Learning product.
56. Using Enron Email Data Set
56
Protocol Throughput (events/sec)
Thrift 82137
Binary 245000
Protocol Throughput (events/sec)
Standalone 6555
distributed 1 node 3699
distributed: 2 nodes 6627
distributed: 3 nodes 9500
distributed: 4 nodes 11050
Simple Use Case
•Data Set:
• 517,417 emails
• mean body size of 1.8
KB
• largest size 1.92MB
57.
58. 58
Guaranteed SLAs
Pattern 1
(Hot/warm)
Pattern 2
(Persistence)
Pattern 3
(Distributed)
Continuity in the availability of the system
even in case of failure
Guarantee that no event is lost.
Stateful queries (for example involving a
time window or a sequence), state is not
lost despite failures.
Not supported in current version (on
roadmap)
Event is treated only once Not fully supported Not supported by Storm