Versionen im Vergleich

Schlüssel

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

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.

...

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.

...

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 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-KlasseBeschreibung
\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

array $columnIdentifiers: enthält alle Spalten-Identifikatoren der Tabelle
bool $isValid: gibt an, ob die Property (noch) verfügbar ist. Dieser Wert muss vom Subscriber ermittelt werden
\Brandbox\EtlMap\Etl\Map\Lib\Entity\EtlMapProfile $profile: enthält das Mappingprofil
\Brandbox\EtlMap\Etl\Map\Lib\Entity\EtlMapProperty $property: enthält den Mapping-Datensatz vom Typ Datenbankfelder (Mapping)

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:

...

Codeblock
languagejs
{
    "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.

Array Strukturen verflachen (FirstValueFromSubArray)

Beim Auflösen von Fremdschlüsseln werden Unter-Arrays gebildet. 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.

...