Altova MapForce 2024 Professional Edition

In diesem Kapitel werden verschiedene Szenarien beschrieben, in denen sich Standardwerte und Node-Funktionen als nützlich erweisen können. Um diese Szenarien auszuprobieren, benötigen Sie das folgende Beispielmapping: Tutorial\MissingFields.mfd. Unsere Ausgangsbasis bildet das unten gezeigte Mapping.

mf_nodefunc_01

Einige der Nodes in der Quelldatei sind leer. Zu diesem Zeitpunkt sieht die Ausgabedatei folgendermaßen aus:

 

T-Shirt

Shirt

Pants

Jacket

25.3

70.3

 

57.5

20

60

 

40

Available in black, blue, and red

 

Pants                                        Limited stock

 

 

In den unten beschriebenen Szenarien wird gezeigt, wie Sie für alle Nodes vom Typ string einen Standardwert definieren, Standardwerte für verschiedene Datentypen festlegen, Regeln für bestimmte Nodes blockieren, geerbte Regeln außer Kraft setzen, eine Node-Funktion definieren und diese Funktion auf Basis von Bedingungen auf die entsprechenden Nodes anwenden und Standardwerte auf nicht verbundene Nodes anwenden.

 

Szenario 1: Definieren eines Standardwerts für alle String-Nodes

Einige der Nodes vom Typ string sind in unserem Mapping leer. Wir möchten nun anstelle der leeren Strings den Standardwert n/a definieren. Gehen Sie folgendermaßen vor:

 

1.Klicken Sie mit der rechten Maustaste auf das Element Article und wählen Sie im Kontextmenü die Option Node-Funktionen und Standardwerte | Output-Node-Funktionen und Standardwerte.

2.Klicken Sie im Node-Funktionsfenster auf die Option mf_ic_add_default und geben Sie in das Feld Standardwert n/a ein (siehe Abbildung unten).

mf_nodefunc_02

Die Elemente Name und Description haben in der Komponente ArticlesOfClothing den Typ string, weshalb der Standardwert für beide davon verwendet werden kann. Daher wird nun neben diesen Nodes das Symbol mf_ic_node_func_applied angezeigt. Da Standardwerte nur auf leere Werte angewendet werden, haben nur zwei Field4-Nodes in der Ausgabe den Wert n/a erhalten (unten gelb markiert).

 

T-Shirt

Shirt

Pants

Jacket

25.3

70.3

 

57.5

20

60

 

40

Available in black, blue, and red

n/a

Limited stock

n/a

 

Szenario 2: Definieren der Standardwerte für unterschiedliche Datentypen

Sie können nicht nur für einen einzigen bestimmten Typ einen Standardwert definieren, sondern zusätzlich auch einen weiteren Standardwert für einige andere Datentypen definieren. So hat etwa einer der Artikel in Price und ItemsInStock leere Werte, wobei beide den Typ "Zahl" haben. Wir möchten nun diese leeren Werte durch den Wert 0 ersetzen. Gehen Sie folgendermaßen vor:

 

1.Wiederholen Sie die Schritte aus Szenario 1. Dadurch wird für alle Nodes vom Typ string, die einen leeren Wert haben, ein Standardwert hinzugefügt.

2.Fügen Sie einen weiteren Standardwert hinzu und wählen Sie als Datentyp numeric aus.

3.Geben Sie in das Feld Standardwert 0 ein (siehe Abbildung unten).

mf_nodefunc_03

Die Ausgabe sieht nun folgendermaßen aus (Beachten Sie die markierten Bereiche):

 

T-Shirt

Shirt

Pants

Jacket

25.3

70.3

0

57.5

20

60

0

40

Available in black, blue, and red

n/a

Limited stock

n/a

 

Anmerkung:Gemäß der XML Schema-Spezifikation ist integer von decimal abgeleitet. Beide gehören zum numerischen Datentyp. In unserem Beispiel wird die Regel sowohl auf das Element ItemsInStock als auch auf das Element Price angewendet, wenn Sie im Node-Funktionsfenster als Datentyp numeric auswählen. Wenn Sie als Datentyp decimal auswählen, wird die Regel dennoch auf beide Elemente angewendet. Wenn Sie jedoch als Datentyp integer auswählen, wird die Regel nur auf das Element ItemsInStock angewendet.

 

Szenario 3: Blockieren von Regeln für bestimmte Nodes

In diesem Szenario sollen auf alle Nodes vom Typ "string" und "numeric" Standardwerte angewendet werden, aber für das Datenelement Price soll kein Standardwert definiert werden. Wiederholen Sie zu diesem Zweck die Schritte aus Szenario 2, klicken Sie anschließend auf das Element Price und deaktivieren Sie das Kontrollkästchen Regeln von Vorfahren erben Das Datenelement Price erbt im Mapping unten nun nicht mehr die Regeln von seinem übergeordneten Datenelement Article. Daher wird neben dem Element Price das Symbol mf_ic_node_function_blocked angezeigt (siehe Abbildung unten).

mf_nodefunc_04

In der Ausgabe unten sehen Sie, dass der leere Wert des Elements Price, für den die Regel blockiert wurden, auf Field2 gemappt wurde (Beachten Sie die markierten Bereiche).

 

T-Shirt

Shirt

Pants

Jacket

25.3

70.3

    

57.5

20

60

0

40

Available in black, blue, and red

n/a

Limited stock

n/a

 

Szenario 4: Außerkraftsetzen von geerbten Regeln

In diesem Szenario sollen für alle Nodes vom Typ "string" und "numeric" Standardwerte definiert werden. Nur für das Element Price soll jedoch ein Standardwert von 100 definiert werden. Wiederhole Sie dazu die Schritte aus Szenario 2, klicken Sie in der Komponente ArticlesOfClothing auf Price, fügen Sie einen neuen Standardwert hinzu und geben Sie 100 ein, wie in der Abbildung unten gezeigt. Die geerbten Regeln haben einen a gelben Hintergrund.

mf_nodefunc_05

Die direkt für einen Node definierte Regel hat Vorrang vor Regeln, die auf einer übergeordneten Ebene erstellt wurden. Die Ausgabe sieht daher folgendermaßen aus (Beachten Sie den markierten Bereich):

 

T-Shirt

Shirt

Pants

Jacket

25.3

70.3

100

57.5

20

60

0

40

Available in black, blue, and red

n/a

Limited stock

n/a

 

Wenn Sie für ein und denselben Node mehr als eine Regel definiert haben, wird die oberste Regel des Rasters auf den aktuellen Node angewendet. Sie können die Reihenfolge dieser Regeln ändern, indem Sie die Regeln im Raster an eine andere Stelle ziehen.

 

Szenario 5: Erstellen einer Node-Funktion und Anwendung dieser Funktion auf Basis von Bedingungen

In diesem Szenario wird erläutert, wie Sie eine Node-Funktion erstellen und diese auf Basis von Bedingungen anwenden. Mit Hilfe der Funktion concat werden wir Text zu Nodes vom Typ string hinzufügen. Gehen Sie folgendermaßen vor:

 

1.Klicken Sie mit der rechten Maustaste auf das Element Article und wählen Sie im Kontextmenü die Option Node-Funktionen und Standardwerte | Output-Node-Funktionen und Standardwerte.

2.Fügen Sie durch Klick auf das Symbol mf_ic_add_nodefunc eine Node-Funktion hinzu und erstellen Sie die unten gezeigte Funktion.

mf_nodefunc_06

Wir haben die Nodes zu diesem Zeitpunkt noch nicht gefiltert. Die Ausgabe sieht folgendermaßen aus (Beachten Sie die markierten Bereiche):

 

A Shirt (XXS, L-XXL)            

Shirt (XXS, L-XXL)

Pants (XXS, L-XXL)

Jacket (XXS, L-XXL)

25.3

70.3

 

57.5

20

60

 

40

Available in black, blue, and red (XXS, L-XXL)

 

Limited stock (XXS, L-XXL)

 

 

In der Ausgabe sehen Sie, dass unsere Regel auf beide Elemente vom Typ string angewendet wurde: Name und Description. Die Regel soll nun nur auf das Element Name angewendet werden. Gehen Sie dazu zum Node-Funktionsfenster und klicken Sie in der Spalte Datentyp und Filter auf das Symbol mf_ic_ellipsis. Daraufhin wird das Dialogfeld Node-Funktionen und Standardwerte filtern, in dem Sie die Datentypen ändern und Filteroptionen definieren können, aufgerufen. Definieren Sie den Filter, wie in der Abbildung unten gezeigt.

mf_nodefunc_08

Die Ausgabe sieht nun folgendermaßen aus:

 

A Shirt (XXS, L-XXL)            

Shirt (XXS, L-XXL)

Pants (XXS, L-XXL)

Jacket (XXS, L-XXL)

25.3

70.3

 

57.5

20

60

 

40

Available in black, blue, and red

 

Limited stock

 

 

Filtern nach Node-Typ

Mit Hilfe dieser Option können Sie den im Dialogfeld Node-Funktionen und Standardwerte filtern ausgewählten Datentyp einschränken. Sie haben z.B. ausgewählt, dass Ihre Node-Funktion auf numerische Nodes angewendet wird. Anschließend können Sie einen Subtyp (z.B. Filtern nach/Node-Name: xs:decimal) definieren.

 

Filtern mittels Regular Expressions

Für komplexere Filteroptionen können Regular Expressions verwendet werden (z.B. für Entsprechungen mit mehreren Node-Namen oder Typnamen). Nähere Informationen dazu finden Sie unter Regular Expressions. Beachten Sie die folgenden Punkte:

 

Die Anker ^ und $ sind implizit und dürfen nicht in das Feld Suchen nach eingegeben werden.

Die Berücksichtigung der Groß- und Kleinschreibung kann über das Kontrollkästchen GROSS/klein beachten definiert werden. Das i-Flag wird daher nicht unterstützt.

Dass Übereinstimmungen über mehrere Zeilen erfolgen, ist bei der Filterung von Nodes nicht sinnvoll. Das m-Flag wird daher nicht unterstützt.

 

Szenario 6: Erstellen von Standardwerten für nicht verbundene Nodes

Sie können in MapForce Standardwerte auf nicht verbundene Nodes anwenden, jedoch nur, wenn der übergeordnete Node und/oder ein gleichrangiger Node verbunden ist. Betrachten Sie dazu das folgende Beispiel:

mf_nodefunc_07

Wir haben im obigen Mapping in der Komponente ArticlesInfo einen Standardwert für den Node Field4 definiert. Field4 hat zu diesem Zeitpunkt keine Input-Verbindung. Deer übergeordnete Node und gleichrangige Nodes sind verbunden. Wenn Field4 unverbunden bleibt, werden alle Description-Werte in der Ausgabe durch den Standardwert überschrieben (siehe unten). Wenn Sie Description und Field4 verbinden, wird der Standardwert nur auf leere Sequenzen angewendet.

 

T-Shirt

Shirt

Pants

Jacket

25.3

70.3

   

57.5

20

60

 

40

n/a

n/a

n/a

n/a

 

Anmerkung:Standardwerte werden nicht auf unverbundene Nodes in JSON-Komponenten angewendet.

 

© 2018-2024 Altova GmbH