eBiss 3

Hilfe & Dokumentation

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Themen

howtos:buildhierarchwithsplittoarray

Hierarchiebildung mit der Funktion SplitToArray()

Um aus einer gegebenen Struktur eine Hierarchy abzuleiten gibt es im Idealfall eine Vater-Kind Beziehung der einzelnene Tupel. In so einem Fall kann mit der Funktion BuildHierarchy die Hierarchie erzeugt werden.

Falls eine direkte Vater-Kind Beziehung nur über die Reihenfolg der Tuppel und eindeutiger Vater bzw. Kind Merkmale1) möglich ist kann folgender Ansatz gewählt werden:

Lösungsansatz

Wir nutzen folgende Funktionen und Komponenten:

  1. Selektionsmodus: concatenate
  2. XPATH Filter

Vorgehen im Mapping

Zunächst speichern wir die Tuppel alle in eine $$ Variablen mit Namen $$Position um diese im nächsten Schritt zu durchlaufen. Dabei filtern wir dann jeweils die Tupel nach Vater oder Kind Merkmal aus um einen String zu bilden, der die Hierarchie beinhalten soll2). Durch die geschickt Anwendung des Selektionsmodus „concatenate“ auf den Regelsätzen und Steuerung der Trennzeichen3) kann ein String nach folgendem Pattern gebildet werden:

MainPositionID1,MainPositionID2#SubPositionID1#SubPositionID2,MainPositionID3#SubPositionID1

Dieser Hierarchie-String kann schliesslich mit SplitToArray und dem Trennzeichen „,“ in die Hauptpositionen aufgelöst werden, welche im Zielobjekt Positions triggern und dann für Subpositionen nochmals individuell nach dem Trennzeichen „#“ in die Subpositionen aufgelöst werden, welche im gezeigten Beispiel unterhalb Positions als CustomItems in der MiddleWare4) getriggert werden.

Hinweis: Wenn erwartet wird, dass gleiche Artikelnummern in unterschiedlichen Positionen kommen, dann muss die original Positionsnummer bei der Hierarchiebildung mit berücksichtigt werden!

Vorteil

Wir sparen uns ein zwischengeschaltets Mapping5) welches die Vater-Kind Beziehung beinhalten könnte.

1)
Ahnlich der Handhabung von Recordtypen in FlatFiles.
2)
Im vorliegenden Fall wird anhand der ersten 3 Stellen der Artikelnummer unterschieden.
3)
Hier „,“ als Trennzeichen für Hauptpositionen und „#“ für SubPositionen.
4)
Oder im jeweiligen Zielobjekt.
5)
Das wäre dann ein klassicher Lösungsansatz mit extra Mapping.
howtos/buildhierarchwithsplittoarray.txt · Zuletzt geändert: 2024/02/20 08:15 von 127.0.0.1