Prioritätskontext Node/Datenelement

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

Startseite >  Erstellen von Mappings > Mapping-Regeln und -Strategien >

Prioritätskontext Node/Datenelement

Wenn Sie eine Funktion auf unterschiedliche Datenelemente in einem Schema oder einer Datenbank anwenden, muss MapForce den Context Node kennen. Alle anderen Datenelemente werden dann relativ dazu verarbeitet. Dazu wird das gewünschte Datenelement (oder der Node) als Prioritätskontext definiert.

 

Mit Hilfe des Prioritätskontexts wird definiert, welche Ausführung beim Mapping nicht miteinander in Zusammenhang stehender Datenelemente vorgezogen wird.

 

Mappings werden immer von oben nach unten ausgeführt; Wenn Sie eine Schleife/Suche durch zwei Tabellen ausführen, so wird eine Schleife nach der anderen ausgeführt. Beim Mappen von Elementen, die nicht miteinander in Zusammenhang stehen, weiß  MapForce nicht, welche Schleife zuerst ausgeführt werden soll, wenn kein Prioritätskontext definiert ist, und wählt daher automatisch die erste Tabelle oder Datenquelle aus.

 

Lösung:

Entscheiden Sie, welche Tabelle oder Datenquelle zuerst verarbeitet/durchsucht werden soll, und setzen Sie den Prioritätskontext auf den Konnektor zu diese Tabelle.

 

Die unten gezeigt Datei CompletePO.mfd finden Sie im Ordner ...\MapForceExamples.

 

Beachten Sie, dass es in diesem Beispiel mehrere Quellkomponenten gibt. ShortPO, Customers und Articles sind Schemas, die mit XML-Instanzdateien verknüpft sind. Die Daten aus diesen Komponenten werden nun auf das Schema / die XML-Datei CompletePO gemappt. Der Prioritätskontext wird durch einen Kreis gekennzeichnet.

 

 

Das Element CustomerNr in ShortPO wird mit dem Datenelement Number in der Datenbank verglichen.
CustomerNr wurde als Prioritätskontext definiert und in den a-Parameter der equal-Funktion gesetzt.
Anschließend wird die Datei Customers (einmal) nach derselben Nummer durchsucht. Der b-Parameter enthält das Datenelement Number aus der Datenbank.
Wird die Nummer gefunden, wird das Ergebnis an den Boolschen Parameter der Filter-Funktion übergeben.
Der node/row-Parameter übergibt die Customer-Daten an "on-true", wenn der Boolesche Parameter "true" ist, d.h. wenn dieselbe Nummer gefunden wurde.
Anschließend wird der Rest der Kundendaten übergeben: Die Datenelemente Number, FirstName, LastName werden alle mit den entsprechenden Datenelementen im Zielschema verbunden.

 

Wenn Sie den Parameter b der equal-Funktion als Prioritätskontext definieren würden, hätte dies zur Folge dass:

MapForce die ersten Nummer in den b-Parameter lädt
diese mit der CustomerNr im Parameter a vergleicht,
wenn sie nicht gleich ist, die nächste Nummer in b lädt, diese mit a vergleicht und
durch alle Number-Elemente in der Datei iteriert, um die entsprechende Nummer in ShortPO zu finden.

 

context-switch-prof


© 2019 Altova GmbH