Metadaten-Modell
Wir gehen davon aus, dass der Leser mit den Grundzügen von Datenbanken vertraut ist.
In der Software-Entwicklung wird in einer Applikation die gleiche Wissen meist an unterschiedlichen Orten benötigt uns klassisch somit auch wiederholt. Das können Feldnamen in der Datenbank, Beschriftungen von Feldern für den User, Relationen und andere Sachen sein. Wir versuchen darum das Wissen über die Applikation an einem zentralen Ort zu definieren um so möglichst dem “Don’t Repeat Yourself (DRY)”-Prinzip zu folgen weil das u.A. auch zur besseren Konsistenz und Wartbarkeit von Applikationen führt.
In bloqs ist dieser zentrale Ort das “Metadaten-Modell” oder auch kurz nur “Metadaten” oder “Modell” genannt. Der Begriff “Meta” wird verwendet weil die Definition des Domänen-Wissens auf einer übergeordneten Ebene geschieht, welche die konkrete technische Umsetzung nicht oder nur teilweise vorgibt.
Das Wissen aus dem Modell wird u.A. verwendet um:
eine Datenbank inklusive aller Tabellen, Felder, Indices, Restriktionen etc. zu erzeugen und bei Bedarf auch zu migrieren (Model-First)
auf die Datenbank zuzugreifen
generische Schnittstellen zur Verfügung zu stellen (z.B. OData)
ein UI für den User bereit zu stellen
Übersicht Modell-Elemente
Das Modell ist der Container für die vielen unterschiedlichen Informationen welche das Modell ausmachen. Wir unterscheiden dabei grundsätzlich zwischen der Core- und der View-Schicht. Hier ein Überblick:
Core-Schicht (Datendesign mit den grundlegenden Eigenschaften)
Sprachen
Daten-Sprachen (Sprachen in denen Multi-Language Felder gespeichert werden)
Anzeige-Sprachen (Sprachen in denen die Benutzeroberfläche zur Verfügung steht)
Module (Aufteilung des gesamten Modells in Bereiche z.B. Stammdaten, Fakturierung…)
Klassen (Objekte/Tabellen/Entitäten zur Speicherung von zusammen gehörigen Daten)
Indices (Optional eindeutiger Index für ein oder mehrere Felder für mehr Performance und Vermeiden von Duplikaten)
Filter (Optionale, benannte Filter welche in anderer Stelle wieder verwenden werden können)
Icons
Felder
Einfache Werte (Zahlen, Texte, Boolean’s, Daten, Bilder, BLOBs)
Multi-Language Werte (für jeden Datensprache ein Wert)
Relationen (Verbindungen zwischen Klassen)
Aktionen (vom UI her ausführbarer Code der Daten verändert)
Validierungsregeln (Überprüfung von einzelnen Feldern oder dem ganzen Objekt)
Pfade (definieren Verbindungen zwischen jeweils zwei Klassen inkl. Regeln zur referentiellen Integrität)
Endpunkte
View-Schicht (Visualisierung auf der Basis der Core-Schicht)
Menüeinträge
Items
Gruppen
Titel-Layouts (Repräsentation eines einzelnen Objektes als Text)
Listen-Layouts (Liste von Objekten)
Spalten (auch versteckte welche sichtbar gemacht werden können)
Sortierung (Sortierung nach einem oder mehreren Feldern)
Filter (Einschränkung für die Liste der angezeigten Objekte)
Detail-Layouts (detaillierte Datestellung eines einzelnen Objektes)
Dashboards
Kacheln (eigenständige Bereiche im Dashboard)
Kalender
Ansichten in der Applikatzion
Integrationen per onlin .ics Zugriff
Natürlich können wir nicht garantieren, dass das Modell für alles für eine konkrete Applikation nötige Wissen vorbereitet ist. Darum ist es möglich, das Modell an praktisch jeder Stelle im Moment durch Aspekte, welche einen bestimmten Wissensaspekt beschreiben, zu erweitern. Solche Aspekte können nach Belieben designt und verwendet werden.
Modell erstellen
Es gibt verschiedene Möglichkeiten ein bloqs Modell zu erstellen:
Developer können das Modell programmatisch im Code erstellen. Siehe https://encodo.atlassian.net/wiki/spaces/EB/pages/123502609.
Customizer können Ansichten auf die Kundenbedürfnisse direkt in der Applikation anpassen. Siehe https://encodo.atlassian.net/wiki/spaces/EB/pages/104497153. Daten können mit
Calculated Properties
für die Ansicht neu zusammengestellt werden.Es können Modell-Informationen aus anderen Quellen verwendet werden. Beispiele:
Andere Modell-orientierte Umgebung (z.B. Atlas 1.0, Atlas 2.0)
Schema aus einer SQL-Datenbank
WSDL Beschreibung
OpenAPI Beschreibung
Modell verwenden
Eine bloqs Applikation verwendet das Modell in allen wichtigen Phasen:
Während der eigentlichen Entwicklung
Während der Laufzeit
Während dem Customizing (z.B. Erstellung von neuen Filtern, Dashboards…)
Das Modell steht somit im Zentrum und ist auch jederzeit im vollem Umfang verfügbar um die Information gewinnbringend zu verwenden. Einige konkrete Beispiele:
Generieren von C#-Klassen für die Business Logik
Datenbank-Zugriff
Datenbank Schema erstellen, migrieren oder einfach kontrollieren
Datenzugriff per OData
Generischer XML-Export und -Import
Benutzeroberfläche
Als Teil vom Applikations-Setup siehe https://encodo.atlassian.net/wiki/spaces/EB/pages/155287658.