Multi-Mappings
Ein Multi-Mapping ist ein Mapping-Programm, das sich nicht auf die Transformation einer Ausgangs-Message auf eine Ziel-Message beschränkt. Sie haben die folgenden Möglichkeiten:
●
Sie können ein
Multi-Mapping im
Transformationsschritt
eines Integrationsprozesses
verwenden. In diesem Fall unterstützt die Mapping-Laufzeit 1:n-, n:1- und
n:m-Transformationen. Sie können eine beliebige Anzahl von Ausgangs-Messages
auf eine beliebige Anzahl von Ziel-Messages abbilden.
● Sie können ein Multi-Mapping verwenden, um während des logischen Routings eine Message auf mehrere unterschiedliche (und meist kleinere) Messages abzubilden. In diesem Fall ist also nur eine 1:n-Transformation möglich.
Wie bei allen Mapping-Programmen müssen Sie auch ein Multi-Mapping-Programm einem Operation-Mapping zuordnen, das Sie später im Integration Directory verwenden, um die Mapping-Programme für Ausgangs- und Zieloperationen zu konfigurieren.
Multi-Mappings beziehen sich auf mehrere Message-Strukturen. Um diese Strukturen aufeinander abzubilden, nimmt die Mapping-Laufzeit alle Ausgangs-Messages eines Multi-Mappings in eine gemeinsame Ausgangsstruktur und alle Ziel-Messages eines Multi-Mappings in eine gemeinsame Zielstruktur auf. Auf diese Weise reduziert sich die Anforderung, mehrere Messages aufeinander abzubilden, darauf, eine Ausgangsstruktur auf eine Zielstruktur abzubilden.
Grundsätzlich können Sie mit allen Mapping-Programm-Typen ein Multi-Mapping implementieren. Der folgende Abschnitt geht zur Vereinfachung davon aus, dass Sie ein Multi-Mapping als Message-Mapping implementieren.
Gegeben seien folgende Message-Typen, die Sie aufeinander abbilden wollen:
Message-Typen für Ausgangsstruktur
Message-Typ (Ausgangsstruktur) |
Message-Typ (Zielstruktur) |
OrderHeader (1) |
Order (1) |
OrderItem (0..unbounded) |
OrderInfo (1) |
Sie können diese Message-Typen auf der Registerkarte Messages im Mapping-Editor angeben. Außerdem können Sie pro Message-Typ eine Häufigkeit festlegen. Sobald die Ausgangs- oder die Zielstruktur aus mehreren Messages bestehen kann, baut der Mapping-Editor sowohl für die Ausgangs- als auch für die Zielstruktur jeweils eine übergeordnete Struktur auf, in die die Ausgangs- und Ziel-Messages aufgenommen werden. Das Wurzelelement ist in so einem Fall immer <Messages>, für jede Ausgangs- beziehungsweise Ziel-Message fügt der Mapping-Editor ein Element <MessageN> ein, wobei N die Position der Message laut Registerkarte Messages ist. Eine Message-Instanz zu den oben angegebenen Messages sieht folgendermaßen aus:

Für jedes Message-Schema (hier: für jeden Message-Typ) gibt es also ein <MessageN>-Element. Message-Typ <OrderItem> kann in der Message-Instanz beliebig oft als Unterelement von <Message2> vorkommen. Welche Elemente in dem Multi-Mapping aufeinander abgebildet werden, ist über die Nummern angedeutet.
Fügen Sie in Ihrem Mapping immer den Namensraum http://sap.com/xi/XI/SplitAndMerge zum Root-Tag hinzu.

Beispiel für ein Multi-Mapping:
<?xml version="1.0" encoding="UTF-8"?>
<sm:Messages xmlns:sm="http://sap.com/xi/XI/SplitAndMerge">
<Message1>
..</Message1>
<MessageN>
</MessageN>
</sm:Messages>
Zur Laufzeit werden die Message-Instanzen in einem Integrationsprozess gesammelt und in eine Struktur gestellt. Sobald das Mapping-Programm ausgeführt wurde, werden die Messages erneut an verschiedene Message-Instanzen übergeben.
Über ein Operation-Mapping können Sie mehrere Mapping-Programme für die Transformation einer Request- oder Response-Message hintereinander ausführen (beispielsweise, um die Anzahl von erforderlichen Mapping-Programmen in einer Systemlandschaft zu reduzieren). In solchen Fällen besteht ein Operation-Mapping aus mehreren Schritten. Die Schritte werden in der angegebenen Reihenfolge ausgeführt (von oben nach unten). Das Ergebnis des Mapping-Programms aus dem vorhergehenden Schritt wird jeweils an das Mapping-Programm des nachfolgenden Schritts weitergereicht. Jeder Schritt kann auf ein Mapping-Programm verweisen, das eine 1:1-, eine 1:n-, eine n-1- oder eine m:n-Transformation durchführt.
Für Multi-Mappings (1:n-, n:1- oder m:n-Transformationen) gilt in diesem Zusammenhang:
● Der vorhergehende Schritt muss genauso viele Messages erzeugen, die der nachfolgende Schritt erwartet.
● Multi-Mappings arbeiten wie oben dargestellt mit einem Umschlag, um alle Messages in eine Struktur aufzunehmen. Verweist einer der Schritte auf ein Multi-Mapping-Programm, müssen alle weiteren Schritte ebenso mit diesem Umschlag arbeiten.

Das Mapping für eine Request-Message besteht aus zwei Message-Mapping-Programmen: Einer 1:1-Transformation und einer 1:n Transformation. Da das letztere Message-Mapping sowohl für die Ziel-Message als auch für die Ausgangs-Message mit dem Multi-Mapping-Umschlag arbeitet, muss das Message-Mapping für die 1:1-Transformation ebenso ein Transformations-Ergebnis mit einem Multi-Mapping-Umschlag erzeugen.
Wenn Sie im Mapping-Editor mehrere Ausgangs- oder Ziel-Messages angeben, zeigt der Mapping-Editor den oben beschriebenen Aufbau der Ausgangs- und Zielstruktur unmittelbar in der Strukturübersicht an. Der Mapping-Editor unterstützt folgende Message-Schemata für Multi-Mappings:
● (Fault-)Message-Typen
● IDocs, RFCs (Request-, Response- oder Fault-Messages), siehe Import von IDocs und RFCs.
● Message-Strukturen aus externen Definitionen
Sie können darüber hinaus auch Multi-Mappings als externe Mapping-Programme entwickeln, indem Sie das Message-Schema der Request-Message aus einem Operation-Mapping exportieren.
Weitere Informationen:
Multi-Mappings für Integrationsprozesse entwickeln
Multi-Mappings für Message-Splits entwickeln