====== 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 [[transformation:mappings:funktionen:gruppierung:buildhierarchy|]] die Hierarchie erzeugt werden. __Falls eine direkte **Vater-Kind** Beziehung nur über die Reihenfolg der Tuppel und eindeutiger **Vater** bzw. **Kind** Merkmale((Ahnlich der Handhabung von Recordtypen in FlatFiles.)) möglich ist kann folgender Ansatz gewählt werden:__ ===== Lösungsansatz ===== Wir nutzen folgende Funktionen und Komponenten: - [[transformation:mappings:variablen:doubledollar|]] - [[transformation:mappings:funktionen:string:splittoarray|]] - Selektionsmodus: concatenate - XPATH Filter ==== Vorgehen im Mapping ==== Zunächst speichern wir die Tuppel alle in eine [[transformation:mappings:variablen:doubledollar|]] 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 soll((Im vorliegenden Fall wird anhand der ersten 3 Stellen der Artikelnummer unterschieden.)). Durch die geschickt Anwendung des Selektionsmodus "concatenate" auf den Regelsätzen und Steuerung der Trennzeichen((Hier "**,**" als Trennzeichen für Hauptpositionen und "#" für SubPositionen.)) kann ein String nach folgendem Pattern gebildet werden: MainPositionID1,MainPositionID2#SubPositionID1#SubPositionID2,MainPositionID3#SubPositionID1 Dieser Hierarchie-String kann schliesslich mit [[transformation:mappings:funktionen:string: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 MiddleWare((Oder im jeweiligen Zielobjekt.)) getriggert werden. {{:howtos:splittoarray_build_hierarchy.jpg?nolink|}} {{:images:sign_warning.png?nolink|}}**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 Mapping((Das wäre dann ein klassicher Lösungsansatz mit extra Mapping.)) welches die Vater-Kind Beziehung beinhalten könnte.