Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Durch die Datenmodellierung lassen sich bestimmte Datentabellen um dynamische Informationen erweitern.

Image Removed

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.

Image Removed

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.

Image Removed

...

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.

Image Removed

...

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.

Image Removed

Image Removed

Image Removed

...

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 \brandbox\component\widget\lib\widget\interfaces\columnInterface::getColumnGroupWidget wird hier null zurückgeben, da dieses Feld direkt bezogen wurde.

...

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
languagephp
use Brandbox\Framework\Component\Modelling;

$id = 0; // ID des Formularmaskendatensatzes

$mask = $this
  ->staticController(Modelling\Manager::class)
  ->getMaskWidget($id)
;

Abrufen einer Feldstruktur

Codeblock
languagephp
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

OnPopulateTypes

Sammelt die verfügbaren Eingabefeldtypen für die Datenmodellierung ein.

OnPopulateConfiguration

Definiert den FormBuilderStandard für die Eingabefeldkonfiguration, welche zusätzlich in der Datensatzbearbeitung einer ModellingColumn angezeigt wird. Die Klasse PopulateConfigurationAbstract kann als Basisklasse für einen Listener genutzt werden.

Versionshinweise

Info

brandbox 8.0 (framework 1.30.0)

  • Eingabefelder können mit einer optionalen Konfiguration ausgestattet werden

Info

brandbox 10.0 (framework 3.0.0)

  • Die Kennzeichen aus den modellingColumnIs*-Spalten wurden in das Array flags migriert. Die Pflege der Kennzeichnen findet über Component/Variant mit dem Target ModellingColumnFlag statt.

Info

brandbox 11.0 (framework 4.0.0)

  • Die abstrakten Strukturmodellierungsentitäten wurden durch ein Interface und ein Trait ersetzt