-
Notifications
You must be signed in to change notification settings - Fork 8
Architecture
Kevalkumar edited this page Jan 23, 2026
·
1 revision
This document explains the core concepts of DataEngine, how it interacts with template services and the Plugin, and how the four AAS-aligned APIs (AAS Registry, AAS Repository, Submodel Registry, Submodel Repository) work together.
DataEngine is a .NET-based API that dynamically generates complete Asset Administration Shell (AAS) submodels.
It does this by:
- Fetching submodel templates (without values) from a template AAS environment.
- Requesting values for semantic IDs from a separate Plugin API using a JSON Schema–based contract.
- Filling those values into the template and returning a fully populated, IDTA-compliant submodel to the caller.
DataEngine’s HTTP endpoints are designed to follow the IDTA / AAS specification structure:
- When a user asks for a shell descriptor, shell, submodel descriptor or submodel / submodel element, the URL structure and payloads are aligned with the AAS standard.
- AAS Viewer / UI: Visualizes AAS, shells, submodels and submodel elements for users.
- API Gateway: Single entry point (e.g. Nginx) that forwards HTTP calls to DataEngine.
- DataEngine: Core service that exposes AAS-aligned endpoints and orchestrates templates + plugin data.
- Plugin: Separate API that holds / accesses the actual values (in Plugin DB) and responds to DataEngine with data according to JSON Schema.
- Plugin DB: Database storing the real submodel/submodel-element values.
- Template Registry / Template Repo: Provide template shells/submodels and registry information that DataEngine uses as the structural basis.
-
Client request
- User (via UI or API client) calls a Submodel Repository endpoint on DataEngine, e.g.
GET /submodels/{submodelId}.
- User (via UI or API client) calls a Submodel Repository endpoint on DataEngine, e.g.
-
Template retrieval
- DataEngine resolves which template AAS / submodel must be used.
- It calls the template AAS environment / template submodel repository to fetch the template submodel.
- This template contains semantic IDs but no values.
-
JSON Schema request to Plugin
- DataEngine builds a JSON Schema representing the semantic IDs and expected structure.
- It sends a request to the Plugin API containing:
- Which submodel / submodel elements it needs.
- The semantic IDs and structure as JSON Schema.
-
Plugin logic + DB
- Plugin checks its Plugin DB for values corresponding to those semantic IDs.
- If values exist, Plugin returns them in a JSON structure that matches the agreed schema.
-
Template filling
- DataEngine validates the Plugin response against the JSON Schema.
- It fills the values into the previously fetched template submodel.
-
Response to client
- DataEngine returns a fully populated AAS submodel that is ready to be consumed by UIs or other APIs.
- Plugin is a separate API maintained for data.
- It:
- Exposes an HTTP API that follows the JSON Schema contract provided by DataEngine.
- Describes its database structures as JSON Schema (for submodels and submodel elements).
- Stores the actual values in Plugin DB.
- TwinEngine team provides the schema and contracts for the Plugin, not the data itself.
M&M Software
- Architecture
- Submodel Repository
- Submodel Registry
- Aas Registry
- Aas Repository
- Plugin
- Multi-Plugin
- Supported SubmodelElement
-
Bug Reports: Template Bug Item
-
Feature Requests : Feature Request