Wie kann ich im Projekt Konstanten definieren, die dann in verschiedenen Prozessen und Transformationen verwendet werden?

  • Dieses Thema ist leer.
  • Beitrag
    Torsten Uhr
    Verwalter
    In manchen Projekten kann es erforderlich sein, dass bestimmte Daten an verschiedenen Stellen benötigt werden. Idealerweise möchte ich diese Daten aber nur einmal an zentraler Stelle pflegen.

    Ich möchte hier an einem kleinen Beispiel zeigen, wie das umgesetzt werden kann.

    Beispiel: Aufruf einer REST-API mit je einem fixen Token für Produktiv- und Testsystem

    Ein Rest-API bietet verschiedene Services an, die alle mit einem Token im Header aufgerufen werden sollen. Es existieren zwei Instanzen zum Test und zur Produktion. Jedes System benötigt einen eigenen Token.

    Pflege der Daten

    Zuerst legt man eine XML-Ressource an. In dieser Ressource werden alle Konstanten gepflegt. Die Struktur kann frei gewählt werden.

    <ROOT>
      <Current-Environment>Dev</Current-Environment>
    
      <API-Acces-Token-Dev >w879f89f80ßd8diebfwle8ef08wefxs</API-Acces-Token-Dev>
      <API-Acces-Token-Prod>dhfweiofwlbfwiebfwle88uef08wefs</API-Acces-Token-Prod>
    </ROOT>

    Erstellen der Adapter

    Es werden zwei Adapter erstellt, ein Adapter für das Testsystem und ein Adapter für die Produktion.

    Modellierung des Prozesses

    Im Prozess wird die XML-Datei als Parameter eingebunden.

    Verwendung von Werten im Prozess

    Eine Möglichkeit ist, einen einfachen Wert in eine Variable auszulesen:

    In der Alternative könnte man auch direkt per XPath auf die Werte in der Konfiguration zugreifen:

    Verwendung von Werten in Transformationen

    Der jeweilige Token muss in der Transformation, welche die XML-Struktur für die Ausführung der Interaktion zusammenstellt, in den Header eingefügt werden.

    Zuerst wird der jeweilige Token aus der Konfigurations ausgelesen:

    In beiden Transformationen wird der Token als Parameter übergeben:

    In der Transformation wird der Parameter deklariert und benutzt:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:param name="API-Acces-Token" select="'unknown'" /> <!-- default value will point to missing parameter value -->
    
    <xsl:template match="/">
      <ROOT>
        <REQUEST OPERATION="GET" URL="getList">
          <HEADER>
            <Authorization>Bearer: <xsl:value-of select="$API-Acces-Token" /></Authorization>
          </HEADER>
        </REQUEST>
      </ROOT>
    </xsl:template>
    </xsl:stylesheet>

    Verwendung von komplexen Daten

    Benötigt die REST-API gleich einen ganzen Satz an Header-Parametern, die in allen Aufrufen gleich sein sollen, dann ist es einfacher, die Werte direkt in der Transformation aus der Konfiguration auszulesen.

    Definition der Header in der Konfiguration

    <ROOT>
    <Current-Environment>Dev</Current-Environment>
    
      <API-Acces-Token-Dev >w879f89f80ßd8diebfwle8ef08wefxs</API-Acces-Token-Dev>
      <API-Acces-Token-Prod>dhfweiofwlbfwiebfwle88uef08wefs</API-Acces-Token-Prod>
    
      <API-Header>
        <X-Client-ID>1234</X-Client-ID>
        <X-App-ID>TRANSCONNECT</X-App-ID>
      </API-Header>
    </ROOT>

    Auslesen der Konfiguration in der Transformation

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:param name="API-Acces-Token" select="'unknown'" /> <!-- default value will point to missing parameter value -->
    
    <xsl:variable name="configuration" select="document( 'configuration.xml' )" />
    
    <xsl:template match="/">
      <ROOT>
        <REQUEST OPERATION="GET" URL="getList">
          <HEADER>
            <Authorization>Bearer: <xsl:value-of select="$API-Acces-Token" /></Authorization>
            <xsl:copy-of select="$configuration//API-Header/*" />
          </HEADER>
        </REQUEST>
      </ROOT>
    </xsl:template>
    </xsl:stylesheet>

    Beispieldaten

    Das komplette Beispiel können Sie als TRANSCONNECT Repository hier herunterladen (nicht auspacken, einfach ZIP im Manager als Repository-Datei auswählen).

    1
    0
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.