Die strukturierte Datenmodellierung mit erweiterten Knotfunktionen

Wir haben bereits zuvor über die Unterstützung für Knotenfunktionen berichtet, die die Verarbeitung strukturierter Daten vereinfachen, indem sie die Notwendigkeit eliminieren, eine Funktion mehrfach in eine Zuordnung zu kopieren und einzufügen. Das wiederholte Verwenden derselben Funktion ist unnötig und erschwert die Übersichtlichkeit der Zuordnung, wodurch die Datenverarbeitung schwieriger zu verstehen oder zu ändern wird.

MapForce bietet außerdem zusätzliche Filter, die für die Definition von Knotenfunktionen verfügbar sind. Diese Parameter ermöglichen es Entwicklern, Funktionen und Standardwerte auf bestimmte Knoten anzuwenden, basierend auf benutzerdefinierten Kriterien. Beispielsweise können Sie eine Knotenfunktion basierend auf Metadaten des Knotens anwenden, wie z. B. den Knotennamen, die Knotenlänge, die Genauigkeit des Datentyps des Knotens, benutzerdefinierte Knotenanmerkungen und mehr.

Schauen wir uns eine Zuordnung mit erweiterten Knotfunktionen an.

Die unten gezeigte Datenzuordnung ist ein Beispiel für eine Knotenfunktion namens PriceCalculation.mfd, die mit MapForc installiert wurde. Dieses Beispiel berechnet den Endverkaufspreis für eine Liste von Artikeln basierend auf ihren ursprünglichen Kosten und einem Aufschlagfaktor. Die Quelldaten sind eine Textdatei im CSV-Format, und die Ausgabe ist eine XML-Datei.

In dieser Zuordnung wird eine Funktion für einen Knoten definiert und auf das Element "Artikel" in der Ausgabedatei sowie auf dessen Unterelemente angewendet. Durch Doppelklicken auf das fettgedruckte Funktionssymbol links neben dem Element "Artikel" wird die Definition der Knotenfunktion geöffnet.

Das Dropdown-Menü "Anwenden" oben links zeigt an, dass die Funktion für alle Kindelemente von "Artikel" gedacht ist. Der Abschnitt zur Funktionsbeschreibung erklärt, dass diese Funktion das Metadaten-Element "node_fractionDigits" als Parameter für die Rundungsfunktion verwendet. Wenn "node_fractionDigits" für kein Kindelement definiert ist, wird stattdessen der Wert Null verwendet.

Um die Knotenfunktion aus einer anderen Perspektive zu betrachten, können Sie auf den "Bearbeiten"-Button klicken, der sich oben in der Mitte des Bildes angezeigt wird. Dadurch wird die Funktion in einem eigenen Fenster zur Datenzuordnung geöffnet, ähnlich wie bei einer benutzerdefinierten Funktion:

Der Mapping-Eintrag "node_fractionDigits" im unteren linken Bereich liefert einen Eingabewert für die Funktion, basierend auf der Struktur der Ziel-Daten. Schauen wir uns die Metadaten des Knotens etwas genauer an, um "node_fractionDigits" zu finden.

Definition von Knotenmetadaten

Die Metadaten, die für jede strukturierte Datendatei verfügbar sind, stammen aus der Definition der Datenstruktur selbst. In unserem Beispiel ist das Zielobjekt der Zuordnung ein XML-Dokument. Daher werden die für jeden Knoten verfügbaren Metadaten im XML-Schema definiert.

Das folgende Bild zeigt das XML-Schema für die Preisberechnung in der grafischen Schemaansicht von XMLSpy:

Das XML-Element "SalePrice", das im Diagramm hervorgehoben ist, ist als eine Instanz des Datentyps "Amount" definiert. Dieser Datentyp ist selbst eine Dezimalzahl mit maximal 2 Nachkommastellen, wie im Fenster "Facets" unten rechts zu sehen ist. Daher beträgt die Metadatenangabe "node_fractionDigits" für den Knoten "SalePrice" den Wert 2.

Die für eine beliebige strukturierte Datendatei verfügbaren Parameter der Knotenfunktion hängen immer vom Datentyp ab – XML, relationale Datenbank, PDF, CSV-Datei usw. – sowie vom Detaillierungsgrad, der in der Schemadefinition enthalten ist.

Die Abbildung strukturierter Daten mithilfe von Parameterfunktionen von Knoten

Wenn Sie eine neue Knotenfunktion erstellen, werden Sie zunächst mit einem Rohwert und einem Ergebniswert angezeigt, die nicht miteinander verbunden sind. Klicken Sie auf die blaue Schaltfläche "Knotenspezifische Details hinzufügen", um einen Parameter für die Knotenfunktion einzufügen. Dadurch öffnet sich das Dialogfenster "Knotenspezifische Details", in dem Sie einen Knotenparameter auswählen können:

Bitte beachten Sie die Option für Fälle, in denen ein bestimmter Knoten den ausgewählten Metadatentyp nicht unterstützt. In der Preisberechnungszuordnung wird dieses Verhalten direkt in der Funktionsdefinition des Knotens behandelt. Die Knotenfunktion wird nur auf numerische Datentypen angewendet, und für jeden Knoten, bei dem die Anzahl der Nachkommastellen (fractionDigits) nicht angegeben ist, liefert die Funktion "substitute-missing" stattdessen den Wert Null.

Die Ausführung der Node-Funktion beobachten

Wir können einen Haltepunkt an jedem Knoten des Ausgabekomponenten-Diagramms über das Kontextmenü (das beim Rechtsklick erscheint) setzen und den integrierten MapForce-Debugger verwenden, um die Ausführung der Funktion zu überwachen.

Im folgenden Ausschnitt ist ein Haltepunkt bei "SalePrice" gesetzt. Wir haben die Zuordnung über das Debug-Menü gestartet, und die Ausführung wurde am Haltepunkt angehalten. Dabei wurden Zwischenwerte im Hauptfenster der Zuordnung angezeigt.

Wir können sehen, dass der letzte Wert für "SalePrice", der durch die Zuordnung berechnet wurde, 49,183323875 betrug. Die Knotenfunktion hat diesen Endwert auf 49,18 gerundet.

Die tatsächliche Ausführung der Knotenfunktion wird im Debugging-Ergebnis im Hauptfenster nicht angezeigt, aber durch Klicken im Nachrichtenfenster wird die Knotenfunktion zusammen mit allen Zwischenwerten geöffnet:

Die mit MapForce installierten Beispiele enthalten verschiedene weitere Datenzuordnungen für Knotendefinitionen. Das integrierte Hilfesystem von MapForce enthält sogar eine schrittweise Anleitung, um eine Datenzuordnung für Knotendefinitionen von Grund auf neu zu erstellen.

Sie können sogar die hier beschriebene Beispielzuordnung anpassen, um selbst zu sehen, wie sich die Ausgabe verändert. Beispielsweise könnten Sie das XML-Schema so ändern, dass es drei Nachkommastellen erlaubt, oder die Zuordnung so verändern, dass die Knotenfunktion auf dem Zahlenknoten ausgeführt wird, der das erste Kind des Artikels ist, und das neue Ergebnis überprüfen.

Um die Funktionsweise von Knotenfunktionen zu sehen, schauen Sie sich dieses Demo-Video von MapForce an.