Altova MapForce 2025 Basic Edition

Ein Mapping kann mehrere Quell- und Zielkomponenten haben. Wenn mehrere Zielkomponenten vorhanden sind, können Sie in der MapForce-Vorschau immer nur eine Komponentenausgabe auf einmal anzeigen, nämlich diejenige, die Sie durch Klick auf die Vorschau-Schaltfläche mf_ic_preview markiert haben. In anderen Ausführungsumgebungen (MapForce Server oder generierter Code) werden alle Zielkomponente der Reihe nach ausgeführt und es wird die entsprechende Ausgabe für die einzelnen Komponente erzeugt.

 

Standardmäßig werden Zielkomponenten von oben nach unten und von links nach rechts verarbeitet. Bei Bedarf können Sie diese Reihenfolge durch Ändern der Position der Zielkomponenten im Mapping-Fenster beeinflussen. Der Referenzpunkt ist jeweils die linke obere Ecke einer Komponente. Beachten Sie dazu Folgendes:

 

Wenn zwei Komponenten dieselbe vertikale Position haben, so wird zuerst die oberste Komponente verarbeitet.

Wenn zwei Komponenten dieselbe horizontale Position haben, so wird zuerst die am weitesten links liegende Komponente verarbeitet.

In den seltenen Fällen, in denen zwei Komponenten sich an exakt derselben Stelle befinden, wird automatisch eine eindeutige interne Komponenten-ID verwendet. Damit ist eine genau definierte Reihenfolge definiert, die allerdings nicht geändert werden kann.

 

Um ein Beispiel dafür zu sehen, wie dies funktioniert, öffnen Sie das folgende Demo-Mapping: <Dokumente>\Altova\MapForce2025\MapForceExamples\GroupingFunctions.mfd. Dieses Mapping besteht aus mehreren Quell- und Zielkomponenten. Unten sehen Sie nur ein Fragment davon.

mf_semantics_07

Gemäß der Regel ist die Standard-Verarbeitungsreihenfolge dieses Mappings in MapForce Server und im generierten Code von oben nach unten. Sie können dies überprüfen, indem Sie z.B. XSLT 2.0-Code generieren:

 

1.Klicken Sie im Menü Datei auf Code generieren in | XSLT 2.0.

2.Wenn Sie dazu aufgefordert werden, wählen Sie ein Zielverzeichnis für den generierten Code aus.

 

Das Zielverzeichnis enthält nach der Generierung mehrere XSLT-Dateien und eine DoTransform.bat-Datei. Letztere kann mit RaptorXML Server (eigene Lizenz erforderlich) ausgeführt werden. Die Datei DoTransform.bat verarbeitet Komponenten in derselben Reihenfolge, wie diese im Mapping definiert wurden, nämlich von oben nach unten. Überprüfen Sie dies, in dem Sie sich den --output-Parameter der einzelnen Transformationen ansehen.

 

RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-by.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%
RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-adjacent.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups2.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%
RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-into-blocks.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups3.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%
RaptorXML xslt --xslt-version=2 --input="records-v2.xml" --output="group-starting-with.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups4.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%
RaptorXML xslt --xslt-version=2 --input="records-v3.xml" --output="group_ending_with.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups5.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

 

Mit der letzten Transformation wird eine Ausgabedatei namens group-ending-with.xml erzeugt. Verschieben wir diese Zielkomponente nun im Mapping ganz nach oben:

mf_semantics_08

Wenn Sie nun erneut XSLT 2.0-Code generieren, ändert sich die Verarbeitungsreihenfolge entsprechend:

 

RaptorXML xslt --xslt-version=2 --input="records-v3.xml" --output="group_ending_with.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-by.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups2.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-adjacent.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups3.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-into-blocks.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups4.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

RaptorXML xslt --xslt-version=2 --input="records-v2.xml" --output="group-starting-with.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups5.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

 

Mit dem ersten Aufruf im oben gezeigten Codefragment wird nun group-ending-with.xml erzeugt.

 

Sie können die Verarbeitungsreihenfolge auch in anderen Codesprachen und in kompilierten MapForceServer-Ausführungsdateien (.mfx) auf ähnliche Weise ändern.

 

Verkettete Mappings

Dieselbe oben beschriebene Verarbeitungsreihenfolge gilt auch für verkettete Mappings. Die verkettete Mapping-Gruppe wird jedoch als eine einzige Einheit behandelt. Wenn Sie die Zwischen- oder Endkomponente eines einzigen verketteten Mappings verschieben, hat dies keine Auswirkung auf die Verarbeitungsreihenfolge. Die Position der Endkomponenten von einzelnen Gruppen hat nur dann einen Einfluss auf die Verarbeitungsreihenfolge, wenn mehrere Ketten bzw. mehrere Zielkomponenten in einem Mapping vorhanden sind.

 

Wenn zwei Endkomponenten dieselbe vertikale Position einnehmen, so wird zuerst die weiter links gelegene verarbeitet.

Wenn zwei Zielkomponenten dieselbe horizontale Position einnehmen, so wird zuerst die weiter oben gelegene verarbeitet.

In den seltenen Fällen, in denen zwei Komponenten sich an exakt derselben Stelle befinden, wird automatisch eine eindeutige interne Komponenten-ID verwendet. Damit ist eine genau definierte Reihenfolge definiert, die allerdings nicht geändert werden kann.

 

© 2018-2024 Altova GmbH