Was sind Mappingprofile?
Über Mappingprofile werden die Felder einer Tabelle definiert, die eine REST-Page verarbeiten kann. Dies dient einerseits zur Verschleierung der nicht notwendigen Felder nach außen, als auch zur Erhaltung der Kompatibilität bei Feld-Änderungen durch ein brandbox-Update.
Datenbezogene REST-Pages können nicht ohne Mapping funktionieren.
Legen Sie einen Datensatz in Datenbankfelder (Mapping) an, um ein Mappingprofil zu definieren
Feld | Beschreibung |
---|---|
Name | Der Name der Map |
Typ | Die Tabelle, aus der Daten gemapped werden sollen |
Es kann notwendig sein, für unterschiedliche Http-Request-Methoden unterschiedliche Mapping-Profile zu verwenden. Bspw. möchte man beim Auslesen einer Datensatzliste den Inhalt von 10 bestimmten Feldern zurückgeben, für das Schreiben eines Datensatzes aber nur 5 dieser Felder erlauben. Durch die Definition zweier unterschiedlicher Mapping-Profile für die Request-Typen GET und DELETE lässt sich dies konfigurieren.
Map befüllen
Um nicht für jede Map alle gewünschten Felder immer wieder manuell anlegen zu müssen, steht eine Funktion bereit, die diese Aufgabe übernimmt. Es werden automatische alle Felder der gewählten Tabelle mit dem Feld-Identifier als Label angelegt und zur Map verknüpft. Nicht gewünschte Felder können dann manuell entfernt werden.
Legen Sie eine Map
in anin an und speichern Sie
Klicken Sie in der Toolbar
aufauf Map befüllen
Bestätigen Sie
Die Felder der gewählten Tabelle werden automatisch als Map-Datensätze angelegt und an die Map verknüpft. Auf Wunsch können natürlich in der Tabelle MapTabelle Map-Datensätze manuell angelegt und verknüpft werden.
Eigene Datenstrukturen anbinden
Im Feld Datenbankfeld der Tabelle Datenbankfelder (Mapping) lassen sich standardmäßig alle Felder aller Tabellen (außer Versionstabellen) mappen. Um eigene Datenquellen zu ergänzen, steht ein Event zur Verfügung:
Event-Klasse | Beschreibung |
---|---|
Brandbox\EtlMap\Input\MapOriginSelect\Lib\Event\OnPopulateEnumerationElements | Wird beim Laden des Auswahlfelds "Datenbankfeld" ausgelöst und enthält alle Einträge für das Auswahlfeld |
Da sich solche Datenquellen nicht immer als Property einer Tabelle abbilden lassen, steht ein Event zur Verfügung, um den gemappten Wert für eine gewählte Datenquelle zu ermitteln:
Event-Klasse | Beschreibung |
---|---|
\Brandbox\EtlMap\Etl\Map\Lib\Event\OnPopulateMapValue | Wird beim Ermitteln des zu mappenden Werts ausgelöst. Der Standard Subscriber liefert den Inhalt eines Properties eines Datensatzes zurück |
Über ein weiteres Event kann validiert werden, ob ein Map-Datensatz gültig ist:
Event-Klasse | Beschreibung |
---|---|
\Brandbox\EtlMap\Etl\Map\Lib\Event\OnPopulateIsMapPropertyValid | Wird beim Validieren des zu mappenden Werts ausgelöst. Der Standard Subscriber prüft, ob die gewählte Spalte in der Tabelle verfügbar ist |
Transformationen und Callbacks
Auf einzelne Datenbankfelder (Mapping) können Transformationen angewendet werden, um die Werte zu verändern. Damit können bspw. String-Operationen wie Währungsformatierungen auf gemappte Werte angewendet werden, aber auch komplexere Operationen wie das Auflösen von Fremdschlüsseln.
Auflösung von Fremdschlüsseln (ResolveForeignKeys)
Werden Felder gemappt, die auf eine Fremdtabelle verweisen (Foreign Key), ist es möglich, direkt Daten aus dem referenzierten Datensatz zu beziehen. Dazu muss eine Transformation angewendet werden, die den Callback Resolve Foreign Keys enthält.
Dies funktioniert für folgende Feldtypen:
Datei
Ordner
Damit Werte aus der verknüpften Fremdtabelle ermittelt werden können, müssen diese zusätzlich gemappt werden.
Dies geschieht, indem ein Datenbankfelder (Mapping)-Datensatz für die Fremdtabelle definiert und als Kind-Datensatz an den Datenbankfelder (Mapping)-Datensatz, der das Foreign-Key-Feld mappt, verknüpft wird.
...
Codeblock | ||
---|---|---|
| ||
{
"UseIdAsKey": true
} |
Weiterhin kann der Meta-Knoten, der für alle Datensätze aus aufgelösten Fremdschlüsseln ergänzt wird, optional versteckt werden:
Codeblock | ||
---|---|---|
| ||
{ "HideMeta": true } |
Für Menschen lesbare Darstellung (HumanReadable)
Durch diese Transformation können Fremdschlüssel direkt anhand eines vordefinierten Mechanismus in einem für Menschen lesbaren Format dargestellt werden. Dabei wird der Fremdschlüssel so aufgelöst, dass die für den Ziel-Datensatz als Identifikatoren definierten Felder für die Darstellung des Werts verwendet werden.
Bei der Verwendung dieser Transformation ist kein weiteres Mapping notwendig.
Event | Beschreibung |
---|---|
| Ermittelt das Entity, anhand dessen Widget der HumanReadable-Wert gebildet wird. |
| Ermittelt den HumanReadable-Wert. Kann für Datenstrukturen verwendet werden, die nicht auf dem Widget eines Entity basieren. |
Array Strukturen verflachen (FirstValueFromSubArray)
Beim Auflösen von Fremdschlüsseln werden Unter-Arrays gebildet, deren Key die ID des referenzierten Datensatz enthält. Um einen Wert aus einem Foreign-Key-Feld direkt auszugeben, kann der Callback Retrieve first value from all sub arrays angewendet werden. Dieser holt den ersten Wert aus dem Unter-Array.
...