Einführung
Im Zentrum von OctoMesh steht das Konzept der Construction Kits. Diese Kits dienen als grundlegender Baustein zur Definition von Objektmodellen und liefern den wesentlichen Kontext, der Daten in umsetzbare Erkenntnisse verwandelt. Mit OctoMesh können Sie Modelle erstellen, die auf Ihre spezifischen Anforderungen abgestimmt sind, sodass Sie Daten auf eine Weise formen können, die für Ihre Organisation sinnvoll ist.
Wesentliche Funktionen
- Construction Kits: Construction Kits sind der Grundpfeiler von OctoMesh. Sie ermöglichen es Ihnen, Objektmodelle zu beschreiben, indem Sie festlegen, wie Daten strukturiert und organisiert werden sollen. Diese Kits wirken wie Baupläne, die den Transformationsprozess anleiten und sicherstellen, dass Ihre Daten mit Ihren Zielen und Anforderungen übereinstimmen.
- Kontextbezogene Transformation: OctoMesh geht über einfache Datenmanipulation hinaus; es dreht sich alles um den Kontext. Durch die Verwendung von Construction Kits können Sie Ihren Daten den notwendigen Kontext geben und sie so weitaus aussagekräftiger und umsetzbarer machen. Diese Kontextualisierung ist der Schlüssel, um wertvolle Erkenntnisse aus Ihren Daten zu gewinnen.
- Validierung: Die Sicherstellung der Datenintegrität ist entscheidend. OctoMesh enthält einen robusten Construction-Kit-Compiler, der Ihre definierten Modelle streng validiert. Dieser Validierungsprozess hilft, Fehler frühzeitig in der Entwicklungsphase zu erkennen und so kostspielige Fehler in nachgelagerten Prozessen zu vermeiden.
- Auflösung von Abhängigkeiten: Die Verwaltung von Abhängigkeiten ist mit OctoMesh ein Kinderspiel. Der integrierte Compiler löst Abhängigkeiten effizient auf und vereinfacht so die Integration Ihrer Modelle in den Transformationsprozess.
Construction Kit Libraries
Construction Kit Libraries sind spezialisierte Bibliotheken, die dafür konzipiert sind, die notwendigen Datenmodelltypen für bestimmte Anwendungsfälle zu definieren. Diese Bibliotheken dienen Data Ownern als grundlegendes Werkzeug und vereinfachen die Erstellung und Verwaltung komplexer Datenstrukturen, die auf bestimmte Anwendungen zugeschnitten sind.
Jede Construction Kit Library kann Abhängigkeiten zu anderen Bibliotheken haben, muss aber mindestens eine Abhängigkeit zur Construction Kit Library System besitzen. Diese System-Bibliothek stellt die wesentlichen Elemente bereit, auf denen alle anderen Construction Kits aufbauen. Sie legt die grundlegenden Typen, Attribute und Assoziationsrollen fest, die über verschiedene Anwendungen hinweg gemeinsam genutzt werden, und gewährleistet so Konsistenz und Interoperabilität zwischen den abgeleiteten Bibliotheken.
meshmakers liefert über GitHub gängige Construction Kit Libraries für verschiedene Branchen, siehe hier.
Dieser hierarchische und modulare Ansatz ermöglicht ein hohes Maß an Flexibilität und Effizienz bei der Entwicklung und Pflege von Datenmodellen. Durch die Standardisierung der Kernaspekte der Datenverarbeitung bei gleichzeitiger Möglichkeit spezifischer Anpassungen spielen Construction Kit Libraries eine entscheidende Rolle bei der Ermöglichung robuster und skalierbarer Anwendungsentwicklung. Sie beschleunigen nicht nur den Entwicklungsprozess, sondern verbessern auch die Qualität und Zuverlässigkeit der Softwareprodukte.
Elemente einer Construction Kit Library
Construction Kit Libraries werden mit Hilfe von YAML-Dateien beschrieben. Typischerweise befindet sich jeder Elementtyp in einem separaten Ordner. Siehe hier, um mit der Erstellung von Bibliotheken zu beginnen..

Enums
Im Kontext von Construction Kit Libraries spielen Enums (kurz für Enumerationen) eine entscheidende Rolle bei der Definition einer klaren, effizienten und standardisierten Menge von Werten, die innerhalb von Datenmodellen verwendet werden können. Enums sind besonders nützlich, um eine Menge vordefinierter Konstanten festzulegen, die verschiedene Zustände, Typen oder Konfigurationen innerhalb des Datenmodellierungs-Frameworks der Bibliothek repräsentieren können. Hier ein detaillierter Blick darauf, wie Enums innerhalb einer Construction Kit Library eingesetzt werden können:
- Standardisierung: Enums helfen, die Werte zu standardisieren, die bestimmten Feldern in Datenmodellen zugewiesen werden können. Wird beispielsweise eine Construction Kit Library zur Verwaltung eines digitalen Bibliothekssystems verwendet, könnte ein Enum Kategorien wie
FICTION,NONFICTION,REFERENCE,MAGAZINEdefinieren und so eine konsistente Kategorisierung über die gesamte Datenbank hinweg gewährleisten. - Klarheit und Sicherheit des Codes: Die Verwendung von Enums verbessert die Lesbarkeit und Wartbarkeit des Codes, da sie die setzbaren Werte einschränkt und so Fehler durch ungültige Eingaben reduziert. Ein Construction Kit für eine Versandanwendung könnte beispielsweise ein Enum verwenden, um den Status einer Bestellung darzustellen, etwa
PENDING,SHIPPED,DELIVERED,RETURNED. Dadurch wird der Code weniger fehleranfällig und leichter verständlich. - Interoperabilität: In einer Basis-Construction-Kit-Library System definierte Enums können von anderen Bibliotheken in der Hierarchie geerbt oder erweitert werden. So wird sichergestellt, dass ein gemeinsames Verständnis bestimmter Werte über mehrere Systeme oder Anwendungen hinweg besteht, die möglicherweise unterschiedliche Construction Kits aus derselben Familie verwenden.
- Effizienz: Enums sind in Programmiersprachen wie Java oder C# in der Regel speichereffizienter als andere Arten von Konstanten, da sie im Hintergrund typischerweise als Ganzzahlen implementiert werden. Diese Effizienz ist bei großangelegten Anwendungen entscheidend, bei denen die Performance ein zentrales Anliegen ist.
- Integration mit anderen Funktionen: Enums lassen sich problemlos mit anderen Funktionen einer Construction Kit Library integrieren, etwa mit Validierungsmechanismen oder Serialisierungs-/Deserialisierungsprozessen. So kann ein Enum von der Laufzeit der Bibliothek automatisch auf Gültigkeit geprüft werden, wodurch sichergestellt wird, dass nur zulässige Werte in Datenbanken gespeichert oder über Netzwerke übertragen werden.
Enums werden später an einem Attribut referenziert.
Beispiel
$schema: https://schemas.meshmakers.cloud/construction-kit-elements.schema.json
enums:
- enumId: TypeOfTelephoneEnhanced
useFlags: false
values:
- key: 1
name: Office
- key: 2
name: OfficeMobile
- key: 3
name: Secretary
- key: 4
name: Substitute
- key: 5
name: Home
- key: 6
name: PrivateMobile
Attributes
Dieser Bereich beschreibt Attribute mit einer systemweit eindeutigen ID, Beschreibung, Metadaten und einem Werttyp. Ein Werttyp kann skalar sein (string, int, double, boolean, enums), ein skalarer Array-Typ (StringArray, IntArray) oder ein komplexer Typ.
Das Ziel besteht hier darin, Attribute im System eindeutig zu machen. Das bedeutet, dass ein Attribut „Name" beispielsweise bereits Kontext hat – es ist der Name eines Elements. Jeder Typ sollte später dieses Attribut verwenden, wenn ein Typ Benennungsfunktionalität erhalten soll.
Beispiel für ein double-Attribut
$schema: https://schemas.meshmakers.cloud/construction-kit-elements.schema.json
attributes:
- id: Temperature
valueType: Double
metaData:
- key: Unit
value: "°C"
- key: Type
value: Current
Beispiel für ein int-Attribut
$schema: https://schemas.meshmakers.cloud/construction-kit-elements.schema.json
attributes:
- id: AddressZipcode
valueType: Int
metaData:
- key: semanticId
value: "0173-1#02-AAO129#002"
description: "ZIP code of address"
Beispiel für ein enum-Attribut
$schema: https://schemas.meshmakers.cloud/construction-kit-elements.schema.json
attributes:
- id: EMailTypeOfEmailAddress
valueType: Enum
valueCkEnumId: Basic/TypeOfTelephoneBasic
metaData:
- key: semanticId
value: "0173-1#02-AAO199#003"
description: "characterization of an e-mail address according to its location or usage"
Beispiel für ein Secret-Attribut
$schema: https://schemas.meshmakers.cloud/construction-kit-elements.schema.json
attributes:
- id: Password
valueType: Secret
description: Password of the mailbox account
Attribute vom Werttyp Secret enthalten Zugangsdaten. Sie werden verschlüsselt gespeichert, keine API gibt ihren Wert zurück, und der Compiler erzwingt zusätzliche Regeln (keine Standardwerte, nicht indizierbar, Ownership immer Secret). Siehe Secret-Attribute.
Records
Records repräsentieren strukturierte Datenentitäten, die verschiedene Attribute enthalten und in vielen Programmiersprachen auch „Structs" genannt werden. Jedes Attribut enthält Daten, die einen bestimmten Aspekt der Entität beschreiben. Records sind so gestaltet, dass sie flexibel sind und eine einfache Datenmanipulation und Interaktion innerhalb der Bibliothek ermöglichen.
Ein Record wird definiert, indem seine Attribute und deren jeweilige Datentypen angegeben werden. Attribute können von jedem von der Bibliothek unterstützten Datentyp sein, einschließlich einfacher Datentypen (wie Ganzzahlen und Zeichenketten) und komplexerer Typen (wie Listen oder andere Records).
Beispiel
$schema: https://schemas.meshmakers.cloud/construction-kit-elements.schema.json
records:
- recordId: EMail
attributes:
- id: ${thisModel}/EMailAddress
name: EMail
- id: ${thisModel}/EMailPublicKey
name: PublicKey
isOptional: true
- id: ${thisModel}/EMailTypeOfEmailAddress
name: TypeOfEMail
isOptional: true
- id: ${thisModel}/EMailTypeOfPublicKey
name: TypeOfPublicKey
isOptional: true
AssociationRoles
Im Kontext der Datenmodellierung, insbesondere in der Softwareentwicklung und im Datenbankdesign, beschreiben „Assoziationsrollen" die Beziehungen zwischen verschiedenen Entitäten oder Typen. Diese Rollen sind entscheidend, um festzulegen, wie Instanzen eines Typs mit Instanzen eines anderen Typs in Beziehung stehen, und bestimmen, wie sie innerhalb der Anwendung oder des Systems interagieren. Hier folgt eine detaillierte Erläuterung der Assoziationsrollen, einschließlich der Assoziationstypen, ihrer Namen, Multiplizitäten und des Konzepts der eingehenden und ausgehenden Navigationsnamen:
Assoziationsrollen definieren die Beziehung zwischen zwei oder mehr Typen in einem System. Jede Rolle in einer Assoziation beschreibt, wie sich eine Entität verhält und wie sie mit einer anderen Entität interagiert. Assoziationen werden durch ihren Namen, die Art der Beziehung und ihre Multiplizität charakterisiert, die beschreibt, wie viele Instanzen eines Typs mit Instanzen eines anderen Typs in Beziehung stehen.
Assoziationstypen
- One-to-One: Jede Instanz eines Typs ist mit genau einer Instanz eines anderen Typs assoziiert. Zum Beispiel ein
Userund einUserProfile. - One-to-Many: Eine Instanz eines Typs ist mit mehreren Instanzen eines anderen Typs assoziiert. Zum Beispiel kann ein
TeachermehrereStudentshaben. - Many-to-One: Mehrere Instanzen eines Typs sind mit einer einzigen Instanz eines anderen Typs assoziiert. Dies ist oft die umgekehrte Perspektive einer One-to-Many-Assoziation.
- Many-to-Many: Instanzen eines Typs können Beziehungen zu mehreren Instanzen eines anderen Typs haben und umgekehrt. Zum Beispiel könnte ein
Studentin mehrerenCourseseingeschrieben sein, und jederCoursekönnte mehrereStudentshaben.
Benennung von Assoziationen
Assoziationen werden typischerweise so benannt, dass sie die Art der Beziehung zwischen den Entitäten klar widerspiegeln. Zum Beispiel:
- Eine One-to-Many-Beziehung zwischen
TeacherundStudentkönnteTeachesgenannt werden. - Eine Many-to-Many-Beziehung zwischen
StudentundCoursekönnteEnrollmentgenannt werden.
Multiplizität
Die Multiplizität definiert die Anzahl der Instanzen, die von jeder Seite an der Assoziation teilnehmen können:
- 1..1: Genau eine Instanz muss teilnehmen.
- 0..1: Null oder eine Instanz kann teilnehmen (optionale Beziehung).
- 1..N: Mindestens eine Instanz muss teilnehmen, bis zu einem Maximum von N.
- 0..N: Eine beliebige Anzahl von Instanzen kann teilnehmen, auch keine.
- N..M: Zwischen N und M Instanzen müssen teilnehmen, jeweils einschließlich.
Eingehende und ausgehende Namen (Navigationseigenschaften)
Navigationseigenschaften werden in der objektorientierten und relationalen Abbildung verwendet, um zwischen assoziierten Typen zu navigieren:
- Inbound Name: Dies ist der Name, der verwendet wird, um aus der Perspektive der verwandten Entität zu einer Entität zu navigieren. In einer
Teaches-Beziehung vonStudentzuTeacherkönnte der Inbound Name beispielsweiseInstructorlauten und so den Lehrer des Studenten bezeichnen. - Outbound Name: Dies ist der Name, der verwendet wird, um von einer Entität zu einer anderen assoziierten Entität zu navigieren. Im selben Beispiel könnte der Outbound Name von
TeacherzuStudentStudentslauten und so die vom Lehrer unterrichteten Studenten bezeichnen.
Diese Namen sind entscheidend für das Verständnis und die Navigation des Modells, insbesondere in komplexen Systemen mit vielen miteinander verknüpften Entitäten. Sie sorgen für Klarheit und ein semantisches Verständnis dafür, wie Entitäten miteinander in Beziehung stehen, und erleichtern so den Datenzugriff und die Datenmanipulation in Softwareanwendungen.
Beispiele
$schema: https://schemas.meshmakers.cloud/construction-kit-elements.schema.json
associationRoles:
- id: RelatedEquipment
inboundName: RelatesTo
outboundName: RelatesFrom
inboundMultiplicity: N
outboundMultiplicity: N
Types
In der Welt des Softwaredesigns und der Softwarearchitektur spielen Construction-Kit-Type-Elemente eine entscheidende Rolle bei der systematischen und skalierbaren Modellierung und Strukturierung von Daten. Diese Elemente ermöglichen Vererbung, die Definition von Attributen und den Aufbau von Assoziationen, die grundlegend für die Erstellung robuster und wiederverwendbarer Softwarekomponenten sind. Hier eine ausführliche Erläuterung, wie diese Elemente innerhalb eines Construction Kits funktionieren:
- Vererbung: Vererbung ermöglicht es einem Typ (oft Subklasse genannt), Eigenschaften und Methoden von einem anderen Typ (Superklasse genannt) zu erben, was die Wiederverwendbarkeit und die Erstellung verallgemeinerter Frameworks fördert. Diese Funktion ist in Construction Kits entscheidend, da sie die Erweiterung der Basisfunktionalität ermöglicht, ohne den ursprünglichen Code zu verändern.
- Attribute: Attribute definieren die Eigenschaften oder Merkmale eines Typs. In Construction Kits werden Attribute mit ihren Datentypen und möglicherweise Standardwerten und Validierungsregeln angegeben, die beschreiben, welche Art von Daten die Attribute enthalten und wie sie verarbeitet werden sollen.
- Assoziationen: Assoziationen beschreiben die Beziehungen zwischen verschiedenen Typen innerhalb des Systems. Diese Beziehungen können durch ihre Kardinalität (one-to-one, one-to-many, many-to-many) und ihre Navigierbarkeit charakterisiert werden (welcher Typ in der Beziehung Kenntnis vom anderen Typ hat).
- Display-Name-Regeln: Die optionalen Eigenschaften
displayNameRuleunddisplayDescriptionRuledefinieren, wie Instanzen eines Typs für Menschen beschriftet werden (z. B.displayNameRule: "${Name}"). Die Engine berechnet die schreibgeschützten SystemfelderrtDisplayNameundrtDisplayDescriptionbei jedem Speichern aus diesen Regeln. Die vollständige Syntax, Vererbung und das Laufzeitverhalten finden Sie unter Display Name Rules.
Beispiele
$schema: https://schemas.meshmakers.cloud/construction-kit-elements.schema.json
types:
- typeId: Photovoltaic.Module
derivedFromCkTypeId: Industry.Basic/Machine
displayNameRule: "${Name ?? SerialNumber}"
attributes:
- id: ${thisModel}/PeakPower
name: PeakPower
- id: Industry.Basic/Power
name: Power
isOptional: true
associations:
- id: System/ParentChild
targetCkTypeId: Industry.Energy/Photovoltaic.String
Instanzen von Construction Kits
Die Sammlung von Instanzen von Construction-Kit-Typen wird Runtime Model (RtModel) genannt. Eine Instanz eines Typs wird Runtime Entity (RtEntity) genannt.
