Java-Mapping-API (SAP NetWeaver 2004 und
7.0)
Obwohl die Java-Mapping-API überarbeitet worden ist (siehe: Java-Mapping) und SAP die Verwendung dieser neuen API für neue Java-Mapping-Programme empfiehlt, bleibt die Java-Mapping-API von SAP NetWeaver 2004 und SAP NetWeaver 7.0 weiterhin im Funktionsumfang von SAP NetWeaver enthalten. Die Java-Mapping-Programme, die Sie mit Hilfe der Java-Mapping-API von SAP NetWeaver 2004 oder SAP NetWeaver 7.0 implementiert haben, bleiben also gültig und müssen nicht angepasst werden.

Parametrisierte Java-Mappings werden von der Java-Mapping-API (SAP NetWeaver 2004 und 7.0) nicht unterstützt.
In benutzerdefinierten Funktionen von Message-Mapping-Programmen greifen Sie zudem weiterhin auf die Konstanten der Mapping-Laufzeit über die Java-Mapping-API von SAP NetWeaver 2004 / SAP NetWeaver 7.0 zu.
Beachten Sie unbedingt die Einführungshinweise und Einschränkungen unter Java-Mapping. Sie sind auch für die Java-Mapping-API von SAP NetWeaver 2004 / SAP NetWeaver 7.0 gültig.
Um ein Java-Mapping mit der Java-Mapping-API von SAP NetWeaver 2004 / SAP NetWeaver 7.0 zu programmieren, müssen Sie eine Java-Klasse definieren, die das Java-Interface com.sap.aii.mapping.api.StreamTransformation implementiert. Dieses Interface hat zwei Methoden:
...
public void execute(java.io.InputStream in, java.io.OutputStream out)
Die Integration Engine ruft zur Laufzeit diese Methode auf, um ein Mapping auszuführen. Diese Methode erhält einen Input-Stream für das Ausgangsdokument und einen Output-Stream für das Zieldokument als Parameter. Diese Streams sind typischerweise XML-Dokumente. Sie können aus dem Input-Stream die zu konvertierenden Teilstrukturen einlesen und in den Output-Stream das konvertierte Zieldokument ausgeben.
public void setParameter(java.util.Map param)
Die Integration Engine übergibt mit dieser Methode Parameter an das Mapping-Programm. Sie wertet diese Parameter zur Laufzeit in der Methode execute() aus. Damit kann der Ablauf des Mapping gesteuert werden.
Das übergegebene Objekt, das das Java-Interface java.util.Map implementiert, enthält sieben Schlüssel/Wert-Paare als Parameter. Diese korrespondieren zu entsprechenden Feldern im Message-Header. Von der Konstante MAPPING_TRACE abgesehen, sind die Wertobjekte vom Typ java.lang.String. Die Schlüsselobjekte sind in der Klasse com.sap.aii.mapping.api.StreamTransformationConstants definiert:
String-Konstanten der Mapping-Laufzeit
Konstante |
Bedeutung |
Relevant für PCK |
MESSAGE_CLASS |
Klassifizierung der Message. Mögliche Werte:
ApplicationMessage:
ApplicationResponse:
SystemAck, ApplicationAck, SystemError, ApplicationError: |
Ja |
VERSION_MAJOR |
Version des XI Message-Protokolls. Beispiel: Für das XI 3.0 Message-Protokoll ist VERSION_MAJOR = 3 und VERSION_MINOR = 0. |
Nein Das PCK unterstützt nur das Message-Protokoll XI 3.0. |
VERSION_MINOR |
|
Nein |
PROCESSING_MODE |
Der Modus einer Message kann synchron oder asynchron sein. Entsprechend kann diese Konstante den Wert synchronous oder asynchronous haben. |
Ja |
MESSAGE_ID |
Die Message-ID. Sie kann sich während einer Kommunikation ändern: Response-Messages bekommen eine neue Message-ID. Wenn aus einer Message neue hervorgehen (Kopieren der Message bei mehreren Empfängern), bekommen die neuen Messages neue Message-IDs. |
Ja |
REF_TO_MESSAGE_ID |
ID einer referenzierten Message, die semantisch zu dieser Message gehört. Beispielsweise ‚merkt’ sich eine Response-Message über dieses Feld zu welcher Request-Message sie gehört. |
Ja |
CONVERSATION_ID |
Dieses Feld ist nicht obligatorisch in
der Message enthalten und erlaubt die Verwendung einer ID zum Zwecke der
Gruppierung von zusammengehörenden Messages. Dieses Feld ist nicht dazu
gedacht, eine Serialisierung von Messages zu realisieren und hat nichts
mit dem Serialisierungskontext (
|
Ja |
TIME_SENT |
Zeitstempel, der angibt, wann die Message beim Sender abgeschickt wurde. Das Format des Zeitstempels ist: YYYY-MM-DDTHH:MM:SSZ Der Buchstabe ‚T’ trennt das Datum von der Zeit, die in der Regel in UTC angegeben ist. Falls es sich um eine lokale Zeit handelt, entfällt das abschließende ‚Z’. |
Ja |
INTERFACE |
Name des Sender-Interfaces. Sie sollten ab SAP XI 3.0 diese Konstante anstelle von der bisherigen Konstante SENDER_NAME verwenden. |
Ja |
INTERFACE_NAMESPACE |
Namensraum des Sender-Interfaces. Sie sollten ab SAP XI 3.0 diese Konstante anstelle von der bisherigen Konstante SENDER_NAMESPACE verwenden. |
Ja |
SENDER_PARTY |
Kommunikationspartner, der die Message verschickt hat |
Ja Siehe auch: |
SENDER_PARTY_AGENCY |
Vergebende Agentur zum Sender der Message |
Ja |
SENDER_PARTY_SCHEME |
Verwendetes Identifikationsschema des Senders |
Ja |
SENDER_SERVICE |
Service auf Senderseite, der die Message verschickt hat. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln. Sie sollten ab SAP XI 3.0 diese Konstante anstelle von der bisherigen Konstante SENDER_SYSTEM verwenden. |
Ja Siehe auch: |
RECEIVER_NAME |
Name des Empfänger-Interfaces. |
Ja |
RECEIVER_NAMESPACE |
Namensraum des Empfänger-Interfaces. |
Ja |
RECEIVER_PARTY |
Kommunikationspartner, der die Message empfangen soll |
Ja Siehe auch: |
RECEIVER_PARTY_AGENCY |
Vergebende Agentur zum Empfänger der Message |
Ja |
RECEIVER_PARTY_SCHEME |
Verwendetes Identifikationsschema des Empfängers |
Ja |
RECEIVER_SERVICE |
Service auf Empfängerseite, der die Message empfangen soll. Dabei kann es sich beispielsweise um den Namen eines Business-Systems handeln. Sie sollten ab SAP XI 3.0 diese Konstante anstelle von der bisherigen Konstante RECEIVER_SYSTEM verwenden. |
Ja Siehe auch: |
MAPPING_TRACE |
Gibt ein AbstractTrace-Objekt zurück, mit dem Sie Meldungen in das Monitoring schreiben können. |
Nein |
1. Implementieren Sie Ihr Java-Mapping, beispielsweise im SAP NetWeaver Developer Studio (siehe auch: Laufzeitumgebung (Java-Mappings)).
2. Importieren Sie Ihre Java-Bibliotheken als Archiv in das Enterprise Services Repository (siehe Importierte Archive (XSLT/Java)).
Das folgende Beispiel zeigt das Setzen und Auswerten der beiden Parameter MAPPING_TRACE und RECEIVER_NAME in einem Java-Mapping-Programm:
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import java.util.HashMap;
import com.sap.aii.mapping.api. AbstractTrace;
import com.sap.aii.mapping.api.StreamTransformation;
import com.sap.aii.mapping.api.StreamTransformationConstants;
public class JavaMapping implements StreamTransformation {
private Map param
= null;
private AbstractTrace trace =
null;
public void setParameter (Map
param) {
this.param = param;
if (param == null) {
this.param = new
HashMap();
}
}
public void execute(InputStream in, OutputStream out) {
try {
trace
= (AbstractTrace)param.get(
StreamTransformationConstants.MAPPING_TRACE );
trace.addInfo(‘...’);
// ...
String receiverName = (String)param.get(
StreamTransformationConstants.RECEIVER_NAME);
// ...
}
}
}
Siehe auch: Spezieller Zugriff auf Mapping-Laufzeitkonstanten.