Altova FlowForce Server 2024 

In diesem Beispiel erfahren Sie, wie Sie mit einem unter FlowForce Server-Verwaltung ausgeführtem RaptorXML Server (oder RaptorXML+XBRL Server) eine XSLT-Transformation ausführen. In dem Auftrag wird die RaptorXML Server-Funktion xslt aufgerufen. Wenn Sie den Auftrag über die FlowForce Server-Konfigurationsseite einrichten, gibt es zwei Möglichkeiten, die Parameter für die xslt-Funktion bereitzustellen:

 

1.Durch Eingabe der Wert-Schlüssel-Paare (Parametername und -wert) in Textfelder.

2.Durch Eingabe eines FlowForce Server-Ausdrucks.

 

Beide Methoden werden weiter unten näher beschrieben.

 

Voraussetzungen

Benötigte Lizenzen: FlowForce Server, RaptorXML (oder RaptorXML+XBRL) Server

Der FlowForce Web Server- und der FlowForce Server-Dienst werden an der konfigurierten Netzwerkadresse und am konfigurierten Port ausgeführt und sind dort empfangsbereit.

Sie haben ein FlowForce Server-Benutzerkonto mit Berechtigungen für einen der Container (standardmäßig hat jeder authentifizierte Benutzer Zugriff auf den in diesem Beispiel verwendeten Container /public).

Im Auftrag in diesem Beispiel wird ein XSLT-Stylesheet, das eine XML-Input-Datei verarbeitet, ausgeführt. Beide Dateien müssen in einem Verzeichnis auf dem Betriebssystem, auf dem FlowForce Server läuft, vorhanden sein und Sie benötigen Lese- und Schreibrechte für dieses Verzeichnis. In diesem Beispiel wird das Verzeichnis C:\FlowForceExamples\RunXslt verwendet.

 

Demo-Dateien

Mit dem unten gezeigten Auftrag wird ein XSLT Stylesheet namens transformation.xslt, das als Input eine Datei namens books.xml sowie die zwei obligatorischen Parameter "year" und "genre" erhält, ausgeführt. Im Codefragment unten sehen Sie den genauen Inhalt der Dateien. Um diese Dateien im Auftrag verwenden zu können, speichern Sie beide Codefragmente unter den angegebenen Dateinamen im Verzeichnis C:\FlowForceExamples\RunXslt.

 

Das XSLT-Stylesheet sieht folgendermaßen aus:

 

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="xs fn">
  <xsl:output method="xml" encoding="UTF-8" byte-order-mark="no" indent="yes"/>
  <xsl:param name="year" as="xs:string" required="yes"/>
  <xsl:param name="genre" as="xs:string" required="yes"/>
  <xsl:template match="/">
    <library>
        <xsl:attribute name="xsi:noNamespaceSchemaLocation" namespace="http://www.w3.org/2001/XMLSchema-instance" select="'library.xsd'"/>
        <last_updated>
          <xsl:sequence select="xs:string(fn:current-dateTime())"/>
        </last_updated>
        <xsl:for-each select="(./books/book)[(fn:string(year) &gt; \$year)]">
          <publication>
              <xsl:for-each select="@id">
                <id>
                    <xsl:sequence select="fn:string(.)"/>
                </id>
              </xsl:for-each>
              <author>
                <xsl:sequence select="fn:string(author)"/>
              </author>
              <title>
                <xsl:sequence select="fn:string(title)"/>
              </title>
              <genre>
                <xsl:sequence select="\$genre"/>
              </genre>
              <publish_year>
                <xsl:sequence select="xs:string(xs:integer(fn:string(year)))"/>
              </publish_year>
          </publication>
        </xsl:for-each>
    </library>
  </xsl:template>
</xsl:stylesheet>

transformation.xslt

Die XML-Input-Datei sieht folgendermaßen aus:

 

<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="books.xsd">
  <book id="1">
    <author>Mark Twain</author>
    <title>The Adventures of Tom Sawyer</title>
    <category>Fiction</category>
    <year>1876</year>
  </book>
  <book id="2">
    <author>Franz Kafka</author>
    <title>The Metamorphosis</title>
    <category>Fiction</category>
    <year>1912</year>
  </book>
  <book id="3">
    <author>Herman Melville</author>
    <title>Moby Dick</title>
    <category>Fiction</category>
    <year>1851</year>
  </book>
  <book id="4">
    <author>Miguel de Cervantes</author>
    <title>Don Quixote</title>
    <category>Fiction</category>
    <year>1605</year>
  </book>
</books>

books.xml

 

Erstellen des Auftrags

Sie können zum Ausführen einer solchen XSLT-Transformation einen FlowForce-Auftrag erstellen. Gehen Sie dazu folgendermaßen vor:

 

1.Melden Sie sich bei der FlowForce Server Web-Verwaltungsschnittstelle an und öffnen Sie den Container /public/Examples. Der Container public/Examples sollte bereits vorhanden sein, wenn Sie die vorherigen Beispiele durchgearbeitet haben; erstellen Sie ihn andernfalls mit dem Befehl Erstellen | Container erstellen.

2.Klicken Sie auf Auftrag erstellen. Geben Sie als nächstes einen Namen und optional eine Beschreibung für den Auftrag ein. In diesem Beispiel wird als Auftragsname "RunXslt" verwendet.

3.Klicken Sie auf Neuer Ausführungsschritt.

4.Navigieren Sie neben "Funktion ausführen" zur Funktion /RaptorXML/xslt.

fs_xslt_example_02
Anmerkung:Die Funktion xslt befindet sich direkt unterhalb des "RaptorXML"-Containers und außerdem in jedem Container für eine bestimmte RaptorXML-Version, z.B., "2024". Informationen zu den Unterschieden zwischen den beiden, finden Sie unter Generische Funktionen im Gegensatz zu Release-spezifischen RaptorXML-Funktionen.

 

5.Setzen Sie den Parameter Arbeitsverzeichnis auf C:\FlowForceExamples\RunXSLT.

6.Setzen Sie den Parameter XSLT-Datei auf transformation.xslt. Die Datei muss im Arbeitsverzeichnis vorhanden sein.

7.Setzen Sie den Parameter XSLT Input auf books.xml. Auch diese Datei muss im Arbeitsverzeichnis vorhanden sein.

8.Definieren Sie den Parameter Parameter wie folgt:

 

a. Klicken Sie neben Parameter auf die Schaltfläche add. Daraufhin wird innerhalb der Seite ein Unterabschnitt erweitert, in dem Sie die Parameternamen und -werte einzeln definieren können.

 

fs_xslt_example_03

b. Klicken Sie für jeden neuen Parameter, der hinzugefügt werden muss, auf die Schaltfläche add. Um das XSLT-Stylsheet in diesem Beispiel auszuführen, müssen Sie die folgenden Parameter eingeben:

 

fs_xslt_example_04

 

Die XSLT-Parameter werden dem Auftrag in Form von Schlüssel-Wert-Paaren zur Verfügung gestellt. Beachten Sie, dass der Parametername und der Parameterwert in separate Felder eingegeben werden. Der Parameterwert wird außerdem in Anführungszeichen gesetzt.

 

9.Aktivieren Sie unter "Dienst" das Kontrollkästchen Diesen Auftrag über HTTP zur Verfügung stellen und geben Sie als Namen des Diensts RunXsltService ein.

10.Wählen Sie unter "Anmeldeinformationen" einen vorhandenen Eintrag aus oder definieren Sie lokale Anmeldeinformationen. Nähere Informationen dazu finden Sie unter Anmeldeinformationen.

11.Klicken Sie auf Speichern.

 

Damit ist der Konfigurationsteil des Auftrags abgeschlossen.

 

Bereitstellen der XSLT-Parameter als Ausdruck

In der obigen Auftragskonfiguration haben Sie die Parameter für die xslt-Funktion über Textfelder angegeben. Beachten Sie, dass es eine zweite Möglichkeit dafür gibt, nämlich die Eingabe eines FlowForce Server-Ausdrucks in das Textfeld Parameter, z.B:

fs_xslt_example_05

Klicken Sie dazu neben Parameter auf ff-setTo und anschließend auf <Ausdruck>. Stellen Sie sicher, dass Sie bei der Eingabe des Ausdrucks keine Fehler machen, um Parser-Fehler zu vermeiden. Der Ausdruck ruft die Ausdrucksfunktion list auf und erstellt eine Liste aus zwei Schlüssel-Wert-Paaren. In jedem Schlüssel-Wert-Paar ist der Schlüssel der Parametername und der Wert der Parameterwert. Beachten Sie, dass die Parameterwerte innerhalb einfacher Anführungszeichen stehen müssen.

 

Um wieder in das Textfeld-Layout zu wechseln, klicken Sie neben Parameter auf ff-setTo und klicken Sie anschließend auf <Wert>.

 

Ausführung des Auftrags

Um den Auftrag auszuführen, wählen Sie eine der folgenden Methoden:

 

Gehen Sie zur Startseite und klicken Sie anschließend auf Alle aktiven Trigger und Dienste anzeigen. Klicken Sie anschließend auf die in der Spalte "Info" angezeigte URL des Auftrags.

Geben Sie in die Adressleiste des Browsers http://127.0.0.1:4646/service/RunXsltService ein. Beachten Sie, dass diese URL nur funktioniert, wenn der FlowForce Server-Dienst an der Standard-Host-Adresse und am Standard-Port-Namen empfangsbereit ist. Wenn Sie auf der Konfigurationsseite andere Host- und Port-Einstellungen definiert haben, dann ändern Sie die Adresse entsprechend.

Wenn Sie das optionale Feld Host-Name von FlowForce Server über die Setup-Seite definieren, können Sie den Webservice-Aufruf direkt über die Auftragskonfigurationsseite ausführen, indem Sie neben dem Kontrollkästchen Diesen Auftrag über HTTP...zur Verfügung stellen auf die Schaltfläche fs_ic_call_ws klicken. Andernfalls wird diese Schaltfläche nicht angezeigt.

 

Wenn Sie aufgefordert werden, beim Aufrufen des Web-Diensts Anmeldeinformationen anzugeben, so geben Sie dieselben Anmeldeinformationen ein, mit denen Sie sich auch bei FlowForce Server angemeldet haben.

 

Für die HTTP-Authentifizierung sollten Sie Ihre FlowForce Server-Anmeldeinformationen nur zu Testzwecken eingeben. Für Produktionszwecke wird empfohlen, einen neuen FlowForce-Benutzer zu erstellen, diesem Benutzer im Container, in dem sich der Auftrag befindet, die Berechtigung Dienst - Verwenden einzuräumen und den Web-Dienst anschließend über das entsprechende Benutzerkonto aufzurufen. Um die HTTP-Authentifizierung zu deaktivieren, und den Web-Dienst öffentlich zugänglich zu machen, weisen Sie dem Benutzer Anonymous die Berechtigung Dienst - Verwenden zu, siehe Funktionsweise von Berechtigungen.

 

Wenn der Auftrag erfolgreich ausgeführt wird, wird das Ergebnis des Auftrags im Browser angezeigt, z.B.:

fs_xslt_example_06

Wenn der Auftrag fehlschlägt, wird die Meldung "Dienstausführung fehlgeschlagen" zurückgegeben. Überprüfen Sie in diesem Fall das FlowForce Server Auftrags-Log, um den Fehler ausfindig zu machen.

© 2017-2023 Altova GmbH