The latest version of Apama Community Edition has arrived bringing many improvements including new connectivity options, usability improvements for Apama EPL, and integration for statistical computation with R.
Connectivity plug-in enhancements
Apama connectivity plug-ins allow your applications to communicate with the outside world.
- HTTP server transport (new)
- A new connectivity plug-in allowing Apama to handle HTTP requests and deliver events to a
correlator
. Security is provided using TLS and authentication using HTTP basic authentication.
- A new connectivity plug-in allowing Apama to handle HTTP requests and deliver events to a
- MQTT transport
- MQTT transport enhanced to allow use of TLS for providing secure communications
- HTTP client transport
- Configuration option
basePath
allows you to specify a path to prefix to themetadata.http.path
property for all messages sent to a transport - TLS 1.2 is required when connecting to secure
https
URLs
- Configuration option
- Mapper codec
- You can use
forEach
when specifying mapping rules for items provided in a sequence
- You can use
This version of Apama also introduces a set of general miscellaneous EPL enhancements:
- Event definitions can have a field annotated as being the unique message identifier – for working with reliable messaging
- Plug-in chains can be created on demand from EPL rather than having to have them defined and created on startup
- New C++ helper class
(com::softwareag::connectivity::MapExtractor)
provides an easy and type-safe way to extract values from map objects. This complements the equivalent class for Java that was added in Apama 10.0
EPL enhancements
EPL ‘any’ data type
The new ‘any’ data type in EPL allows variables to be defined that can store any other type of EPL data. This allows for simpler and more generic EPL code.
For example, using MemoryStore and updating a row with different datatypes can now be greatly simplified:
Without “any” type:
if a.pressure > row.getFloat("pressure") {
row.setString("sensorId", a.sensorId);
row.setString("type", a.type);
row.setFloat("temperature", a.temperature);
row.setFloat("pressure", a.pressure);
}
With “any” type:
if a.pressure > <float> row.get("pressure") {
row.setAll(a);
}
MemoryStore enhancements
- MemoryStore driver for TCStore (for Terracotta DB) is provided alongside the existing driver for BigMemory
- MemoryStore EPL API works with new ‘any’ data type
- Get a row as a dictionary using a single function
- Access extra fields in a MemoryStore row that are not defined in the Apama schema
- Force a row to be committed back to the table even if the table has been modified after the row was first obtained.
This version of Apama also introduces a set of general connectivity plug-in framework enhancements:
- Use
incrementCounter(string)
to get a monotonically increasing integer for the string passed as the function argument in the scope of thecorrelator
- The method
context.iqSize()
returns the number of elements in the context’s input queue - All string literals are now interned automatically (improving memory usage) and these interned strings are persisted in persistent correlators
R plug-in
A new EPL plug-in provides connectivity between Apama and R allowing you to execute statistical computations from within Apama.
This integration makes use of Rserve which uses TCP for communication with R, connecting via a hostname and port, to an R server running locally or remotely. The connectivity is synchronous and blocks execution, but if you want to create asynchronous connections then a sample project shows you how to do that.
Examples:
Connect to Rserve on localhost and default port:
com.apama.r.RConnection r :=
com.apama.r.RFactory.open("localhost", 6311);
Set variables, get with correct Apama types
r.set("f", 98.765);
float fResult := r.evaluateAsFloat("f");
Generic evaluate
, returns ‘any’ type:
any aResult := r.evaluate("c(TRUE, 1234, 'Hello')");
Load R script (requires APAMA_HOME
in Rserve environment):
r.evaluateVoid("
source(file.path(Sys.getenv('APAMA_HOME'),'samples',
'monitorscript','RPlugin','Rscript.R'))
");
Run function from loaded script
log "apama_func: " +
r.evaluate("apama_func('Hello')").toString() at INFO;
Apama queries enhancements
Message loss can be prevented by using correlator-integrated JMS reliable messaging with your queries application.
Software AG Designer enhancements
When creating new EPL monitors or event definition files, basic templated code is automatically created to help you get started working with the new items:
/** This monitor is responsible for ... */
monitor MyMonitor {
action onload(){
log "Loaded monitor MyMonitor" at INFO;
}
}
Correlator utility enhancements
- Log levels for logging messages can be separately configured for individual categories, such as for specific connectivity plug-ins, using the
correlator
- Separate log files can now be specified by the
correlator
for the correlator and your application - Additional configuration, such as for
engineConnect
, can be specified in acorrelator
YAML configuration file - The
engine_deploy
utility now converts all Software AG Designer launch configuration to equivalent YAML options - The
project-to-cdp
macro can be used to createcorrelator
deployment packages from Ant
10.1 full commercial edition
In addition to the above new features in Apama Community Edition, the full commercial edition of Apama 10.1 also includes improved integration with other Software AG products, enhanced web-based management and monitoring capabilities from Command Central, and additional support for Capital Markets. Please refer to the release notes for the complete set of new features in Apama 10.1.
Find out more
Apama 10.1 Community Edition is available now for you to download. More information about the new capabilities mentioned here and numerous other smaller improvements are described in the release notes and product documentation available with the downloads.
The Software AG Apama team is extremely proud of this new version. Please give Apama 10.1 a try and let us know how you get on!