"Alles kopieren"-Verbindungen

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

Startseite >  Erstellen von Mappings > Verbindungsarten >

"Alles kopieren"-Verbindungen

Mit "Alles kopieren"-Verbindungen werden Daten zwischen komplexen Strukturen (Nodes mit untergeordneten Datenelementen), die einander sehr ähnlich oder identisch sind, gemappt. Der Hauptvorteil von "Alles kopieren"-Verbindungen ist, dass diese den Mapping-Arbeitsbereich vereinfachen (anstelle mehrerer Verbindungen wird eine "dicke" Verbindungslinie gezogen).

 

Im Mapping wird eine "Alles kopieren"-Verbindung als eine einzige fette Linie, die zwei identische oder ähnliche Strukturen miteinander verbindet, angezeigt (diese fette Linie hat Input- und Output-Verzweigungen für die einzelnen untergeordneten Datenelemente).

conn_copyAll

Alles kopieren-Verbindung

Wenn Sie im Mapping eine Mapping-Verbindung zwischen zwei Strukturen ziehen, erstellt MapForce automatisch eine "Alles kopieren"-Verbindung, wenn es feststellt, dass die Quell-und Zielstruktur miteinander kompatibel sind (d.h. wenn beide Strukturen entweder denselben Typ haben oder wenn es sich bei der Zielstruktur um einen Subtyp des Quelltyps handelt). Zur Mapping-Laufzeit werden alle Instanzdaten einschließlich aller untergeordneten Datenelemente rekursiv von der Quell- in die Zielkomponente kopiert.

 

Um manuell eine "Alles kopieren"-Verbindung zu erstellen, klicken Sie mit der rechten Maustaste auf eine vorhandene Verbindung zwischen zwei ähnlichen Nodes mit Child-Datenelementen und wählen Sie im Kontextmenü den Befehl Alles kopieren (Sub-Einträge kopieren).

 

Beachten Sie die folgenden Punkte:

 

In Kontexten, in denen eine "Alles kopieren"-Verbindung nicht sinnvoll ist oder nicht unterstützt wird, ist es nicht möglich diese Art von Verbindung manuell zu erstellen.
Eine "Alles kopieren"-Verbindung kann nicht zum root-Element einer XML/Schema-Komponente erstellt werden.
Bei der Erstellung von "Alles kopieren"-Verbindungen zwischen einem Schema und einem Parameter einer benutzerdefinierten Funktion muss den beiden Komponenten dasselbe Schema zugrunde liegen. Die beiden Komponenten müssen dabei aber nicht dasselbe Root-Element haben.

 

Als Beispiel für die manuelle Erstellung einer "Alles kopieren"-Verbindung gehen Sie folgendermaßen vor:

 

1.Erstellen Sie ein neues Mapping.
2.Klicken Sie im Menü Einfügen auf XML-Schema/Datei und navigieren Sie zur Datei books.xml im Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\.
3.Klicken Sie im Menü Einfügen auf XML-Schema/Datei und navigieren Sie zur Datei library.xsd im Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\.
4.Ziehen Sie eine Mapping-Verbindung vom Node book der Komponente "books" zum Node publication der Komponente "library".
5.Klicken Sie mit der rechten Maustaste auf die neue Verbindung und wählen Sie im Kontextmenü den Befehl Alles kopieren (Sub-Einträge kopieren).

mf_copy-all_example

Falls kleinere Unterschiede zwischen der Quell- und der Zielstruktur bestehen, zählt die "Alles kopieren"-Verbindung zur Mapping-Laufzeit die Datenelemente der Quellstruktur (wie Elemente und Attribute) auf und kopiert nur diejenigen, die in der Zielstruktur vorhanden sind. Dies wird rekursiv wiederholt.

 

So sind etwa im obigen Mapping nur zwei untergeordnete Datenelemente zwischen den beiden Strukturen identisch (author und title) und werden daher auf die Zielkomponente gemappt. Das Datenelement id wird nicht automatisch inkludiert, da es in der Quellkomponente ein Attribut und in der Zielkomponente ein Element ist. Wenn Sie z.B. category auf genre mappen müssen, kann die "Alles kopieren"-Verbindung nicht mehr verwendet werden, da es sich hierbei um unterschiedliche Datenelemente handelt.

 

Wenn ein Input-Konnektor (das kleine Dreieck an der Seite der Komponente) eine "Alles kopieren"-Verbindung erhält, kann er keine anderen Verbindungen akzeptieren. Wenn Sie im obigen Beispiel versuchen, eine Verbindung zwischen category und genre zu erstellen, werden Sie von MapForce aufgefordert, die Verbindung entweder zu ersetzen oder den Input zu duplizieren.

mf_copy-all_override

Eine Duplizierung des Input ist nur dann sinnvoll, wenn die Zielkomponente Daten aus mehr als einem Input erhalten soll, was hier nicht erforderlich ist (siehe auch Input duplizieren). Wenn Sie die "Alles kopieren"-Verbindung ersetzen, werden Sie in einem Meldungsfeld noch einmal aufgefordert, die "Alles kopieren"-Verbindung entweder aufzulösen oder zu löschen.

mf_copy-all_resolve

Klicken Sie auf "Alles kopieren"-Verbindung auflösen, wenn Sie die "Alles kopieren"-Verbindung durch einzelne zielorientierte Standardverbindungen mit den entsprechenden Child-Datenelementen ersetzen möchten. Wenn Sie die "Alles kopieren"-Verbindung lieber vollständig entfernen möchten, klicken Sie auf Child-Verbindungen löschen.

 


© 2019 Altova GmbH