-
Notifications
You must be signed in to change notification settings - Fork 3
Development Environment Setup
- .NET SDK 8.0 or later
- Git
- A code editor (VS Code or Visual Studio 2022+)
- Docker (optional, for containerized runs)
- OpenTelemetry Collector (optional, for tracing/metrics)
- Access to dependent AAS services (AAS Environment, Registry, Submodel Registry/Repository) or local test instances
- AAS.TwinEngine.DataEngine – main DataEngine API (net8.0)
- AAS.TwinEngine.DataEngine.UnitTests – unit tests for DataEngine
- AAS.TwinEngine.DataEngine.ModuleTests – module/integration tests for DataEngine
- AAS.TwinEngine.Plugin.TestPlugin – example/test plugin API (net8.0)
- AAS.TwinEngine.Plugin.TestPlugin.UnitTests – unit tests for the test plugin
git clone https://github.com/AAS-TwinEngine/AAS.TwinEngine.DataEngine.git
cd AAS.TwinEngine.DataEngine/sourcedotnet restore AAS.TwinEngine.DataEngine.slndotnet build AAS.TwinEngine.DataEngine.slndotnet run --project AAS.TwinEngine.Plugin.TestPlugin/AAS.TwinEngine.Plugin.TestPlugin.csprojThe test plugin:
- Exposes versioned API (header
api-version) - Also exposes Swagger UI and OpenAPI JSON
A template repository is required so DataEngine can retrieve AAS templates.
Option A – Use the provided template repository & registries (recommended)
From the repository root:
cd example
docker compose up -dThis starts the example template repository and the AAS/Submodel registries defined in example/docker-compose.yml.
If you change ports:
- Adjust the port mappings in
example/docker-compose.yml. - Update the same ports in
example/nginx/default.conf.templateand any related environment variables in the compose file.
Option B – Use your own template service
You can also run your own template repository and registries and configure their URLs in the AAS environment section in the DataEngine settings:
- Update the
AasEnvironmentsection insource/AAS.TwinEngine.DataEngine/appsettings.json(andappsettings.Development.jsonif used) to point to your template/AAS services (e.g.AasEnvironmentRepositoryBaseUrl,AasRegistryBaseUrl,SubModelRepositoryPath, etc.).
DataEngine will then use the configured template repository to load templates at runtime.
From the source folder:
dotnet run --project AAS.TwinEngine.DataEngine/AAS.TwinEngine.DataEngine.csprojThe API is configured as an ASP.NET Core Web API with API versioning and OpenAPI/Swagger enabled. By default, it:
- Exposes health check at
/healthz
Swagger UI is available at:
-
/swagger(UI) -
/swagger/1.0/swagger.json(OpenAPI document)
- Edit code in the main project or plugin projects.
-
Run unit tests regularly with
dotnet test. - Use Swagger UI to manually verify API endpoints and contracts.
-
Use health checks (
/healthz) to verify plugin manifest and dependency state. - For plugin development, keep the plugin API running and reference it via
PluginConfigin the DataEngine configuration.
For iterative development, use dotnet watch run on the main project and/or plugin projects for automatic rebuild and restart:
dotnet watch run --project AAS.TwinEngine.DataEngine/AAS.TwinEngine.DataEngine.csprojM&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