Key Features
Joule provides a number of features that enables developers to define, validate and pilot use cases.
Joule has been developed to leverage mature and emerging technologies through the application of clean interfaces via the Joule SDK.

Joule's core design principle is to provide a low code use case platform that enables high development iteration to drive business impact. Joule is packaged with an use case language, DSL, and a suite of reusable assets that enable developers to start building after installation.
Key language constructs:
- Event subscriptions
- Processing pipeline
- Metrics definition
- Extendability through custom components
- Product integrations
Event processing is applied through the definition of chained processors. Events are processed in order using micro batch methodology to increase processing throughput to maximise the underlying hardware capabilities.
Standard processing functions are included within the platform:
- Filtering
- Enrichment
- Transformation
- Analytics
- Encryption
- Obfuscation
- Multi language support
Joule provides three flexible methods to build analytical insights. Each method is describe below.
Streaming analytics can be performed using event windows whereby events have been presented to the platform in-order. This method is applied to gain an aggregated insight over a set of grouped events to trigger further processing. Joule supports time based or number events windows.
Supported window functions
- Tumbling windows
- Sliding windows
A suite of standard window functions are provided out-of-the-box. Developers can create custom analytic functions to extend platform capability.
Machine learning models can be used to provide predictive analytics using event streams. The platform current supports PMML and the ability to trigger model refresh cycles.
Joule provides a global metrics engine to drive complex use case development. Developers define metrics using standard ANSI SQL and execution frequency within the Joule DSL. These metrics can be used within any process.
Every processing component provides a standard set of metrics to inform the user the number events received, processed, discarded, failed etc,. Additionally, when the SQL engine is enabled raw and processed events are stored, queryable and exportable.
Out of the box Joule provides a standard set of data integrations to enable to start consuming and publishing data.
Joule has been designed to be platform agnostic. Whether you need to deploy locally, on-premise or on cloud Joule is packaged as a Docker container to ease deployment configurations or as a standalone binary
A developer Java SDK is provided to extend platform capabilities for processors and data transports