Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Spezieller Zugriff auf Mapping-Laufzeitkonstanten Dokument im Navigationsbaum lokalisieren

Schlüssel-Werte-Paare

In manchem Mapping-Programmen ist es notwendig, auf Felder des Message-Headers zugreifen zu können. Die Mapping-Laufzeit speichert zu diesem Zweck die Werte der Felder als Schlüssel‑Werte-Paare ab:

Beispiele für Schlüssel-Werte-Paare in der Map für Laufzeitkonstanten

Schlüssel

Wert

„MessageClass“

„ApplicationMessage“

„ProcessingMode“

„synchronous“

„ReceiverNamespace“

„http://com.sap/xi/example“

Die Schlüssel sind von den Feldnamen der Felder im Message-Header abgeleitet.

Regelfall: Zugriff über String-Konstanten statt über Schlüssel

Um die Felder des Message-Headers zur Laufzeit lesen zu können, müssen Sie auf die Map für die Laufzeitkonstanten zugreifen. Der Zugriff über die oben angegebenen Schlüssel würde allerdings den Programmkode ungültig machen, falls sich ein Schlüssel in Zukunft ändern sollte. Aus diesem Grund bietet die Mapping-API String-Konstanten an, mit denen Sie an Stelle von den Schlüsseln auf die Map zugreifen:

String-Konstanten für den Zugriff auf die Laufzeitkonstanten in der Map

String-Konstante

Schlüssel

MESSAGE_CLASS

„MessageClass“

VERSION_MAJOR

„VersionMajor“

VERSION_MINOR

„VersionMinor“

PROCESSING_MODE

„ProcessingMode“

MESSAGE_ID

„MessageId“

REF_TO_MESSAGE_ID

„RefToMessageId“

CONVERSATION_ID

„ConversionId“

TIME_SENT

„TimeSent“

INTERFACE

„Interface“

INTERFACE_NAMESPACE

„InterfaceNamespace“

SENDER_PARTY

„SenderParty“

SENDER_PARTY_AGENCY

„SenderPartyAgency“

SENDER_PARTY_SCHEME

„SenderPartyScheme“

SENDER_SERVICE

„SenderService“

RECEIVER_NAME

„ReceiverName“

RECEIVER_NAMESPACE

„ReceiverNamespace“

RECEIVER_PARTY

„ReceiverParty“

RECEIVER_PARTY_AGENCY

„ReceiverPartyAgency“

RECEIVER_PARTY_SCHEME

„ReceiverPartyScheme“

RECEIVER_SERVICE

„ReceiverService“

MAPPING_TRACE

„MappingTrace“

Wie der Zugriff funktioniert, ist davon abhängig, wo Sie die Laufzeitkonstanten abfragen wollen:

·      Innerhalb eines Java-Mappings müssen Sie eine Methode setParameter kodieren, um auf die Map zugreifen zu können. Siehe Beispiel unter Java-Mapping.

·      Innerhalb einer benutzerdefinierten Funktion eines Message-Mappings können Sie entweder über die Methode getTransformationParameters() des Container-Objekts oder über die Methode getParameters() des GlobalContainer-Objekts auf die Map zugreifen. Siehe: Das Container-Objekt.

Spezialfall: Zugriff auf Laufzeitkonstanten über Schlüssel

Es gibt einige wenige Fälle, in denen es sich nicht vermeiden lässt, die Schlüssel für den Zugriff auf die Felder des Message-Header zu verwenden, und zwar immer dann, wenn Sie auf Inhalte der Map über eine Variable zugreifen wollen. In dem folgenden Beispiel wird einer benutzerdefinierten Funktion eines Message-Mappings eine Variable key übergeben, über die ein Feld des Message-Headers ausgelesen werden soll. Der Zugriff über Variablen auf die Map funktioniert nur, wenn die Variable als Wert den Namen des Schlüssels und nicht den Namen der String-Konstante hat:

String headerField;
java.util.Map map;

// get runtime constant map

map = container.getTransformationParameters();

// get value of header field by using variable key

headerField = (String) map.get(key);

Um beispielsweise die Message-ID aus dem Message-Header zu lesen, muss die Variable key den Wert „MessageId“ haben und nicht „MESSAGE_ID“.

 

 

 

Ende des Inhaltsbereichs