All Classes and Interfaces
Class
Description
An agent is a special sub type of
Asset
that is associated with a Protocol
and is responsible for
providing an instance of the associated Protocol
when requested via Agent.getProtocolInstance()
.Special type of
AssetDescriptor
that describes an agent Asset
.Represents the configuration of an
Attribute
linked to an Agent
; each Agent
should have its'
own concrete implementation of this class or use DefaultAgentLink
with fields describing each configuration
item and standard JSR-380 annotations should be used to provide validation logic.This resource is for Agent specific tasks like import and discovery; normal asset/attribute CRUD operations should
still use
AssetResource
.Facade for sending
Alarm
s from rules RHS.Determines if the value is an array and meets the following:
ArrayPredicate.value
- Does array contain this value
ArrayPredicate.index
- If specified will check that the value at this index equals the specified ArrayPredicate.value
ArrayPredicate.lengthEquals
- Is length of array equal to the specified value
ArrayPredicate.lengthGreaterThan
- Is length of array greater than the specified value
ArrayPredicate.lengthLessThan
- Is length of array less than the specified value
There is an implicit 'and' between each specified condition; the negation is applied once all the criteria are
evaluated.The main model class of this software.
The purpose of this is to provide
Attribute.AttributeDeserializer
access
to the asset type so the AttributeDescriptor
can be looked up to control value deserialization; this
isn't used when hydrating from the DB as JPA uses its' own hydration mechanism so we also have a lazy loading
of attribute value mechanism.This `AssetDatapointQuery` retrieves the value of a datapoint
associated with a specific `AttributeRef` at a specified timestamp.
Describes an
Asset
that can be added to this instance; the AssetDescriptor.getName()
must match the Asset.type
with which it is associated.Provides model descriptors that are processed by
ValueUtil
; implementations can be discovered using the
standard ServiceLoader
mechanism or can be manually registered by adding an instance to the ValueUtil.getModelProviders()
.Resource for handling model requests and also providing server side validation of
Asset
sEncapsulate asset query restriction, projection, and ordering of results.
String matching options
Binary operators
Assetinvalid input: '<'?> access rules:
The superuser (the admin in the master realm) may access all assets.
Rules that can only be triggered by asset modifications in a particular
asset subtree, and can only modify asset data in a particular asset subtree.
Facade for writing rules RHS actions, supporting asset queries within the scope
of the rule engine, and dispatching of
AttributeEvent
as rule consequence.This event is used in response to a
ReadAssetsEvent
.Allows
Asset
s to be represented in a hierarchical structureResolves asset type strings using
ValueUtil
A JSR-380 validator that uses
ValueUtil
to ensure that the
Asset.getAttributes()
conforms to the AttributeDescriptor
s for the
given Asset
type.Stores a named value with associated
MetaItem
s.Custom deserializer that can use asset type info from deserialization context when it is passed in from the asset
deserializer
Custom serializer that can serialize valueStr (for attributes that haven't been fully hydrated)
Describes an
Attribute
that can be added to an Asset
; the AbstractNameValueDescriptorHolder.getName()
must match the AbstractNameValueHolder.getName()
, it also indicates what the ValueDescriptor
is for the Attribute
and optionally
provides default MetaItem
s that should be added to new instances of the Attribute
.Represents an
Attribute
value at a point in time.A JSR-380 validator that uses
ValueUtil
to ensure that the
Asset.getAttributes()
conforms to the AttributeDescriptor
s for the
given Asset
type.A link from one attribute to another with a definition of how to map the value from the source attribute
to the linked attribute.
Adds additional predicate logic to
NameValuePredicate
, allowing predicating on Attribute.getMeta()
presence/absence and/or values; there is an implicit OR between meta predicates (and condition can be achieved by
creating multiple AttributePredicate
s in an LogicGroup.Operator.AND
LogicGroup
.A reference to an entity and an
Attribute
.The desired or current or past state of an
AttributeRef
.Predicate for boolean values; will evaluate the value as a boolean and match against this predicates value, any value
that is not a boolean will not match.
Represents an event that occurs at a point in time with a
CalendarEvent.start
, {#link #end} and optional
CalendarEvent.recurrence
and loosely follows the following standard for JSEvent.Can be applied to
Attribute
s of type ValueType.CALENDAR_EVENT
.A client can unsubscribe from
SharedEvent
s on the server, providing the
type of event it doesn't want to receive anymore or the subscription ID to remove
a specific subscriber.Roles available for our client application on Keycloak.
Indicates the status of an agent's protocol instance; but can also be used internally by a protocol if desired.
Encapsulates data about a console instance that is used to generate an
.
Asset
of
type
invalid reference
org.openremote.model.asset.AssetType#CONSOLE
The
Container
is a registry of services, the order of services in a container is important and is determined
by the ContainerService.getPriority()
value; when starting the Container
using the auto service discovery mechanism.Basic cron expression parser (unfortunately the quartz cron expression class
uses all protected methods and class is final).
A top-level object of
DashboardQuery
, that is meant for filtering its output.
A datapoint is used to hold time series data of an entity attribute.
Predicate for date time values; provided values should be valid ISO 8601 datetime strings
(e.g.
A simple key based debounce utility
Does nothing other than hide the generic type parameter which causes problems with inference from class references
Interface for providing a list of entity class names to be registered for JPA, this can be used for registering
custom
Asset
types etc.A timestamped event.
Simple observer/observable implementation, thread-safe.
Filters
SharedEvent
by arbitrary criteria.Handle for receiving events from
EventBus
.A consumer can subscribe to
Event
s on the server, providing the
type of event it wants to receive as well as filter criteria to restrict the
events to an interesting subset.A filter for limiting when
AttributeEvent
s are sent to the central instance.Request the gateway to return a
GatewayCapabilitiesResponseEvent
Resource for managing the connection to a central manager
Published by the server when a
GatewayConnection
status changes.Used to indicate to a connected gateway should disconnect
with the
GatewayDisconnectEvent.reason
indicating why the disconnect has been
requested.Rules that apply to all realms and assets, for the whole system.
An asset for grouping other assets together; The
GroupAsset.CHILD_ASSET_TYPE
Attribute
must be specified and
all children must be of the specified type or a subtype of the specified type.Allows implementors to provide health status data that is relevant to them.
Facade for historic data points in rules
If used on a persistent
Entity
, an identifier value will only be set
when an instance is persisted if there was no identifier already set.This filter works on any type of data; when applying the filter the data should be converted to JSON representation
using a tool like Jackson and then the JSON path expression should be applied to this JSON string.
A declarative rule definition a.k.a.
Represents a mail message; only represents text part with combined headers from the outer message and any mime part
that contained the text content
Implements MapLibre style spec
Implements MapLibre style spec sources property.
A named value whose name must match the name of a
MetaItemDescriptor
and whose value must match the value
type of the MetaItemDescriptor
.Serialise the meta item as just the value to make it less verbose
Describes a
MetaItem
that can be added to an Attribute
; the AbstractNameValueDescriptorHolder.getName()
must match the AbstractNameValueHolder.getName()
, it also indicates what the ValueDescriptor
is for the MetaItem
.This class handles deserialising meta item descriptor names to
MetaItemDescriptor
s; to reuse instancesDeserialise a
MetaMap
that is represented as a JSON object where each key is the name of a
MetaItemDescriptor
To be used on
Asset
classes to include another class in descriptor scans (only used when AssetModelProvider.useAutoScan()
is true), otherwise the descriptors must be explicitly specified in the appropriate
AssetModelProvider
descriptor getter methods.Annotation for telling the Asset model scanner to ignore the annotated type
Special map for
NameHolder
items where item names are used as map keys.Identifies an item that holds a named property, the name should be very simple, as we use them in SQL path
expressions, etc.
This class handles serialising
ValueDescriptor
s as stringsA predicate that can be applied to a
NameValuePredicate
; there is an implicit AND condition between the name and the value; one or both the name and value should be supplied
and the following logic applies:
Both - A AbstractNameValueHolder
whose AbstractNameValueHolder.getName()
matches NameValuePredicate.name
and whose AbstractNameValueHolder.getValue()
matches NameValuePredicate.value
Name only - A AbstractNameValueHolder
whose AbstractNameValueHolder.getName()
matches NameValuePredicate.name
Value only - A AbstractNameValueHolder
whose AbstractNameValueHolder.getValue()
matches NameValuePredicate.value
When the predicate is applied the AbstractNameValueHolder.getValue()
is converted to JSON representation if not already this ensures consistency of results
between in memory predicate evaluation and those applied to the DB.Facade for sending
Notification
s from rules RHS.A number comparator based on:
https://stackoverflow.com/questions/2683202/comparing-the-values-of-two-generic-numbers
Predicate for number values; will match based on configured options.
Registers serializers/deserializers for OpenRemote model types that need special handling
Facade for predicted datapoints in rules
A protocol instance is responsible for connecting devices and services to the context broker.
To be used by protocols that support device import from a protocol specific file.
Interface for protocols to perform limited asset related operations within their own realm
Raised when protocol device asset(s) has been discovered
Initiates a protocol discovery import (either instance or asset discovery depending on
ProtocolDiscoveryImportRequestEvent.isAssetDiscovery()
);
for a given client only one discovery process can be running at a time so any already running discovery process will
be stopped.Raised when a protocol instance has been discovered for the specified agent type
Initiates a protocol discovery process (either instance or asset discovery depending on
ProtocolDiscoveryStartRequestEvent.isAssetDiscovery()
);
for a given client only one discovery process can be running at a time so any already running discovery process will
be stopped.Indicates that discovery has started/stopped for the given
ProtocolDiscoveryStartStopResponseEvent.getAgentDescriptor()
.Request any running discovery be stopped
Represents an action button that can be shown on push alerts (dependent on console support)
Predicate for GEO JSON point values; will return true if the point is within the specified radius of the specified
latitude and longitude unless negated.
A client sends this event to the server to read the specified asset, optionally restricting which attributes
expecting the server to answer "soon" with an
AssetEvent
.A client sends this event to the server to query assets, expecting
the server to answer "soon" with an
AssetsEvent
with the results.A client sends this event to the server to refresh the value of the specified attribute, expecting the server to
answer "soon" with an
AttributeEvent
.This can be used (among other things) to query the REALM table in JPA queries.
Manage realms.
Rules that can only be triggered by asset modifications in a particular
realm, and can only modify asset data in a particular realm.
An event that carries information about the realm it occurred in.
Predicate for GEO JSON point values; will return true if the point is within the specified rectangle specified as
latitude and longitude values of two corners unless negated.
A client sends this event to the server to request
SimulatorState
for the specified Agent
expecting
the server to answer "soon".For events that require a response, the consumers of these messages are responsible for calling the response consumer
Represents a role; depending on the context then different values will be populated.
Controls which
Asset
s the RuleAction
is applied to; if not supplied or
none of the options are supplied then the default behaviour is to use all Asset
s
that caused the rule to trigger.Consists of one of the following triggers in order of precedence:
RuleCondition.cron
- CRON expression (e.g.Controls if/when a rule can be eligible for firing again;
Defines the scope of the recurrence
Published by the server when a rules engine changes its
RulesEngineStatus
.Rules can be defined in three scopes: global, for a realm, for an asset sub-tree.
Published by the server when a ruleset of a rules engine changes its
RulesetStatus
.A task that runs when the application starts.
Provides a list of
Setup
tasks to execute.An event that can be serialized and shared between client and server.
Represents a value at a point in time defined as the number of seconds of the day.
A snapshot of
SimulatorAttributeInfo
s for a given Simulator Agent
.Built in model provider that scans the model classes for asset classes and also includes
MetaItemType
and
ValueType
classes.Predicate for string values; will match based on configured options.
The astronomical position of the sun
A rule fact that has a timestamp, it expires after a certain time.
Generic asset i.e.
A helper class with utility methods for
time related operations.
Annotation for telling the typescript generator to ignore the annotated type
Annotation for telling the typescript generator to ignore type parameters of the annotated class; if no
TsIgnoreTypeParams.paramIndexes()
are specified then all type parameters are ignored.The server returns this message when an
EventSubscription
failed.Generate a globally unique identifier value.
This is only needed so JPA can deserialise an Asset whose type doesn't match an entity otherwise it is un-used
This can be used (among other things) to query the USER_ENTITY table in JPA queries.
An asset can be linked to many users, and a user can have links to many assets.
Manage users in realms and get info of current user.
Facade for writing rules RHS actions, supporting
UserQuery
within the scope
of the rule engine.Represents a constraint to apply to a value; most are based on JSR-380 validation.
The attribute value must match any of the specified values in the
ValueConstraint.AllowedValues.allowedValues
property.The attribute value must be a java time object, java date object, a string in ISO8601 format or a
number representing epoch milliseconds; the value must represent a time in the future.
The attribute value must be a java time object, java date object, a string in ISO8601 format or a
number representing epoch milliseconds; the value must represent a time in the future or present.
The attribute value must be a number lower or equal to the specified value on the
ValueConstraint.Max.max
property.The attribute value must be a number higher or equal to the specified value on the
ValueConstraint.Min.min
property.The attribute value must not be null and must contain at least 1 non-whitespace character.
The attribute value must not be null nor empty.
The attribute value must not be null.
The attribute value must be a java time object, java date object, a string in ISO8601 format or a
number representing epoch milliseconds; the value must represent a time in the past.
The attribute value must be a java time object, java date object, a string in ISO8601 format or a
number representing epoch milliseconds; the value must represent a time in the past or present.
The attribute value must match the regular expression pattern described in the
ValueConstraint.Pattern.regexp
property.The attribute value must be between the specified boundaries based on the
ValueConstraint.Size.min
and
ValueConstraint.Size.max
properties.A simple wrapper around a
Class
that describes a value that can be used by Attribute
s and
MetaItem
s; it can also store ValueConstraint
and ValueFormat
information.Custom deserialiser that will return the same instance of
ValueDescriptor
using the
ValueDescriptor.ValueDescriptorDeserializer.VALUE_DESCRIPTOR_PROVIDER
attribute; otherwise it will construct a new instanceIdentifies an item that holds a
ValueDescriptor
.Interface for a filter that can be applied to a value, the filter can return a different value type to the supplied
value (i.e.
Indicates that the implementing class provides a value of <T> the value should be immutable.
Utilities for working with values/JSON and asset model
A
FunctionalInterface
for populating the ConstraintViolation.getPropertyPath()
for the value being
validated (e.g.TODO Deploy this as a JSON file + some HTML files to create a widget