Skip to content

Commit 8d85555

Browse files
authored
Add TE from ADO (#4)
1 parent 2a59855 commit 8d85555

268 files changed

Lines changed: 28350 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# See http://help.github.com/ignore-files/ for more about ignoring files.
2+
3+
4+
# Ignore files
5+
*.sln.DotSettings.user
6+
*.csproj.user
7+
*.tgz
8+
.tmp
9+
.env
10+
*.tmp
11+
*.tmp.*
12+
*.sublime-project
13+
*.sublime-workspace
14+
*.log
15+
log.txt
16+
npm-debug.log*
17+
.DS_Store
18+
Thumbs.db
19+
UserInterfaceState.xcuserstate
20+
licenses.json
21+
*.user
22+
*.aasx
23+
24+
# Ignore folders
25+
.vs/
26+
.vscode/
27+
.idea/
28+
.ionic/
29+
.sass-cache/
30+
.sourcemaps/
31+
.versions/
32+
.nyc_output/
33+
bin/
34+
obj/
35+
build/
36+
dist/
37+
Logfiles/
38+
TempUpdatePackage/
39+
node_modules/
40+
coverage/
41+
platforms/
42+
www/
43+
TestResults/
44+
$RECYCLE.BIN/
45+
.sonarqube/

README.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# DataEngine
2+
3+
**DataEngine** is a .NET-based service that dynamically generates complete **Asset Administration Shell (AAS)** submodels by combining standardized templates with real-time data.
4+
It integrates with **Eclipse BaSyx** and follows **IDTA specifications** to ensure interoperability.
5+
When a submodel is requested, DataEngine retrieves its template, queries the **Plugin** for semantic ID values, and populates the structure automatically.
6+
It supports nested and hierarchical data models, providing ready-to-use submodels for visualization or API consumption.
7+
In short, DataEngine acts as the **core orchestration layer** that transforms static AAS templates into live digital representations.
8+
9+
# QuickStart
10+
11+
### 1. Clone the repositories:
12+
13+
```bash
14+
# Clone DataEngine project
15+
git clone <DataEngine_Repo_URL>
16+
# Clone Plugin project
17+
git clone <ReferencePlugin_Repo_URL>
18+
```
19+
20+
**📂 Folder Structure should look like**
21+
```
22+
root-folder/ # your chosen root folder
23+
24+
├── AasTwin.DataEngine/ # This folder will automatically created when you clone the DataEngine repository
25+
└── AasTwin.Plugin/ # This folder will automatically created when you clone the Plugin repository
26+
```
27+
28+
### 2. Start the Application
29+
In the AasTwin.DataEngine directory run the following command and open http://localhost:8080/aas-ui/
30+
```bash
31+
cd AasTwin.DataEngine
32+
docker-compose up -d
33+
```
34+
35+
If you want to further configure your DataEngine instance, go to our [example directory](../AasTwin.DataEngine/example/README.md).
36+
37+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
meta {
2+
name: Get All ShellDescriptors
3+
type: http
4+
seq: 1
5+
}
6+
7+
get {
8+
url: {{DataEngineBaseUrl}}/shell-descriptors?limit&cursor
9+
body: none
10+
auth: inherit
11+
}
12+
13+
params:query {
14+
limit:
15+
cursor:
16+
}
17+
18+
settings {
19+
encodeUrl: true
20+
timeout: 0
21+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
meta {
2+
name: Get Shell Descriptor By Id
3+
type: http
4+
seq: 2
5+
}
6+
7+
get {
8+
url: {{DataEngineBaseUrl}}/shell-descriptors/:aasIdentifier
9+
body: none
10+
auth: inherit
11+
}
12+
13+
params:path {
14+
aasIdentifier: {{aasIdentifier}}
15+
}
16+
17+
script:pre-request {
18+
19+
20+
}
21+
22+
settings {
23+
encodeUrl: true
24+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
meta {
2+
name: Aas Registry
3+
seq: 1
4+
}
5+
6+
auth {
7+
mode: inherit
8+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
meta {
2+
name: Get Asset Information By Id
3+
type: http
4+
seq: 1
5+
}
6+
7+
get {
8+
url: {{DataEngineBaseUrl}}/shells/:aasIdentifier/asset-information
9+
body: none
10+
auth: inherit
11+
}
12+
13+
params:path {
14+
aasIdentifier: {{aasIdentifier}}
15+
}
16+
17+
settings {
18+
encodeUrl: true
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
meta {
2+
name: Get Shell By Id
3+
type: http
4+
seq: 3
5+
}
6+
7+
get {
8+
url: {{DataEngineBaseUrl}}/shells/:aasIdentifier
9+
body: none
10+
auth: inherit
11+
}
12+
13+
params:path {
14+
aasIdentifier: {{aasIdentifier}}
15+
}
16+
17+
settings {
18+
encodeUrl: true
19+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
meta {
2+
name: Get Submodel Ref By Id
3+
type: http
4+
seq: 2
5+
}
6+
7+
get {
8+
url: {{DataEngineBaseUrl}}/shells/:aasIdentifier/submodel-refs?limit&cursor
9+
body: none
10+
auth: inherit
11+
}
12+
13+
params:query {
14+
limit:
15+
cursor:
16+
}
17+
18+
params:path {
19+
aasIdentifier: {{aasIdentifier}}
20+
}
21+
22+
settings {
23+
encodeUrl: true
24+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
meta {
2+
name: Aas Repository
3+
seq: 2
4+
}
5+
6+
auth {
7+
mode: inherit
8+
}

apiCollection/README.md

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
# Bruno API Testing Setup – DataEngine (.NET Backend)
2+
3+
## Overview
4+
5+
This directory contains the Bruno collection and instructions to test the **AAS.TwinEngine.DataEngine** .NET API using Bruno. The collection includes pre-configured requests and environments to exercise the DataEngine API and its plugin-based data sources.
6+
7+
---
8+
9+
## 📚 Contents
10+
11+
[[_TOC_]]
12+
13+
14+
## 🔍 Quick Summary
15+
16+
| Item | Description |
17+
|--------------------------|-----------------------------------------------------|
18+
| **API** | `AAS.TwinEngine.DataEngine` (.NET) |
19+
| **Testing Tool** | [Bruno](https://www.usebruno.com/downloads) |
20+
| **Default API URL** | `https://localhost:5059` |
21+
| **SDK Required** | .NET 8 (recommended) |
22+
| **Run docker compose file** | Run `docker-compose-up` form AasTwin.DataEngine |
23+
24+
---
25+
26+
## Prerequisites
27+
28+
1. **Install Bruno**
29+
30+
* Download: [https://www.usebruno.com/downloads](https://www.usebruno.com/downloads)
31+
* Platforms: Windows, macOS, Linux
32+
33+
2. **Install .NET SDK**
34+
35+
* Recommended: **.NET 8** (install from Microsoft docs)
36+
37+
3. **Install docker**
38+
39+
---
40+
41+
## Running the services
42+
43+
44+
### 1. Run docker compose file
45+
46+
Before starting , run twinengine environmnet with multi-plugin.
47+
[click here for getting starated with docker-compose](../README.md)
48+
49+
### 2. Start the DataEngine .NET API
50+
51+
Run the API:
52+
53+
```bash
54+
cd source\AAS.TwinEngine.DataEngine
55+
dotnet run
56+
```
57+
58+
By default the API listens at `https://localhost:5059` unless overridden by environment settings or `launchSettings.json`.
59+
60+
---
61+
62+
## Bruno Collection — Quick Start
63+
64+
1. Open Bruno
65+
2. `Collection -> Open Collection` and choose the Bruno collection folder (`apiCollection`) from the AasTwin.DataEngine repository
66+
3. From the top-right environment dropdown select an environment: `local` or `dev` (use `local` for local testing)
67+
4. Expand folders to find requests, select a request and click **Send**
68+
5. Inspect the request/response in the right panel
69+
70+
---
71+
72+
## Bruno environment & collection variables
73+
74+
The collection includes a set of environment/collection variables you can edit to point the requests at your local or dev instance.
75+
**Enter these variables in plain text — the collection’s Pre-request script will automatically change value to Base64-encode.**
76+
77+
| Variable name | Purpose | Example value |
78+
| ------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
79+
| `DataEngineBaseUrl` | Base URL for DataEngine API | `https://localhost:5059` |
80+
| `aasIdentifier` | Base64-encoded AAS identifier | `https://mm-software.com/ids/aas/000-001`(this will be convered to base64 by script in bruno) |
81+
| `submodelIdentifierContact` | Base64-encoded submodel identifier for ContactInformation | `https://mm-software.com/submodels/000-001/ContactInformation`((this will be convered to base64 by script in bruno)) |
82+
| `submodelIdentifierNameplate` | Base64-encoded submodel identifier for Nameplate | `https://mm-software.com/submodels/000-001/Nameplate`(this will be convered to base64 by script in bruno) |
83+
| `submodelIdentifierReliability` | Base64-encoded submodel identifier for Reliability| `https://mm-software.com/submodels/000-001/Reliability`(this will be convered to base64 by script in bruno) |
84+
85+
Default values are set as shown.
86+
87+
---
88+
89+
## Default api-test configuration
90+
91+
* The default configuration includes four shell descriptors with these IDs:
92+
93+
* `https://mm-software.com/ids/aas/000-001`
94+
* `https://mm-software.com/ids/aas/000-002`
95+
* `https://mm-software.com/ids/aas/000-003`
96+
* `https://mm-software.com/ids/aas/000-004`
97+
98+
* Default submodel templates (under `/infrastructure/config-files/aas`):
99+
100+
* `ContactInformation`
101+
* `Nameplate`
102+
* `Reliability`
103+
104+
* Default shell template used by all four shells:
105+
106+
```json
107+
{
108+
"id": "https://mm-software.com/aas/aasTemplate",
109+
"assetInformation": {
110+
"assetKind": "Instance"
111+
},
112+
"submodels": [
113+
{
114+
"type": "ModelReference",
115+
"keys": [
116+
{ "type": "Submodel", "value": "Nameplate" }
117+
]
118+
},
119+
{
120+
"type": "ModelReference",
121+
"keys": [
122+
{ "type": "Submodel", "value": "ContactInformation" }
123+
]
124+
},
125+
{
126+
"type": "ModelReference",
127+
"keys": [
128+
{ "type": "Submodel", "value": "Reliability" }
129+
]
130+
}
131+
],
132+
"modelType": "AssetAdministrationShell"
133+
}
134+
```
135+
136+
By default, DataEngine requests the dev Template Repository, Submodel Registry, and AAS Registry (Azure-backed in the `dev` environment).
137+
138+
---
139+
140+
## Useful requests & folders
141+
142+
* **Aas Registry** — endpoints to get all ShellDescriptors and ShellDescriptor by id
143+
* **Aas Repository** — endpoints to get Shell by id, SubmodelRef by id, Asset Information by id
144+
* **Submodel Registry** — endpoints to get SubmodelDescriptor by id
145+
* **Submodel Repository** — endpoints to get submodel, submodelElement, and serialization
146+
147+
(Each Bruno request contains example payloads.)
148+
149+
---
150+
151+
## Troubleshooting
152+
153+
#### ❌ Bruno shows `SSL/TLS handshake failed`
154+
155+
- Run `dotnet dev-certs https --trust`
156+
- Ensure plugin and API endpoints match port and schema (`https://`)
157+
158+
159+
---

0 commit comments

Comments
 (0)