Altova MapForce 2024 Enterprise Edition

Einige Mapping-Komponenten haben ein optionales Parent-Kontext-Datenelement.

 

Das Argument parent-context ist ein optionales Argument in einigen MapForce Aggregatfunktionen der core-Bibliothek wie z.B. min, max, avg, count. Der parent-context bestimmt in einer Quellkomponente mit mehreren hierarchischen Sequenzen, an welcher Node-Gruppe die Funktion ausgeführt werden soll.

 

Mit Hilfe dieses Datenelements können Sie den Mapping-Kontext, in dem diese Komponente verwendet werden soll, beeinflussen und somit die Mapping-Ausgabe ändern. Die Komponenten, die einen optionalen Parent-Kontext haben, sind: Aggregatfunktionen, Variablen und Join-Komponenten.

 

fn-count

 

Um ein Beispiel dafür zu sehen, wie Sie mit der Änderung des Parent-Kontexts arbeiten können, öffnen Sie das folgende Mapping: <Dokumente>\Altova\MapForce2024\MapForceExamples\ParentContext.mfd.

mf_semantics_11

 

Die XML-Quelldatei im Mapping oben enthält einen einzigen Company-Node, der zwei Office-Nodes enthält. Jeder Office-Noden enthält mehrere Department-Nodes und jeder Department-Node enthält mehrere Person-Nodes. Wenn Sie die XML-Datei in einem XML-Editor öffnen, sehen Sie folgende Aufteilung von Personen nach Büro (Office) und Abteilung (Department):

 

Office

Department

Personenzahl

Nanonull, Inc.

Administration

3

Marketing

2

Engineering

6

IT & Technical Support

4

Nanonull Partners, Inc.

Administration

2

Marketing

1

IT & Technical Support

3

 

Im Mapping werden alle Personen in allen Abteilungen gezählt. Dazu wird die count-Funktion aus der core-Bibliothek verwendet. Wenn Sie auf das Fenster Ausgabe klicken, um eine Vorschau auf das Mapping anzuzeigen, sehen Sie, dass als Ergebnis ein einziger Wert, nämlich 21, erzeugt wird, was der Gesamtanzahl aller Personen in der XML-Quelldatei entspricht.

 

Das Mapping funktioniert folgendermaßen:

 

Das Mapping wird wie gewöhnlich ab dem obersten Node der Zielkomponente (in diesem Beispiel rows) ausgeführt. rows hat keine eingehende Verbindung. Infolgedessen wird zwischen Company (oberstes Datenelement der Quellkomponente) und rows (oberstes Datenelement der Zielkomponente) ein impliziter Mapping-Kontext erstellt.

Das Resultat der Funktion ist ein einziger Wert, da die Quelldatei nur eine Firma (Company) enthält.

Um das Zieldatenelement col1 zu befüllen, führt MapForce die count-Funktion im oben erwähnten impliziten Parent-Kontext aus, d.h. es werden alle Person-Nodes aus allen Büros und allen Abteilungen gezählt.

 

Mit Hilfe des Arguments parent-context der Funktion können Sie den Mapping-Kontext ändern. Dadurch kann z.B. die Anzahl der Personen in jeder einzelnen Abteilung gezählt werden. Ziehen Sie dazu, wie unten gezeigt, zwei weitere Verbindungen:

mf_semantics_12

Im oben gezeigten Mapping wird durch die Verbindung A der Parent-Kontext der count-Funktion in Department geändert, wodurch die Funktion die Anzahl der Personen in jeder einzelnen Abteilung zählt. Beachten Sie, dass die Funktion nun eine Sequenz von Ergebnissen anstatt eines einzigen Ergebnisses zurückgibt, da in der Quelldatei mehrere Abteilungen (Department) vorhanden sind. Aus diesem Grund wurde die Verbindung B erstellt: Für jedes Datenelement in der erzeugten Sequenz wird in der Zieldatei eine neue Zeile (row) erstellt. Die Mapping-Ausgabe hat sich nun entsprechend geändert (Beachten Sie, dass die Zahlen genau der Anzahl der Personen in den einzelnen Abteilungen entspricht):

 

<rows>
  <row>
      <col1>3</col1>
  </row>
  <row>
      <col1>2</col1>
  </row>
  <row>
      <col1>6</col1>
  </row>
  <row>
      <col1>4</col1>
  </row>
  <row>
      <col1>2</col1>
  </row>
  <row>
      <col1>1</col1>
  </row>
  <row>
      <col1>3</col1>
  </row>
</rows>

 

Da im aktuellen Mapping für jede Abteilung (Department) eine Zeile (row) erstellt wird, können Sie durch Ziehen der Verbindungen C und D den Office-Namen und den Abteilungsnamen ebenfalls in die Zieldatei kopieren:

mf_semantics_13

Dadurch wird in der Ausgabe nicht nur die Anzahl der Personen, sondern auch der entsprechende Büro- und Abteilungsname angezeigt.

 

Wenn Sie die Anzahl der Personen in den einzelnen Büros (Office) zählen möchten, verbinden Sie den Parent-Kontext der count-Funktion mit dem Datenelement Office in der Quellkomponente.

mf_semantics_14

Mit den oben gezeigten Verbindungen gibt die count-Funktion ein Ergebnis für jedes Büro zurück. Die Quelldatei enthält zwei Büros, daher gibt die Funktion nun zwei Sequenzen zurück. Infolgedessen enthält die Ausgabe zwei Zeilen (row), von denen jede die Anzahl der Personen in diesem Büro enthält:

 

<rows>
  <row>
      <col1>15</col1>
      <col2>Nanonull, Inc.</col2>
  </row>
  <row>
      <col1>6</col1>
      <col2>Nanonull Partners, Inc.</col2>
  </row>
</rows>

© 2017-2023 Altova GmbH