Nodes mit mehreren Instanzen
In diesem Kapitel erfahren Sie, wie MapForce Nodes verarbeitet, die mehrere Instanzen haben können. Diese Nodes bezeichnen wir in diesem Abschnitt als Sequenzen. MapForce wendet auf Sequenzen die folgenden Regeln an:
•Wenn eine Quellsequenz mit einem Ziel-Node verbunden ist, iteriert MapForce über die Sequenz und generiert für jede Quell-Node-Instanz eine Ziel-Node-Instanz. •Wenn ein Filter angewendet wird, wertet MapForce die Filterbedingung für jedes Datenelement in der Sequenz aus und mappt nur die Datenelemente, für die die Bedingung "true" ergibt. •Wenn eine Quellsequenz leer ist, werden keine Ziel-Node-Entsprechungen generiert. |
Ausnahmen
Für die Verarbeitungsregeln für Sequenzen gelten die folgenden Ausnahmen.
Ausnahme 1
Wenn es sich beim Zieldatenelement um ein XML-Root-Element handelt, wird dieses immer nur einmal erstellt. Wenn Sie eine Quellsequenz mit dem Root-Element verbinden, können nicht mehrere Root-Elemente generiert werden, da dadurch ein XML-Dokument erzeugt werden könnte, das nicht dem Schema entspricht. Wenn auch Attribute des Root-Elements verbunden werden, schlägt die XML-Serialisierung zur Laufzeit fehl. Vermeiden Sie es daher, Sequenzen mit dem XML-Root-Element zu verbinden.
Ausnahme 2
Wenn das Zieldatenelement nur einen einzigen Wert enthalten kann, wird nur ein einziger Wert in das Zieldatenelement geschrieben. Beispiele dafür sind XML-Attribute, Datenbankfelder und einfache Output-Komponenten.
So wird z.B. im Mapping unten die Funktion generate-sequence verwendet, um eine Sequenz von drei Ganzzahlen zu generieren. Da die einfache Output-Komponente nur einen einzigen Wert akzeptiert, wird nur die erste Ganzzahl in die Ausgabe geschrieben. Die restlichen Werte werden ignoriert.

Ausnahme 3
Wenn im Quellschema festgelegt ist, dass ein bestimmtes Datenelement nur einmal vorkommen darf, die Quelldaten aber viele davon enthalten, darf MapForce nur die erste Instanz verwenden. Um dieses Verhalten zu verhindern, deaktivieren Sie in den Komponenteneinstellungen das Kontrollkästchen Input-Verarbeitungsoptimierungen auf Basis von min/maxOccurs aktivieren.
Verbinden von Sequenzen mit Funktions-Inputs
Wenn Sequenzen mit mehr als einem Funktions-Input verbunden werden, generiert das Mapping das kartesische Produkt der Input-Sequenzen. D.h. jedes Datenelement in einer Sequenz wird mit jedem Datenelement in jeder der anderen Sequenzen kombiniert. Dies kann zu unerwarteten Datenstrukturen, Performance-Problemen oder nicht beabsichtigten Berechnungsergebnissen führen.
Wenn Sie eine Funktion mit mehreren Ausgaben verwenden, verbinden Sie eine Sequenz mit nur einem Input. Verbinden Sie alle restlichen Inputs mit Einzelwert-Datenelementen.
Wenn eine Funktion als Input eine leere Sequenz erhält, gibt sie ein leeres Ergebnis zurück und erzeugt somit keine entsprechende Ausgabe.
Beispieldateien
Zum Testen von Sequenzen stehen die folgenden Mappings zur Verfügung:
•MapForceExamples\ArticlePricing.mfd
•MapForceExamples\ExcelColumnsToRecords.mfd
•MapForceExamples\ExcelWith2Dimensions.mfd
•MapForceExamples\FindHighestTemperatures.mfd
•MapForceExamples\OfficeAddressFromLines.mfd