Arbeiten mit mehreren Zielschemas

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Tutorials >

Arbeiten mit mehreren Zielschemas

Im vorherigen Tutorial Mappen mehrerer Quellkomponenten auf eine Zielkomponente haben Sie gesehen, wie man Daten von mehreren Quellschemas auf ein einziges Zielschema mappt. Außerdem haben Sie eine Datei namens merged_library.xml erstellt, in der Bücher aus zwei Quelldateien gespeichert werden. Angenommen, jemand aus einer anderen Abteilung hat Sie gebeten, ihm eine Teilmenge aus dieser XML-Datei zur Verfügung zu stellen. Er möchte eine XML-Datei, die nur die nach 1900 veröffentlichten Bücher enthält.

 
Aus Gründen der Einfachheit können Sie das vorhandene Mapping MultipleSourcesToOneTarget.mfd bearbeiten, sodass Sie je nach Bedarf sowohl die komplette XML-Bibliothek als auch die gefilterte Bibliothek generieren können.

Tutorial_Multiple_Targets

Abstraktes Modell der Datentransformation

Im obigen Diagramm werden zuerst die Daten aus zwei verschiedenen Schemas (books.xsd und library.xsd) in einer einzigen XML-Datei namens merged_library.xml zusammengeführt. Anschließend werden die Daten mit Hilfe einer Filterfunktion transformiert und an die nächste Komponente übergeben, die eine XML-Datei namens filtered_library.xml erzeugt. Die "Zwischenkomponente" dient sowohl als Datenziel als auch als Datenquelle. Dieses Verfahren wird in MapForce als verkettetes Mapping bezeichnet und wird in diesem Tutorial näher behandelt.

 

Unser Ziel ist, es jederzeit sowohl die Datei merged_library.xml als auch die Datei filtered_library.xml generieren zu können. Dazu gehen Sie folgendermaßen vor:

 

Schritt 1: Vorbereiten der Mapping-Design-Datei

Als Ausgangsbasis für dieses Tutorial wird das Mapping MultipleSourcesToOneTarget.mfd aus dem Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\ verwendet. Sie haben dieses Mapping bereits im Tutorial Mappen mehrerer Quellkomponenten auf eine Zielkomponente erstellt. Öffnen Sie zunächst die Datei MultipleSourcesToOneTarget.mfd in MapForce und speichern Sie sie unter einem neuen Namen.

 

Die neue Mapping-Datei muss im Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\ gespeichert werden, da mehrere Dateien von dieser Datei aus referenziert werden.

mfdMultipleSourcesToOneTarget-BAS

MultipleSourcesToOneTarget.mfd (MapForce Enterprise Edition)

 

Schritt 2: Hinzufügen und Konfigurieren der zweiten Zielkomponente

Um die zweite Zielkomponente hinzuzufügen, klicken Sie auf die Symbolleisten-Schaltfläche XML-Schema/Datei einfügen ( ic-new-schema ) und öffnen Sie die Datei library.xsd aus dem Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\. Klicken Sie auf Überspringen, wenn Sie von MapForce aufgefordert werden, eine Instanzdatei bereitzustellen. Das Mapping sieht folgendermaßen aus:

tut-04-01-BAS

Wie oben gezeigt, hat das Mapping nun zwei Quellkomponenten: books und library und zwei Zielkomponenten. Um die Zielkomponenten voneinander unterscheiden zu können, benennen wir die zweite in filtered_library um und definieren auch den Namen der XML-Datei, die anhand dieser Komponente generiert werden soll. Doppelklicken Sie dazu auf die Überschrift der Komponente ganz rechts und bearbeiten Sie die Komponenteneinstellungen wie folgt:

tut-04-02-BAS

Beachten Sie, dass der neue Name der Komponente filtered_library ist und dass die XML-Output-Datei den Namen filtered_library.xml hat.

tut-04-03-BAS

 

Schritt 3: Erstellen der Verbindungen

Ziehen Sie die Verbindung vom Datenelement publication in merged_library zum Datenelement publication in filtered_library. Daraufhin wird die folgende Meldung angezeigt:

tut-04-04-BAS

Klicken Sie auf OK. Beachten Sie, dass in der rechten oberen Ecke beider Zielkomponenten nun neue Schaltflächen zur Verfügung stehen: Vorschau ( btn_component_preview ) und Weiterleitung ( btn_component_pass-through ). Diese Schaltflächen werden in den folgenden Schritten verwendet und erklärt.

tut-04-05-BAS

 

Schritt 4: Filtern der Daten

Um die Daten zu filtern, bevor Sie an filtered_library übergeben werden, verwenden wir eine Filterkomponente. Um eine Filterkomponente hinzuzufügen, klicken Sie mit der rechten Maustaste auf die Verbindung zwischen merged_library und filtered_library und wählen Sie im Kontextmenü den Befehl Filter einfügen: Nodes/Zeilen.

tut-04-06-BAS

Daraufhin wird die Filterkomponente zum Mapping hinzugefügt.

tut-04-07-BAS

Wie oben gezeigt, erscheint der Input-Konnektor "bool" orange markiert, was bedeutet, dass ein Input zwingend erforderlich ist. Wenn Sie den Mauszeiger über den Konnektor platzieren, sehen Sie, dass ein Input vom Typ xs:boolean erforderlich ist. Beachten Sie, dass die Symbolleisten-Schaltfläche Tipps anzeigen ( ic-show-lib-info ) aktiviert sein muss, damit Tipps angezeigt werden.

tut-04-07a-BAS

Für die Filterkomponente wird eine Bedingung benötigt, die entweder true oder false zurückgibt. Wenn die Boolesche Bedingung true zurückgibt, werden die Daten der aktuellen publication-Sequenz in die Zielkomponente kopiert. Wenn die Bedingung false zurückgibt, werden die Daten nicht kopiert.

 

In diesem Tutorial muss die Bedingung lauten, dass alle nach 1900 veröffentlichten Bücher gefiltert werden sollen. Gehen Sie folgendermaßen vor, um die Bedingung zu erstellen:

 

1.Fügen Sie eine Konstante vom numerischen Typ mit dem Wert "1900" hinzu (Klicken Sie im Menü Einfügen auf Konstante). Wählen Sie als Typ Zahl aus.

tut-04-08-BAS

2.Suchen Sie im Fenster "Bibliotheken" die Funktion greater und ziehen Sie sie in das Mapping-Fenster.
3.Erstellen Sie die Mapping-Verbindungen zu und von der Funktion greater wie unten gezeigt. Dadurch geben Sie MapForce die Anweisung: "Wenn publish_year größer ist als 1900, dann kopiere das aktuelle publication-Quelldatenelement in die publication-Zieldatenelement".

tut-04-09-BAS

 

Schritt 5: Anzeigen der Ausgabevorschau und Speichern der Ausgabe der einzelnen Zielkomponenten

Sie können nun eine Vorschau der Ausgaben beider Zielkomponenten anzeigen und speichern. Wenn im selben Mapping mehrere Zielkomponenten vorhanden sind, können Sie auswählen, von welcher eine Vorschau angezeigt werden soll, indem Sie auf die Schaltfläche Vorschau ( btn_component_preview ) der jeweiligen Komponente klicken. Wenn die Schaltfläche Vorschau aktiviert ist ( btn_component_preview_pressed ), zeigt dies an, dass die jeweilige Komponente derzeit für die Vorschau aktiviert ist (und dass die Ausgabe im Vorschaufenster anhand dieser Komponente generiert wird). Die Vorschau kann immer nur für jeweils eine Komponente aktiviert werden.

 

Wenn Sie daher die Ausgabe der Komponente merged_library (also der Zwischenkomponente) in der Vorschau sehen und speichern möchten, gehen Sie folgendermaßen vor:

 

1.Klicken Sie in der Komponente merged_library auf die Schaltfläche Vorschau ( btn_component_preview_pressed ).
2.Klicken Sie am unteren Rand des Mapping-Fensters auf die Schaltfläche Ausgabe.
3.Klicken Sie im Menü Ausgabe auf Ausgabedatei speichern, wenn Sie die Ausgabe in einer Datei speichern möchten.

 

Wenn Sie die Ausgabe der Komponente filtered_library in der Vorschau sehen und speichern wollen:

 

1.Klicken Sie in der Komponente merged_lilbrary auf die Schaltfläche Weiterleitung ( btn_component_pass-through_pressed ).
2.Klicken Sie in der Komponente filtered_library auf die Schaltfläche Vorschau ( btn_component_preview_pressed ).
3.Klicken Sie am unteren Rand des Mapping-Fensters auf die Schaltfläche Ausgabe.
4.Klicken Sie im Menü Ausgabe auf Ausgabedatei speichern, wenn Sie die Ausgabe in einer Datei speichern möchten.

 

Beachten Sie die Schaltfläche Weiterleitung ( btn_component_pass-through ). In einem Mapping mit mehreren Zielkomponenten, wie z.B. diesem hier macht es einen großen Unterschied, ob diese Schaltfläche aktiviert ist oder nicht. Wenn diese Schaltfläche aktiviert ist ( btn_component_pass-through_pressed ), leitet MapForce Daten durch die Zwischenkomponente durch, so dass Sie eine Vorschau des Ergebnisses des gesamten Mappings sehen.

 

Deaktivieren Sie die Schaltfläche ( btn_component_pass-through ), wenn Sie nur den Teil des Mappings zwischen merged_library und filtered_library sehen möchten. Im letzteren Fall wird ein Fehler generiert. Dieses Verhalten wird erwartet, da die Zwischenkomponente keine gültige XML-Input-Datei hat, aus der sie Daten lesen könnte. Doppelklicken Sie zur Behebung dieses Problems auf die Überschrift der Komponente und bearbeiten Sie die Komponente, wie unten gezeigt, damit diese eine gültige XML-Input-Datei zur Verfügung hat:

tut-04-10-BAS

Sie haben nun ein Mapping erstellt, das mehrere Zielkomponenten hat und Sie können die Ausgabe der einzelnen Zielkomponenten wie geplant speichern. Nähere Informationen zum Arbeiten mit Weiterleitungskomponenten finden Sie unter Verkettete Mappings.


© 2019 Altova GmbH