Entities overview
An entity is an interoperable data structure that powers the Lattice common operational picture (COP).
An entity consists of components. The presence or absence of components, rather than a strict type hierarchy, determines what an entity is and how it should be interacted with. Think of an entity as a bag of components that you can mix and match as needed. Entities might be incomplete at various points in time, reflecting the real-time state of the COP. Partial states are valuable for situational awareness, so your code must handle missing components robustly.
Composition principles
- Components must not be duplicative — Avoid modeling the same underlying data on two different components.
- Components are non-hierarchical — The data model is composable and not an inheritance tree.
Entity model
An entity requires the following components:
Unique string identifier. Can be a Globally Unique Identifier (GUID).
A boolean that when set to true
, creates, or updates the entity.
If set to false
, while the entity is still live, it triggers a
DELETE
event.
The future time, less than 30 days, at which the entity expires. When the expiry_time
has passed, Lattice deletes the entity.
The name of the integration that created this entity.
Human-readable string that represents the name of an entity.
For more information, see Entities in the Lattice API Reference.
Entity templates
Although there is no strict type hierarchy, a user interface could group entities according to its ontology component. Lattice supports the following three top-level entity shapes:
Asset
An asset is an entity under your control, or under the control of another operator or system. Assets may accept tasks such as search or tracking. To create an asset, add the following components in addition to the required components:
Add the ontology component and set template
to TEMPLATE_ASSET
to render an asset in Lattice.
Add the location component and set the asset’s position using its latitude and longitude details.
Add the milView component and set the disposition, environment, and nationality of the asset.
Example entity models:
Submarine
Radar
UAV
Track
A track represents any entity tracked by an asset or integration connected to Lattice. Tracks are not directly under the control of friendly forces. This includes aircraft tracks from radar or sensors, signal detections, vehicles, people, or animals detected through cameras.
Lattice supports the following track types:
Track
Sensor point-of-interest (SPI)
Signal of interest (SOI)
Add the ontology component and set template
to TEMPLATE_TRACK
to render a generic track.
Add the location
component
to set the latitude and longitude of the track.
Add the milView
component
to set the disposition, environment, and nationality of the track.
Example entity models:
Airplane
Bird
Geo-entity
A geo-entity is a shape, region, or point of interest drawn on the map. Use geo-entities to represent any geographical areas of interest, such as airfields or a control zones, for autonomous vehicles to operate in.
Add the ontology component and set template
to TEMPLATE_GEO
to render a geo-entity shape.
Add the geo_details
component.
Add the geo_shape
component.
Example entity models
Point
Polygon
Ellipse
Line
Entity lifecycle
Entities have a well-defined lifecycle of create, update, and delete. On each lifecycle update, Entity Manager emits the state change event back to Lattice:
Create
When an app or integration publishes an entity, Lattice emits a
state change event, setting the entity state to CREATE
.
What’s next?
- Learn more about the Entities API in REST and gRPC.
- Learn how to publish entities to Lattice.
- Check out the Lattice sample apps.