Durch die Datenmodellierung lassen sich bestimmte Datentabellen um dynamische Informationen erweitern.
Aufbau des Plugins
Die Datenmodellierung unterteilt sich in die Datenpflege, den Eingriff in das Behandeln von Entities und den Eingriff in die Datenbankwidgets. Von der Datenmodellierung ergänzte Datenbankfelder werden als ODM-Informationen in der entsprechenden Datenbanktabelle beim entsprechenden Datensatz abgelegt.
Aktualisierung des Datenbankschemas
Werden Änderungen an der Datenmodellierung in Form der Datenpflege vorgenommen, so ist eine Aktualisierung des Datenbankschema notwendig. Hierbei werden die Datenbankwidgets aller Tabellen, welche die Datenmodellierung nutzen können, aktualisiert und ein Cache über diese Datenbankwidgets erstellt.
Jeder Datentabelle der Datenmodellierung (Formularmasken, Feldgruppen und Felder) steht der Button "Datenbankschema aktualisieren" zur Verfügung. Hierüber können die o.g. Aktionen ausgelöst werden.
Info |
---|
Neben dem manuellen Aktualisieren des Datenbankschemas, wird dies auch im Rahmen der Installation bzw. eines Updates von brandbox durchgeführt. |
Datenpflege
Die Datenmodellierung wird auf drei Ebenen gepflegt - den Formularmasken, den Feldgruppen und den Feldern. Felder können Kinder von Feldgruppen sein, Felder und Feldgruppen können Kinder von Formularmasken sein.
Formularmasken
Eine Formularmaske repräsentiert eine generelle Erweiterung einer Datentabelle um die mit dieser Formularmaske verknüpften Felder und Feldgruppen.
...
Hier stehen alle Tabellen zur Auswahl, welche durch die Datenmodellierung erweitert werden können. Es können mehrere Tabellen gewählt werden.
Info |
---|
Es gibt Anwendungsfälle aus anderen Plugins in denen hier keine Tabelle ausgewählt werden muss. |
Feldgruppen
Eine Feldgruppe repräsentiert einen Reiter (Tab) innerhalb eines Datenformulars. Unter diesem Reiter werden alle mit dieser Feldgruppe verknüpften Felder angezeigt.
...
Der Identifikator dieser Feldgruppe.
Info |
---|
Identifikatoren von Feldgruppen müssen pro Mandant eindeutig sein und dürfen ausschließlich aus Groß- und Kleinbuchstaben von A bis Z und Zahlen von 0 bis 9 bestehen. Gemäß der brandbox-Code-Konvention sollten Identifkatoren mit einem kleinen Buchstaben beginnen. |
...
Feld
Ein Feld repräsentiert ein tatsächliches Feld, welches in der Datenbank abgespeichert wird.
Info |
---|
Übersetzungsmöglichkeiten beachten. |
...
Der Identifikator dieses Feldes.
Info |
---|
Identifikatoren von Feldern müssen pro Mandant eindeutig sein und dürfen ausschließlich aus Groß- und Kleinbuchstaben von A bis Z und Zahlen von 0 bis 9 bestehen. Gemäß der brandbox-Code-Konvention sollten Identifkatoren mit einem kleinen Buchstaben beginnen. |
...
Der Formulartyp des Feldes. Es stehen die gängigen Formulartypen für brandbox zur Verfügung.
Info |
---|
Felder mit dem Formulartyp "Benutzerdefiniertes Feld" benötigen ggf. eine erweiterte Konfiguration. |
...
Der Standardwert für dieses Feld, sollte es in einem neuen Datensatz verwendet werden.
Info |
---|
Nicht jede Implementation der Datenmodellierung nutzt diesen Standardwert. |
...
Die Konfiguration des gepflegten Feldes.
Info |
---|
Die hier einzutragenden Werte können sich gravierend unterscheiden. Die jeweiligen möglichen Konfigurationen werden von den entsprechenden Plugins behandelt. |
...
Eine Liste an Einschränkungen welche für die Werte des gepflegten Feldes gelten.
Info |
---|
Genutzt werden hier Symfony Validator Constraints. |
...
Verwendung
Durch die Hauptklasse \brandbox\component\modelling\engine
werden drei öffentliche Methoden zur Verfügung gestellt:
...
Liest das entsprechende Feld der Datenmodellierung anhand der eindeutigen numerischen ID aus und gibt ein Objekt zurück welches das Interface \brandbox\component\widget\lib\widget\interfaces\columnInterface
implementiert.
Info |
---|
Die Methode |
...
Info |
---|
Die Datenmodellierung integriert sich in die Datenbankwidgets und wird von anderen Plugins gesondert genutzt. Diese Plugins dokumentieren ihre Integration der Datenmodellierung selbst. |
Events
Interface: \brandbox\component\modelling\lib\event\modellingEventInterface
Adapter: \brandbox\component\modelling\lib\event\adapter\modellingEventAdapter
...
Info |
---|
Bitte beachten Sie auch die Anwenderdokumentation |
Eingabefeldtypen
Die in der Strukturmodellierung zur Verfügung stehenden Typen der Eingabefelder werden über das Event OnPopulateTypes
eingesammelt. Es stehen derzeit fast alle Feldtypen welche von brandbox unterstützt werden zur Verfügung.
Programmatische Eingriffsmöglichkeiten
Info |
---|
Die Strukturmodellierung arbeitet mit einer öffentlichen und einer internen Datenstruktur. Die interne Datenstruktur darf niemals außerhalb der Strukturmodellierung bzw. der internen Events der Strukturmodellierung eingesetzt werden. |
Abrufen einer Formularmaskenstruktur
Codeblock | ||
---|---|---|
| ||
use Brandbox\Framework\Component\Modelling;
$id = 0; // ID des Formularmaskendatensatzes
$mask = $this
->staticController(Modelling\Manager::class)
->getMaskWidget($id)
; |
Abrufen einer Feldstruktur
Codeblock | ||
---|---|---|
| ||
use Brandbox\Framework\Component\Modelling;
$id = 0; // ID des Felddatensatzes
$identifier = 'ExampleIdentifier'; // Identifikator des Felddatensatzes
$column = $this
->staticController(Modelling\Manager::class)
->getColumnWidgetById($id)
;
// oder
$column = $this
->staticController(Modelling\Manager::class)
->getColumnWidgetByIdentifier($identifier)
; |
Datenbankentitäten mit Strukturmodellierung ausstatten
Datenbankentitäten können mithilfe des Interfaces \Brandbox\Framework\Brandbox\Modelling\Lib\Definition\ModellingEntityInterface
sowie dem Trait \Brandbox\Framework\Brandbox\Modelling\Lib\Definition\ModellingEntityTrait
um die Strukturmodellierung erweitert werden. Dabei wird ähnlich zu Brandbox/Odm
eine Tabellenspalte für die dynamischen Informationen ergänzt.
Eingabefeldkonfigurationen
Mithilfe des Events OnPopulateConfiguration
und den Strukturdefinitionen können Eingabefelder, welche in der Strukturmodellierung zur Auswahl stehen, mit einer optionalen Konfigurationsdefinition ausgestattet werden. Hierfür muss lediglich das OnPopulateConfiguration
-Event mit dem abstrakten Listener PopulateConfigurationAbstract
imeplementiert und eine Strukturdefinition im Basispfad des entsprechenden Codepakets abgelegt werden.
Events
Klassenname | Beschreibung |
---|---|
| Sammelt die verfügbaren Eingabefeldtypen für die Datenmodellierung ein. |
| Definiert den |
Versionshinweise
Info |
---|
brandbox 8.0 (framework 1.30.0)
|
Info |
---|
brandbox 10.0 (framework 3.0.0)
|
Info |
---|
brandbox 11.0 (framework 4.0.0)
|