Bereitstellung von Node-Metadaten für Node-Funktionen

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

Startseite >  Funktionen > Standardwerte und Node-Funktionen >

Bereitstellung von Node-Metadaten für Node-Funktionen

Manchmal gibt es Fälle, in denen eine Node-Funktion etwas auf Basis bestimmter Informationen über den aktuellen Node (nennen wir diese Informationen "Node-Metadaten") tun soll. So könnten Sie z.B. eine Node-Funktion mit der folgenden Logik benötigen: Wenn der Node-Name das Wort "Total" enthält, dann hänge das Dollar-Zeichen an den Node-Wert an; gib andernfalls den unveränderten Node-Wert zurück.

 

Im oben erwähnten Beispiel ist "Node-Name" ein Beispiel für Node-Metadaten. Mit "Metadaten" werden im Allgemeinen Daten bezeichnet, die die Daten selbst beschreiben, also "Daten über Daten". Unter "Node-Metadaten" verstehen wir folglich verschiedene Informationen über den Node, auf den die Funktion angewendet wird, wie z.B. Node-Name, die Länge des Werts oder im Fall von numerischen Datenbanktypen Genauigkeit (precision) und andere.

 

Die folgende Tabelle enthält eine Liste aller möglichen Metadaten, die in einer Node-Funktion verwendet werden können. Beachten Sie, dass einige der unten aufgelisteten Metadaten nur bei Nodes einer bestimmten Art  (z.B. XML oder Datenbankfelder) sinnvoll sind. Daher wird eine Warnung in MapForce angezeigt, wenn Sie versuchen, Metadaten zu verwenden, die mit dem aktuellen Node nicht kompatibel sind.

 

node_name

Liefert den Namen des aktuellen Node. Diese Metadaten gelten für alle Nodes. Bei XML-Daten handelt es sich hierbei um den Namen des aktuellen Elements oder Attributs. Bei CSV-Daten handelt es sich um den Namen des CSV-Felds, bei Datenbankdaten um den Namen der Tabellenspalte.

node_annotation

Liefert den neben einem Datenelement angezeigten Annotationstext, der angezeigt wird, wenn Sie auf die Symbolleisten-Schaltfläche Annotationen anzeigen ic-show-annot klicken. Diese Metadaten gelten für alle Nodes.

node_minLength

Liefert den Wert des minLength Facet des Datentyps des Node. Gilt für XML- und Text-Nodes des entsprechenden Typs.

node_maxLength

Liefert den Wert des maxLength Facet des Datentyps des Node. Gilt für XML- und Text-Nodes des entsprechenden Typs.

node_totalDigits

Liefert den Wert des totalDigits Facet des Datentyps des Node. Gilt für XML-Nodes des entsprechenden Typs.

node_fractionDigits

Liefert den Wert des fractionDigits Facet des Datentyps des Node. Gilt für XML-Nodes des entsprechenden Typs.

node_length

Liefert die Länge des Datentyps des Node. Gilt für Datenbankfelder des entsprechenden Typs.

node_precision

Liefert die Genauigkeit (precision) des Datentyps des Node. Gilt für Datenbankfelder des entsprechenden Typs.

node_scale

Liefert die Dezimalstellen (scale) des Datentyps des Node. Gilt für Datenbankfelder des entsprechenden Typs.

 

 

So stellen Sie Metadaten für eine Node-Funktion bereit:

1.Beginnen Sie mit der Erstellung einer neuen Node-Funktion (siehe Erstellen von Standardwerten und Node-Funktionen) oder öffnen Sie eine vorhandene für die Bearbeitung (siehe Bearbeiten und Löschen bestehender Regeln). So wird etwa in der unten gezeigten Funktion der String "$" mit dem Node-Wert verkettet und das Ergebnis an das äußere Mapping zurückgegeben. Sie finden das Mapping dieser Funktion unter dem folgenden Pfad: <Dokumente>\Altova\MapForce2019\MapForceExamples\OrderInUSD.mfd. Um das Mapping der Funktion zu öffnen, klicken Sie in der Zielkomponente auf das mf_ic_node_func_defined-Symbol neben dem Datenelement Rows und klicken Sie im Raster auf die Schaltfläche mf_ic_nodefunc_edit.

mf_nodefunc_16

2.Wählen Sie eine der folgenden Methoden:

 

Klicken Sie auf Node-Angaben hinzufügen.
Klicken Sie mit der rechten Maustaste auf einen leeren Bereich im Mapping und wählen Sie im Kontextmenü den Befehl Input-Komponente einfügen.
Klicken Sie auf die Symbolleisten-Schaltfläche Komponente einfügen mf_ic_udf_input .
Klicken Sie im Menü Funktion auf Input-Komponente einfügen.

mf_nodefunc_17

3.Wählen Sie im Dialogfeld die gewünschten Metadaten aus (zB. "node_name").

 

Anmerkung:Wenn Sie einen Metadatenparameter auswählen, um ihn einzufügen, analysiert MapForce alle aktuell im Mapping erweiterten Nodes, an denen die Funktion bereits angewendet wird, und ermittelt, ob der Metadatenparameter von diesen Nodes unterstützt wird. Wenn er nicht unterstützt wird, wird im Dialogfeld eine Warnung ungefähr folgenden Inhalts angezeigt "Der ausgewählte Metadatenparameter wird von keinem der aktuell ausgewählten Nodes im Geltungsbereich dieser Funktion unterstützt". Beachten Sie, dass tief verschachtelte Strukturen standardmäßig nicht zur Gänze untersucht werden, um Arbeitsspeicher zu sparen und die Leistung zu verbessern. Wenn die Komponente, auf die die Node-Funktion angewendet werden soll, so tief verschachtelte Strukturen hat, können Sie die entsprechenden Nodes im Mapping erweitern, damit MapForce diese untersucht. In diesem Fall berücksichtigt MapForce diese Nodes, wenn Sie einen neuen Metadatenparameter hinzufügen und die Warnung wird eventuell nicht mehr angezeigt. Beachten Sie, dass eine Verbindung vorhanden sein muss, damit die Node-Funktion angewendet wird; die Erweiterung nicht verbundener Datenelemente hat keinen Einfluss darauf.

 

4.Wenn die Metadaten für den Node, auf den die Funktion angewendet werden soll, nicht unterstützt werden, haben Sie folgenden Möglichkeiten:
a.Sie können das Kontrollkästchen Leere Sequenz aus Input zurückgeben aktivieren, wenn die Node-Funktion angewendet werden soll und vom Metadatenparameter eine leere Sequenz zurückgegeben werden soll. Eine leere Sequenz ist nicht mit einem leeren String zu verwechseln. Normalerweise müssen sie diese mit Hilfe von Sequenzfunktionen wie substitute-missing oder exists oder anderen Komponententypen weiter verarbeiten. Achtung: Die leere Sequenz muss behandelt werden, da sonst möglicherweise gar kein Wert von der Funktion zurückgegeben wird.
b.Sie können das Kontrollkästchen Node-Funktion nicht anwenden aktivieren, wenn die Node-Funktion gar nicht angewendet werden soll, wenn diese Metadaten vom Node nicht unterstützt werden.

 

5.Klicken Sie auf OK. Daraufhin wird zusätzlich zum Standard-Input-Parameter raw_value ein neuer Input-Parameter zum Mapping der Funktion hinzugefügt. Sie können nun den Output-Konnektor des neuen Parameters mit einem Zieldatenelement verbinden, wo Sie diese Metadaten benötigen (normalerweise mit dem Input-Konnektor einer Funktion).

© 2019 Altova GmbH