Message Interface

Datalake is an accelerator specific to power utilities. When enabled, it can be accessed via the menu button ( ) in the top-left corner of the Utilihive Console.

Utilihive Datalake uses CloudEvents as a common message format and as an envelope for data payloads. Formally, we operate with the concept of a CloudEvents message as a "data mutation event".

Messages may be of any type and may or may not encode payload data. By default, all messages are accepted and its context attributes are inserted into the messageHistory table, serving as an index over all recevied data. Messages may also be stored on object store to enable reingestion and event sourcing for reconstructing state.

Payload Types

For messages of a certain type, the payload is also inserted into domain-specific tables through payload handlers. Payload handlers can be registered dynamically (using reflection) or through configuration and implements a functional interface to normalize and insert payload data.

Standard payload types use a simple name for the CloudEvents type field, such as DataPointSeries.

Non-standard payload types that implement their own payload handler resolved through reflection must use the fully qualified class name for type, for example com.greenbird.metercloud.industry.energy.meterreadings.dto.MeterReadings.

CloudEvents Extensions

All extension properties are deserialized into a hashmap and stored in DB.

Dataref Extension

The current Message implementation includes the dataref standard extension as means of passing data by reference. The data payload is resolved from dataref by the common service layer upon receiving the message, currently limited to fetching objects from object store.