Java-Mapping von adapterspezifischen
Attributen
Im Message-Header einer XI-Message gibt es einen Header für adapterspezifische Message-Attribute, über den Sender-Adapter zusätzliche Informationen in den Message-Header schreiben können. Auf diese Weise können Sender-Adapter Informationen in die Message schreiben, die erst zur Laufzeit bekannt sind (siehe: Adapterspezifische Attribute im Message-Header).
Zusätzlich können Entwickler in einem Java-Mapping-Programm auf adapterspezifische Attribute lesend und schreibend zugreifen.
Für XSLT-Programme (J2EE) und Message-Mappings gibt es Konstanten der Mapping-Laufzeit, mit denen Entwickler auf die gleichen Java-Klassen für Mappings von adapterspezifischen Attributen zugreifen wie in Java-Mapping-Programmen (siehe XSLT-Mapping von adapterspezifischen Attributen beziehungsweise Zugriff auf adapterspezifische Attribute). Sowohl Mapping-Programme, die auf dem Integration Server ausgeführt werden, als auch Mapping-Programme für die PCK-Laufzeit unterstützen diesen Zugriff.
Für ABAP-Mappings gibt es ein eigenes Interface für den Zugriff (siehe Interface-Dokumentation zum Interface IF_MAPPING_DYNAMIC_CONF).
Der Schlüssel für den Zugriff auf den Wert eines adapterspezifisches Attributs besteht aus einem zum Adapter gehörenden Namensraum und einem Attributnamen. Für den File-Adapter gibt es beispielsweise folgende Attribute:
Beispielattribute des File-Adapters
Adapter-Namensraum |
Attributname |
Attributwert |
http://sap.com/xi/XI/System/File |
Directory |
C:\tmp\ |
http://sap.com/xi/XI/System/File |
FileName |
test-input.xml |
Der Adapter-Namensraum ergibt sich aus dem Namensraum im Integration Repository, in dem die Adaptermetadaten des Adapters abgelegt sind und dem Namen des Adaptermetadaten-Objekts. Die Adapter-Namensräume der von SAP ausgelieferten Adapter haben also folgende Form:
http://sap.com/xi/XI/System/<Adaptermetadaten-Objektname des Adapters>
Die Adaptermetadaten-Objekte befinden sich im Namensraum http://sap.com/xi/XI/System der Software-Komponente SAP BASIS.
Die Klassen für den Zugriff auf die adapterspezifischen Attribute sind Teil der Mapping-API (Paket com.sap.aii.mapping.api):
● com.sap.aii.mapping.api.DynamicConfigurationKey
Klasse, um ein Schlüsselobjekt für ein adapterspezifisches Attribut anzulegen. Das Schlüsselobjekt besteht aus dem Adapter-Namensraum und dem Attributnamen.
● com.sap.aii.mapping.api.DynamicConfiguration
Klasse, um den Wert eines adapterspezifisches Attribut zu lesen, zu verändern oder zu löschen. Sie greifen in den Methoden mit Hilfe von Objekten vom Typ DynamicConfigurationKey auf die Attribute zu.
Weitere Informationen zur Mapping-API finden Sie ab NW ’04 SPS14 im SAP Developer Network unter https://www.sdn.sap.com/irj/sdn/javadocs (SDN-User nötig).
Bei einem Multi-Mapping stellt sich die Frage, wie mit einer Vielzahl von Message-Headern mit adapterspezifischen Attributen umgegangen wird. Grundsätzlich kann die Mapping-API nur auf einen Message-Header zugreifen. Je nachdem, ob es mehrere Ausgangs- oder Ziel-Messages gibt, hat dies folgende Konsequenzen:
● 1:n-Transformation
Wenn es mehrere Ziel-Messages gibt, wird der Header für die adapterspezifischen Attribute für jede Message kopiert. Sie können also pro Ziel-Message keinen individuellen Header für die adapterspezifischen Attribute erzeugen, sondern nur einen Header für alle.
● n:1-Transformation
Diese Variante ist nur für Multi-Mappings in Integrationsprozessen möglich. Gibt es mehr als eine Ausgangs-Message, ist zur Laufzeit kein lesender Zugriff auf adapterspezifische Attribute der verschiedenen Message-Header möglich.
● m:n-Transformation
Hier gelten alle bisher erwähnten Restriktionen. Entwickler könnten hier also höchstens die gleichen adapterspezifische Attribute für alle Ziel-Messages in den Header schreiben, ohne auf Attribute der Ausgangs-Messages lesend zugreifen zu können. m:n-Transformationen werden nur innerhalb von Integrationsprozesses unterstützt.