Assoziationen
Assoziationen definieren Beziehungen zwischen Entitäten im Runtime-Modell. Dieses Kapitel beschreibt, wie Sie Assoziationen abfragen und navigieren.
Navigationseigenschaften
Der einfachste Weg, auf Assoziationen zuzugreifen, führt über typisierte Navigationseigenschaften. Diese werden basierend auf den im Construction Kit definierten Assoziationsrollen generiert.
query {
runtime {
systemCommunicationDataFlow {
items {
rtId
name
children {
systemCommunicationPipeline {
items {
name
rtId
executedBy {
systemCommunicationAdapter {
items {
rtId
ckTypeId
name
}
}
}
}
}
}
}
}
}
}
Diese Abfrage durchläuft: DataFlow → children → Pipeline → executedBy → Adapter
Generische Assoziationsabfrage
Für mehr Kontrolle über Assoziationsabfragen verwenden Sie das generische Feld associations mit Filterparametern.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
roleId | String | Filtern nach Assoziationsrolle (z. B. System/ParentChild) |
direction | GraphDirection | INBOUND, OUTBOUND oder ANY |
ckId | String | Filtern nach Zielentitätstyp |
includeIndirect | Boolean | Transitive Assoziationen einbeziehen |
Richtung
| Richtung | Beschreibung |
|---|---|
OUTBOUND | Von der aktuellen Entität zu verwandten Entitäten (Quelle → Ziel) |
INBOUND | Von verwandten Entitäten zur aktuellen Entität (Ziel → Quelle) |
ANY | Beide Richtungen |
query
{
runtime{
basicTree(rtId: "5fc8fc3d8b2fc75f925e21aa"){
items{
rtId
associations(
roleId: "System/ParentChild"
direction: INBOUND
ckId: "EnergyCommunity/OperatingFacility"
includeIndirect: true
){
items{
rtId
ckTypeId
}
}
}
}
}
}
Gibt alle Operating Facilities zurück, die direkte oder indirekte Eltern des angegebenen Basic Tree sind.
{
"data": {
"runtime": {
"basicTree": {
"items": [
{
"rtId": "5fc8fc3d8b2fc75f925e21aa",
"associations": {
"items": [
{
"rtId": "693c5b93464d7d9e1396cf1c",
"ckTypeId": "EnergyCommunity/OperatingFacility"
}
]
}
}
]
}
}
}
}
Assoziationsdefinitionen
Um detaillierte Informationen über Assoziationen einschließlich Ursprung und Ziel zu erhalten:
query getRuntimeEntityAssociationsById(
$rtId: OctoObjectId!
$ckTypeId: String!
$direction: GraphDirection!
$roleId: String
) {
runtime {
runtimeEntities(ckId: $ckTypeId, rtId: $rtId) {
items {
rtId
ckTypeId
associations {
definitions(direction: $direction, roleId: $roleId) {
totalCount
items {
targetRtId
targetCkTypeId
originRtId
originCkTypeId
ckAssociationRoleId
}
}
}
}
}
}
}
Definitionsfelder
| Feld | Beschreibung |
|---|---|
targetRtId | Runtime-ID der Zielentität |
targetCkTypeId | Typ der Zielentität |
originRtId | Runtime-ID der Ursprungsentität |
originCkTypeId | Typ der Ursprungsentität |
ckAssociationRoleId | Die Assoziationsrollen-ID |
Attribute assoziierter Entitäten abfragen
Um Attribute assoziierter Entitäten zu erhalten, verwenden Sie das Feld targets:
query {
runtime {
runtimeEntities(ckId: "Basic/Tree", rtId: "5fc8fc3d8b2fc75f925e21aa") {
items {
rtId
associations {
targets(roleId: "System/ParentChild", ckId: "Basic/TreeNode" direction: INBOUND) {
items {
rtId
ckTypeId
# Additional attributes of the target entity can be queried here
}
}
}
}
}
}
}
Die obige Abfrage ruft alle Basic/TreeNode-Entitäten ab, die Eltern des angegebenen Basic/Tree sind.
{
"data": {
"runtime": {
"runtimeEntities": {
"items": [
{
"rtId": "5fc8fc3d8b2fc75f925e21aa",
"associations": {
"targets": {
"items": [
{
"rtId": "5fc8fda18b2fc75f925e21ab",
"ckTypeId": "Basic/TreeNode"
}
]
}
}
}
]
}
}
}
}
Gängige Assoziationsrollen
| Rollen-ID | Beschreibung |
|---|---|
System/ParentChild | Hierarchische Eltern-Kind-Beziehung |
System/Ownership | Eigentümerbeziehung |
Welche Rollen tatsächlich verfügbar sind, hängt von der Konfiguration Ihres Construction-Kit-Modells ab.
Best Practices
- Verwenden Sie typisierte Navigationseigenschaften, wenn die Beziehungsstruktur bekannt und fest ist
- Verwenden Sie die generische Assoziationsabfrage, wenn Sie dynamische Filterung oder Traversierung benötigen
- Begrenzen Sie indirekte Abfragen – transitive Abfragen auf großen Hierarchien können teuer sein
- Filtern Sie nach Typ, wenn Sie nur bestimmte Entitätstypen aus Assoziationen benötigen
- Verwenden Sie Pagination bei Assoziationen mit vielen verwandten Entitäten