Show TOC Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt XSLT-Mapping von adapterspezifischen Attributen  Dokument im Navigationsbaum lokalisieren

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).

Um Felder dieses Headers in einem Mapping-Programm zu ändern, nutzen Sie typischerweise ein Java-Mapping-Programm (siehe auch: Java-Mapping von adapterspezifischen Attributen). Nichtsdestotrotz können Sie auch die entsprechenden Klassen als Java-Erweiterung in einem XSLT-Programm nutzen.

In diesem Beispiel werden die Java-Klassen für ein Mapping des Message-Headers für adapterspezifische Message-Attribute in einem XSLT-Programm verwendet, um den Parameter Directory des File-Adapters zu ändern. Das XSLT-Programm ist folgendermaßen aufgebaut:

...

       1.      Zuerst werden die notwendigen Java-Klassen als Namensräume deklariert:

¡        java.util.map, um auf die Konstanten der Mapping-Laufzeit zugreifen zu können. Der Header für die adapterspezifischen Message-Attribute ist als Map mit dem Namen DynamicConfiguration hinterlegt.

¡        com.sap.aii.mapping.api.DynamicConfiguration und com.sap.aii.mapping.api.DynamicConfigurationKey für das Mapping des Headers.

       2.      Der Parametername inputparam ist festgelegt und dient dazu, der Java-Laufzeit die Konstanten der Klasse StreamTransformationConstants zu übergeben.

       3.      Um den Header für die dynamische Konfiguration zu ändern, holt sich das XSLT-Programm die Map des Headers, legt einen Schlüssel für den Parameter Directory des File-Adapters an, holt sich den aktuellen Wert für diesen Parameter über die Methode get(), verkettet diesen Verzeichnispfad mit der XSLT-Methode concat und ersetzt den Wert über die Methode put().

XSLT-Mapping-Programm mit Java-Erweiterung

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:map="java:java.util.Map"
  xmlns:dyn="java:com.sap.aii.mapping.api.DynamicConfiguration"
  xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">

<xsl:output indent="no" />
<xsl:param name="inputparam"/>


<xsl:template match="/">

    <!-- change dynamic configuration -->
    <xsl:variable name="dynamic-conf"  
        select="map:get($inputparam, 'DynamicConfiguration')" />
    <xsl:variable name="dynamic-key"   
        select="key:create('http://sap.com/xi/XI/System/File', 'Directory')" />
    <xsl:variable name="dynamic-value" 
        select="dyn:get($dynamic-conf, $dynamic-key)" />
    <xsl:variable name="new-value"     
        select="concat($dynamic-value, 'subfolder\')" />
    <xsl:variable name="dummy" 
        select="dyn:put($dynamic-conf, $dynamic-key, $new-value)" /> 
  
    <!-- copy payload -->
    <xsl:copy-of select="." />
</xsl:template>

</xsl:stylesheet>

 

 

 

 

 

Ende des Inhaltsbereichs