Apama is a Complex Event Processing and Event Stream Processing engine, developed by Software AG. Apama serves as a platform for performing streaming analytics over a range of high volume/low latency inputs and applications, such as IoT devices, financial exchanges, fraud detection, social media and similar. Users can define data patterns to listen for and actions to take when these patterns are found, which are defined in the provided Domain Specific Language called the Event Processing Language. The core Apama engine is written in C++; the process can also optionally contain a JVM for interacting with user created Java code. Apama focuses on high throughput, low latency and memory efficient performance; used in both Intel benchmarks and smaller machines such as the Raspberry Pi, routers and other Edge/IoT devices. It is particularly noteworthy within the CEP space as being one of the earliest projects, a long term market leader, and innovator of many patents.
Events - Simple data structures containing fields and actions
Monitors - Similar to classes in other languages, monitors contain listeners and actions and are loaded upon injection
Listeners - Declarative patterns defining interesting conditions/combinations of events. Aggregation, temporal and filtering operators are supported
Actions - Imperative functions, usually run by listeners upon activation or monitors upon load
Contexts - Similar to threads, monitors exist inside contexts
Channels - Mechanism for communicating between contexts and external systems
Streams - Ordered partitions of events with support for aggregation and SQL-like queries
The EPL C++/Java-like syntax is designed to create CEP applications succinctly in conjunction with the above features, an example of which can be found below: event MyEvent monitor MyMonitor
Apama Queries
Apama Queries is an alternate language for creating rules over defined data sets, such as the past five minutes of received data or past twenty events received, in an automatically multi-threaded environment that scales across machines. Apama Queries are better suited for monitoring very large sets, such as bank transactions. Typically, each entity will be partitioned and processed independently of the rest of the set. Queries and Monitors can communicate via channels. An example of the previous scenario can be found below: query FindSuspiciousWithdrawals
Designer
The Software AG Designer is an Eclipse based IDE with special support for developing and deploying Apama applications, which is included in a standard installation. Features include code assistance, package management, profiling, GUI development and deployment management.
Plugins
Apama supports the ability for users to create plugins to extend capability. These plugins come in two forms, EPL plugins and Connectivity plugins. C++ and Java APIs are available for both plugin types. Connectivity plugins come in two forms, codecs and transports. Connections to external systems are made by composing chains of codecs and one transport to achieve the desired topology; these connections are defined by a YAML configuration file at start-up or through dynamic management with the provided tools. Several pre-built plugins for popular technologies as well as connectivity to other Software AG products are shipped with Apama installations.
Persistence
The Apama process is entirely in memory and supports an optional SQLite based in-built persistence system. Additionally, the connectivity API supports reliable messaging to systems that support it, such as JMS. Finally, a pre-built distributed memory store plugin is provided with standard installations for use with appropriate back-ends.
Visualization
Apama provides an in-built dashboarding technology developed from within the Software AG Designer, as well as native connections to Software AG's MashZone NextGen.