
Sie können Mapping-Programme in Java implementieren. Die Java-Mapping-API gibt dabei nur einen Rahmen vor, ohne eine bestimmte Art der Implementierung vorauszusetzen. Es steht beispielsweise das Java API for XML Processing (JAXP) zur Verarbeitung von XML-Dokumenten zur Verfügung. Das JAXP unterstützt das Document Object Model (DOM) und das Simple API for XML (SAX) . Damit haben Sie hohe Flexibilität zur Programmierung von Mappings mit Java.
Java-Mapping-Programme dürfen nicht zustandsbehaftet sein. Sie dürfen also während eines Java-Mappings zum Beispiel keine Daten in eine Datenbanktabelle schreiben. Process-Integration-Laufzeit kann solche Seiteneffekte nicht mitverfolgen. Deshalb könnten bei dem Versuch, eine noch nicht vom Empfänger angenommene Message wiederholt zu verschicken, schreibende Datenbankzugriffe bei einem Java-Mapping ungewollt doppelt ausgeführt werden.
Bei der Verwendung von JRE-Klassen in Ihren Java-Mapping-Programmen gelten die gleichen Programmiereinschränkungen wie für Enterprise Java Beans (EJBs). Eine genaue Beschreibung dieser Einschränkungen finden Sie in der jeweils gültigen EJB-Spezifikation. Beachten sie dazu unbedingt die Hinweise im Abschnitt Funktionsumfang unter Laufzeitumgebung (Java-Mappings) .
Klassen der Java-Mapping-API (Paket com.sap.aii.mapping.api)
Klasse(n) |
Verwendung |
AbstractTransformation |
Um ein Java-Mapping-Programm zu implementieren, müssen Sie eine Klasse definieren, die diese abstrakte Klasse erweitert und innerhalb Ihrer Klasse eine Methode transform() implementieren. Über die Methode getTrace() der Klasse AbstractTransformation können Sie sich außerdem einen Trace-Objekt vom Typ AbstractTrace zurückgeben lassen (siehe unten). |
AbstractTrace |
Um Informationen aus einem Mapping-Programm in den Laufzeit-Trace schreiben zu können, verwenden Sie ein Objekt vom Typ AbstractTrace (siehe: AbstractTrace-Objekt ). Die Methode getTrace() der Klasse AbstractTransformation gibt ein solches Objekt zurück. |
TransformationInput TransformationOutput |
Parameter der zu implementierenden Methode transform() , um auf die Ausgangs-Message zuzugreifen (über TransformationInput ) und um die Ziel-Message zu erzeugen (Ausgabe nach TransformationOutput ). Über entsprechende Methoden dieser Klassen greifen Sie auf die verschiedenen Bestandteile der Message zu. Zurückgegeben wird jeweils ein Objekt vom Typ der folgenden Klassen. |
InputPayload OutputPayload |
Objekt zum Lesen ( InputPayload ) und zum Schreiben der Payload ( OutputPayload ). Sie greifen auf die Payload über einen Stream zu, so dass der eigentliche Methode des Zugriffs Ihnen überlassen bleibt. |
InputParameters OutputParameters |
Um auf Parameter des Java-Mapping-Programms zuzugreifen, verwenden Sie die Methoden dieser Klassen. Siehe auch: Parametrisierte Mapping-Programme |
InputHeader OutputHeader |
Um auf Header-Felder der Ausgangs-Message lesend zuzugreifen ( InputHeader ) beziehungsweise den Inhaltstyp der Ziel-Message zu setzen ( OutputHeader ), arbeiten Sie mit diesen Klassen. |
DynamicConfiguration DynamicConfigurationKey |
Klassen für den lesenden und schreibenden Zugriff auf adapter-spezifische Message-Attribute (siehe: Java-Mapping von adapterspezifischen Attributen ). |
InputAttachments OutputAttachments |
Klassen, um im Mapping-Programm auf Attachments der Message zugreifen zu können. InputAttachments erlaubt den Zugriff auf die Attachments, die der Sender an die Ausgangs-Message gehängt hat (beziehungsweise die zur Performance-Optimierung automatisch aus der Payload ausgelagert worden sind (MTOM)). Mit OutputAttachments können Sie die Attachments der Ziel-Message schreiben (es gibt auch eine Methode, um alle Attachments der Ausgangs-Message für die Ziel-Message zu übernehmen). |
Die folgende Grafik gibt einen Überblick über den Zugriff auf die Bestandteile einer Message über die Parameter TransformationInput und TransformationOutput :

Sie müssen die Java-Mapping-API in Ihre Entwicklungsumgebung einbinden (siehe: Laufzeitumgebung (Java-Mappings) ). Die Laufzeitumgebung besteht zudem aus weiteren Klassen, die Entwickler je nach Bedarf in ihre Implementierung einbinden können.
Zusätzlich gibt es APIs für folgende Zwecke:
Werte-Mappings siehe: Werte-Mappings ausführen
Lookups in Mapping-Programmen programmieren Siehe: Mapping-Programme um Lookups erweitern
Weitere Informationen zur Java-Mapping-API finden Sie im SAP Developer Network unter der Adresse https://www.sdn.sap.com/irj/sdn/javadocs (SDN-User erforderlich).
Die vorherige Java-Mapping-API kann noch verwendet werden (Siehe: Java-Mapping-API (SAP NetWeaver 2004 und 7.0) ).
Einschränkungen
Bei der Verwendung von statischen Variablen in Java-Mappings sind folgende Punkte zu beachten:
Mappings können parallel ausgeführt werden. Eventuell greifen also mehrere Instanzen eines Mappings zugleich lesend oder schreibend auf ein statisches Feld zu.
Wenn Mapping-Programme mehrfach ausgeführt werden, kann der Inhalt eines statischen Feldes verloren gehen. Hierfür gibt es folgende Gründe:
Der Inhalt eines statischen Feldes geht verloren, wenn die betroffene Java-Klasse neu geladen wird. Dies ist zum Beispiel nach einem Cache-Refresh der Fall.
Besteht die Mapping-Laufzeit aus einem Cluster, so werden die Klassen der Mappings auf jedem Knoten des Clusters separat geladen. Jeder Knoten besitzt seine eigenen statischen Felder.
Statische Felder könnten für Konstanten und als Puffer verwendet werden, unter Beachtung der oben genannten Punkte.