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:
Wir nutzen folgende Funktionen und Komponenten:
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!
Wir sparen uns ein zwischengeschaltets Mapping5) welches die Vater-Kind Beziehung beinhalten könnte.