Altova MapForce 2024 Professional Edition

In diesem Kapitel wird erläutert, wie Sie Mitarbeiterdaten abrufen (Look-up) und auf geeignete Weise darstellen können. Um die Look-up-Implementierung auszuprobieren, benötigen Sie das folgende Mapping: MapForceExamples\PersonListByBranchOffice.mfd.

mf_udf_19

Aufgabenstellung

Wir möchten Folgendes erreichen:

 

Suchen bestimmter Daten über die einzelnen Mitarbeiter (Telnr., E-Mail-Adresse, Position) mittels Look-up in einer separaten XML-Datei.

Darstellung dieser Daten in Form einer kommagetrennten Liste und Mappen dieser Liste auf das Element Details der XML-Zieldatei.

Extraktion von Informationen über Mitarbeiter nur aus der Zweigniederlassung namens Nanonull, Inc.

 

Wir haben unser Mapping zu diesem Zweck folgendermaßen erstellt:

 

Mit Hilfe des Filters Office werden nur die Mitarbeiter aus Nanonull, Inc. herausgefiltert.

Um mittels Look-up Informationen aus einer anderen XML-Datei abzurufen, wird im Mapping die benutzerdefinierte Funktion LookupPerson aufgerufen. Die Implementierung dieser benutzerdefinierten Funktion wird im folgenden Unterabschnitt beschrieben.

Zur Verarbeitung der Mitarbeiterdaten ruft die Funktion LookupPerson intern weitere Funktionen auf, die Informationen über die einzelnen Mitarbeiter abrufen und miteinander verketten. All diese Operationen befinden sich im Mapping dieser Funktion und sind im Hauptmapping nicht sichtbar. Mit Hilfe der Funktion LookupPerson werden anschließend die Mitarbeiterdaten auf das Datenelement Details in PersonList gemappt.

 

Implementierung von LookupPerson

Die Look-up-Funktionalität wird über die Funktion LookupPerson, deren Definition Sie unten sehen, bereitgestellt. Um die interne Implementierung der benutzerdefinierten Funktion zu sehen, doppelklicken Sie im Hauptmapping auf deren Titelleiste.

mf_udf_20

Die benutzerdefinierte Funktion ist folgendermaßen definiert:

 

Die Daten werden aus der XML-Datei Altova_Hierarchical.xml abgerufen: (i) der Name des Büros und die Vor- und Nachnamen der Mitarbeiter, anhand derer Mitarbeiter nur aus Nanonull, Inc. ausgewählt werden und (ii) die E-Mail, der Titel und die Durchwahl, die zu einem String verkettet werden. Unten finden Sie eine Beschreibung der Definition der Funktionen EqualAnd und Person2Detail.

Außerdem hat die benutzerdefinierte Funktion drei Input-Parameter, die die Look-up-Werte Office_Name, First_Name und Last_Name bereitstellen. Der Wert des Parameters Office_Name wird aus dem OfficeName-Input aus dem Hauptmapping abgerufen und die Werte von First_Name und Last_Name stammen aus der Komponente BranchOffices aus dem Hauptmapping.

Der Wert der Funktion EqaulAnd (true oder false) wird jedes Mal, wenn die Daten eines neuen Mitarbeiters (title, email, phone) verarbeitet werden, an den Details-Filter übergeben. Wenn der Details-Filter den Wert true erhält, ist die Look-up-Operation erfolgreich und die Mitarbeiterdaten werden abgerufen und an das Hauptmapping übergeben. Andernfalls wird das nächste Datenelement im Kontext überprüft usw., bis die Schleife fertig verarbeitet ist.

 

EqualAnd-Implementierung

Die EqualAnd-Funktion (siehe unten) ist eine separate innerhalb der LookupPerson-Funktion definierte benutzerdefinierte Funktion. Die interne Struktur der benutzerdefinierten Funktion EqualAnd sehen Sie bei Doppelklick auf die Überschrift der Funktion.

mf_udf_22

Die benutzerdefinierte Funktion EqualAnd überprüft zuerst, ob a gleich b ist; wenn das Ergebnis true ist, wird es als erster Parameter der logical-and-Funktion übergeben. Wenn beide Werte in der logical-and-Funktion "true" sind, ist das Ergebnis ebenfalls "true" und wird an die nächste EqualAnd-Funktion übergeben. Das Ergebnis der dritten EqaulAnd-Funktion (siehe LookupPerson Funktion oben) wird an den Details-Filter übergeben.

 

Person2Detail-Implementierung

Eine weitere in die benutzerdefinierte Funktion LookupPerson verschachtelte Funktion ist die Funktion Person2Details. Die benutzerdefinierte Funktion Person2Details (siehe unten) verkettet drei Werte (aus Altova_Hierarchical.xml) und zwei Textkonstanten miteinander.

mf_udf_21

 

Ausgabe

Wenn Sie auf das Fenster Ausgabe klicken, werden in MapForce nur die Vor- und Nachnamen sowie die Daten der Mitarbeiter aus Nanonull, Inc angezeigt (siehe Codefragment unten).

 

<PersonList>

 <Person>

         <First>Vernon</First>

         <Last>Callaby</Last>

         <Details>Office Manager, EMail:v.callaby@nanonull.com, Phone: 582</Details>

 </Person>

 <Person>

         <First>Frank</First>

         <Last>Further</Last>

         <Details>Accounts Receivable, EMail:f.further@nanonull.com, Phone: 471</Details>

 </Person>

 ...

</PersonList>

 

© 2018-2024 Altova GmbH