Altova FlowForce Server 2024 Advanced Edition

Generieren von PDF-Dateien anhand von XML-Dateien

Zur Startseite Zurück Nach oben Weiter

In diesem Beispiel wird gezeigt, wie Sie einen FlowForce Server-Auftrag erstellen, der mehrere XML-Dateien als Input erhält und mehrere PDF-Dateien aus Output erzeugt. Mit dem FlowForce Server-Auftrag werden sowohl MapForce Server (zum Generieren der XML-Ausgabe anhand mehrerer XML-Quelldateien) als auch StyleVision Server (zum Konvertieren der XML-Ausgabe in PDF) aufgerufen.

 

Um dieses Beispiel durchführen zu können, sollten Sie das Funktionsprinzip von MapForce-Mappings und StyleVision-Transformationen kennen. Wenn StyleVision und MapForce komplett neu für Sie sind, empfehle wir, zuerst die ersten Kapitel der "Tutorials" der MapForce- und StyleVision-Dokumentation zu lesen:

 

Schnellstart-Tutorial (MapForce)

Schnellstart-Tutorial (StyleVision)

 

Voraussetzungen

Benötigte Lizenzen:

oMapForce Enterprise oder Professional Edition. Mit diesem Tool können Sie eine Mapping-Transformation (.mfd-Datei) erstellen, mit der (in diesem Beispiel) XML-Dateien von einem Schema in ein anderes konvertiert werden.

oMapForce Server bzw. MapForce Server Advanced Edition. Mit diesem Tool können Sie das Mapping als Auftrag auf einem Server ausführen.

oStyleVision Enterprise oder Professional Edition. Mit diesem Tool können Sie ein Stylesheet (.sps-Datei) erstellen, die eine XML-Input-Datei in eine PDF-Datei konvertiert.

oStyleVision Server. Mit diesem Tool können Sie die Transformation als Auftrag auf einem Server ausführen.

oFlowForce Server. Mit Hilfe dieses Tools können Sie die obigen Transformationen in Form eines geplanten Auftrags oder bei Bedarf ausführen, Input-Dateien, falls nötig, ändern und die Ausführung überwachen.

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

Mit dem in diesem Beispiel erstellten Auftrag werden mehrere Dateien auf der Festplatte generiert. Sie benötigen daher in dem Betriebssystem, in dem FlowForce Server ausgeführt wird, Rechte, um Dateien in einem Verzeichnis zu erstellen. In diesem Beispiel wird das Verzeichnis C:\FlowForceExamples\GeneratePdfs verwendet.

 

Verwendete Demo-Dateien

In diesem Beispiel werden die folgenden Beispieldateien aus dem folgenden Ordner verwendet: <Dokumente>\Altova\MapForce2024\MapForceExamples.

 

MultipleInputToMultipleOutputFiles.mfd (die MapForce-Mapping-Datei)

PersonListWithGrouping.sps (die StyleVision-Transformationsdatei)

Nanonull-Branch.xml, Nanonull-HQ.xml (die XML-Input-Dateien)

 

Funktionsweise des MapForce-Mappings

Das Mapping besteht, wie unten gezeigt, aus einer Quellkomponente (Altova_Hierarchical), einer Zielkomponente (PersonList) und verschiedenen zwischengeschalteten vordefinierten MapForce-Funktionen, mit denen verschiedene Strings erzeugt werden, die in die Ausgabe geschrieben werden.

fs_multiple_xml_to_pdf_01

MultipleInputToMultipleOutputFiles.mfd

Als Input akzeptiert das Mapping jede beliebige XML-Datei aus dem Verzeichnis <Dokumente>\Altova\MapForce2024\MapForceExamples, die mit "Nanonull-" beginnt. Dies ist in den Einstellungen der MapForce-Quellkomponente definiert (Klicken Sie dazu in MapForce mit der rechten Maustaste auf die Überschrift der unten gezeigten Komponente Altova_Hierarchical und wählen Sie im Kontextmenü den Befehl Eigenschaften). Beachten Sie, dass als "Input-Datei" Nanonull-*.xml definiert wurde, wobei das Sternchen ein Platzhalterzeichen ist. Als Input-Datei wird dadurch jede Datei, die mit "Nanonull-" beginnt und die Erweiterung .xml hat, verwendet.

fs_multiple_xml_to_pdf_01a

Die Zielkomponente PersonList generiert laut Konfiguration auf Basis des Dateinamens der XML-Quellkomponente Dateinamen dynamisch. Dies wird durch Rechtsklick auf die Schaltfläche Datei/String im oberen Bereich der Komponente und Auswahl der Menüoption Über das Mapping bereitgestellte dynamische Dateinamen verwenden definiert. Die Verbindung zum Node "Datei <dynamisch>" bedeutet, dass für jeden Wert in der Quellkomponente eine neue Datei erstellt wird. Die Funktion remove-folder dient dazu, nur den Dateinamen (ohne den Ordner) aus dem Quellpfad abzurufen. Dieser wird anschließend als Wert an die oberste concat-Funktion, die einen String wie Persons-<Quelldateiname> erstellt, übergeben.

 

Die zweite concat-Funktion erstellt einen String wie Generated by Altova..., gefolgt vom vollständigen Pfad zur Mapping-Datei. Das Ergebnis wird als Kommentar in die XML-Zieldatei geschrieben.

 

Die dritte concat-Funktion erstellt mit Hilfe der count -Funktion einen String, der angibt, wie viele Personendatensätze aus der Quellkomponente gemappt wurden. Auch dieses Ergebnis wird als Kommentar in die XML-Zieldatei geschrieben.

 

Über die Verbindung zum Ziel-Node Person werden die Personendaten schließlich aus der Quell- in die Zielkomponente kopiert. Für jedes zu mappende Child-Element von Person gibt es eine eigene Verbindung.

 

Außerdem wurde die Zielkomponente so konfiguriert, dass sie die generierte Ausgabe für jede XML-generierte Datei in PDF konvertiert. Klicken Sie mit der rechten Maustaste auf die Überschrift der Zielkomponente, wählen Sie Eigenschaften und Sie sehen, dass im Textfeld StyleVision Power StyleSheet-Datei ein relativer Pfad zu einem StyleVision .sps Stylesheet definiert ist. Mit Hilfe dieser Datei erfolgt die eigentliche Konvertierung von XML in PDF (Beschreibung siehe unten).

fs_multiple_xml_to_pdf_01b

Um direkt in MapForce eine Vorschau auf die Ausgabe dieses Mappings zu sehen, klicken Sie auf das Register Ausgabe unterhalb des Mapping-Bereichs. Um eine Vorschau auf das PDF-Ergebnis der StyleVision-Transformation zu sehen, klicken Sie auf das Register PDF. Sie werden sehen, dass im Fenster "Ausgabe" mehrere XML- (bzw. PDF)-Dateien generiert werden, z.B:

fs_multiple_xml_to_pdf_02

 

Zu diesem Zeitpunkt sollten Sie eine der beiden XML-Ausgabedateien auf der Festplatte speichern (da MapForce standardmäßig temporäre Dateien generiert). Die Datei wird als Beispieldatei (XML-Arbeitsdatei) verwendet, wenn Sie das StyleVision Power Stylesheet in StyleVision öffnen und testen möchten (siehe nächster Abschnitt). Um eine Ausgabedatei zu speichern, klicken Sie zuerst auf das Register Ausgabe und anschließend im Menü Ausgabe auf Ausgabedatei speichern.

 

Funktionsweise der StyleVision-Transformation

Starten Sie StyleVision und öffnen Sie die Transformationsdatei PersonListWithGrouping.sps. Wie bereits erwähnt, befindet sich diese Datei im selben Verzeichnis wir das oben erläuterte MapForce-Mapping und wird von der MapForce-Zielkomponente referenziert.

fs_multiple_xml_to_pdf_03

PersonListWithGrouping.sps

Im oben gezeigten StyleVision .sps-Stylesheet wird anhand einer einzigen XML-Quelldatei ein PDF-Dokument erstellt. Das PDF-Dokument besteht aus einer Überschrift ("h2"), einem Einführungsabsatz, einer dynamisch befüllten Tabelle und einem Absatz am Ende. Die Überschrift und der Einführungsabsatz enthalten statischen Text, während die Tabelle und der Endabsatz aus den Nodes der XML-Quelldatei befüllt werden, wie Sie an den umschließenden Tags sehen.

 

So zeigen Sie direkt in StyleVision eine Vorschau auf diese Transformation an:

 

1.Klicken Sie im Fenster Design-Übersicht neben Arbeits-XML auf fs_stylevision_browse.

fs_multiple_xml_to_pdf_04

2.Wählen Sie den Befehl XML-Arbeitsdatei zuweisen und navigieren Sie zu der zuvor über MapForce gespeicherten XML-Ausgabedatei (siehe vorheriger Abschnitt).

3.Klicken Sie auf das Register PDF.

 

Beachten Sie, dass der Name oder Ursprung der XML-Quelldatei für das .sps Stylesheet keine Rolle spielt; das Stylesheet verarbeitet lediglich die als Input bereitgestellte XML-Datei (sofern diese dem angegebenen XML-Schema entspricht) und erstellt anhand dieser Datei eine PDF-Datei. Um diesen Vorgang zu automatisieren, damit mehrere PDF-Dateien generiert werden, muss das Stylesheet, wie unten beschrieben, auf FlowForce Server bereitgestellt werden.

 

Bereitstellen der Dateien auf FlowForce Server

Bisher wurde die Funktionsweise und der Zweck des MapForce-Mappings und der StyleVision-Transformation, die in diesem Beispiel verwendet werden, erläutert. Nähere Informationen zum Erstellen von MapForce-Mappings und StyleVision Stylesheets finden Sie in der Dokumentation zu diesen Produkten (https://www.altova.com/de/documentation.html).

 

Damit der Vorgang automatisiert werden kann, müssen beide Dateien nun auf FlowForce Server bereitgestellt werden. Wie im Abschnitt "Voraussetzungen" oben angegeben, muss FlowForce Server lizenziert und gestartet sein und sowohl MapForce Server als auch StyleVision Server müssen lizenziert und unter FlowForce Server-Verwaltung ausgeführt werden. Unter Windows können Sie mit dem Befehl verifylicense den Lizenzstatus der einzelnen Server-Produkte überprüfen. Auf anderen Betriebssystemen schlägt die Auftragsausführung mit der entsprechenden Log-Meldung fehl, wenn die Lizenz nicht gefunden wird oder ungültig ist.

 

So stellen Sie das StyleVision Stylesheet auf FlowForce Server bereit:

 

1.Klicken Sie im Menü Datei auf In FlowForce bereitstellen (Wenn dieser Befehl ausgegraut ist, wechseln Sie zuerst zum Register Design.)

2.Wenn die Meldung erscheint, dass die Design-Datei im PXF-Format (Portable XML Form) gespeichert wird, klicken Sie auf OK.

fs_multiple_xml_to_pdf_06

3.Wenn Sie aufgefordert werden, die Dateien, die in das bereitgestellte Paket inkludiert werden sollen, auszuwählen, behalten Sie die Standardeinstellungen unverändert bei. In diesem Beispiel wird zwar nur PDF generiert wird, doch sparen Sie später Zeit, wenn Sie sich entschließen, zusätzliche Formate wie HTML und RTF zu generieren.

fs_multiple_xml_to_pdf_07

4.Wenn Sie dazu aufgefordert werden, füllen Sie die Verbindungsinformationen für FlowForce Web Server aus. Aus Gründen der Einfachheit wird die Transformation in der Abbildung unten über einfaches HTTP auf dem lokalen Rechner auf Port 8082 bereitgestellt. Sie können auch einen entfernten Server definieren und die Dateien über eine SSL-verschlüsselte Verbindung bereitstellen, vorausgesetzt FlowForce Web Server wurde so konfiguriert, dass es solche Verbindungen zulässt (siehe Definieren der Netzwerkeinstellungen). Die Werte "Benutzer" und "Passwort" wurden in diesem Fall für das FlowForce root-Konto angegeben; es kann jedoch auch jedes andere FlowForce-Benutzerkonto verwendet werden, vorausgesetzt es hat die Berechtigung, Daten in den angegebenen Ordner zu schreiben. Das Kontrollkästchen Web Browser zur Erstellung eines neuen Auftrags öffnen wurde absichtlich deaktiviert, da das Erstellen und Konfigurieren des Auftrags weiter unten als separater Schritt beschrieben werden.

5.Verwenden Sie aus Gründen der Einheitlichkeit mit den anderen Beispielen den Zielpfad /public/Examples/PersonListWithGrouping.transformation.

fs_multiple_xml_to_pdf_08

 

So stellen Sie das MapForce-Mapping auf FlowForce Server bereit:

 

Klicken Sie im Menü Datei auf Auf FlowForce Server bereitstellen. Füllen Sie die Verbindungsinformationen aus, wie oben für StyleVision beschrieben. Verwenden Sie auch hier aus Gründen der Einheitlichkeit mit den anderen Beispielen den Zielpfad /public/Examples/MultipleInputToMultipleOutputFiles.mapping.

fs_multiple_xml_to_pdf_05

Nachdem die Dateien erfolgreich bereitgestellt wurden, scheinen die entsprechenden Einträge im angegebenen FlowForce Container (in diesem Fall in "/public/Examples") auf, wenn Sie sich auf FlowForce Server anmelden:

fs_multiple_xml_to_pdf_09

Beachten Sie, dass es sich bei den obigen Einträgen noch nicht um Aufträge handelt, sondern um FlowForce-Funktionen, anhand welcher die eigentlichen Aufträge erst, wie unten beschrieben, erstellt werden müssen.

 

Erstellen und Konfigurieren des FlowForce-Auftrags

Jetzt, da das MapForce-Mapping und die StyleVision-Transformation auf FlowForce Server bereitgestellt wurden, können anhand dieser Funktionen die erforderlichen Aufträge erstellt werden. Gehen Sie dazu folgendermaßen vor:

 

1.Navigieren Sie zum FlowForce Container /public/Examples und klicken Sie auf die zuvor bereitgestellte Funktion MultipleInputToMultipleOutputFiles.mapping. Beachten Sie, dass die Quellkomponente des ganz am Anfang dieses Beispiels beschriebenen MapForce-Mappings nun zu einem Input-Parameter der FlowForce-Funktion geworden ist. Er hat einen Standardwert, nämlich den Pfad zu den vom Mapping verarbeiteten XML-Instanzdateien. Dieser Wert kann später, falls erforderlich, außer Kraft gesetzt werden. Der Parameter "Working-directory" wurde von FlowForce automatisch hinzugefügt; seine Aufgabe wird in den nächsten Schritten erklärt.

fs_multiple_xml_to_pdf_10

2.Klicken Sie auf Auftrag erstellen.

3.Geben Sie einen Namen und optional eine Beschreibung für den Auftrag ein.

4.Konfigurieren Sie den Bereich "Ausführungsschritte" des Auftrags, wie unten gezeigt.

fs_multiple_xml_to_pdf_11

5.Aktivieren Sie unter "Dienst" das Kontrollkästchen "Diesen Auftrag über HTTP...zur Verfügung stellen..." und geben Sie den Namen des Webservice ein, der den Auftrag bei Bedarf starten soll, z.B. "GeneratePdfsService". Wenn Sie den Auftrag lieber als geplanten Auftrag oder als Datei-Trigger ausführen lassen möchten, definieren Sie die entsprechenden Trigger (siehe Verwalten von Triggern).

fs_multiple_xml_to_pdf_12

6.Geben Sie unter "Anmeldeinformationen" den Benutzernamen und das Passwort des Betriebssystem-Benutzerkontos ein (der Auftrag wird als dieser Benutzer ausgeführt). Dieses Passwort ist nicht mit dem der FlowForce Web-Verwaltungsschnittstelle zu verwechseln (siehe auch Anmeldeinformationen).

fs_multiple_xml_to_pdf_13

7.Klicken Sie auf Speichern.

 

 

Um die Funktionsweise des Auftrags zu verstehen, werfen wir einen genaueren Blick auf den Abschnitt "Ausführungsschritte" des Auftrags. Mit dem ersten Ausführungsschritt wird das zuvor bereitgestellte Mapping aufgerufen. Dabei wird nach allen XML-Dateien im Arbeitsverzeichnis, die mit "Nanonull-" beginnen, gesucht. Das Arbeitsverzeichnis in diesem Beispiel ist C:\FlowForceExamples\GeneratePdfs.

 

Die durch den ersten Ausführungsschritt zurückgegebene Ausgabe stellt die vom Mapping zurückgegebenen Daten dar. Sie wurde explizit output genannt, um sie in einem nachfolgenden Schritt referenzieren zu können.

 

Der zweite Schritt des Auftrags ist ein "for-each"-Schritt. Beachten Sie, wie im "for-each"-Schritt die vom ersten Schritt zurückgegebenen Daten (d.h. die vom Mapping zurückgegebene Ausgabe) mit Hilfe des FlowForce-Ausdrucks results(output) aufgerufen werden. Dabei ruft der Ausdruck die Funktion results() auf, die als Argument die vom vorherigen Schritt zurückgegebene Ausgabe erhält, siehe auch Schrittergebnisfunktionen. Eine Einführung in FlowForce-Ausdrücke finden Sie unter Die FlowForce-Ausdrücke.

 

Der "for-each"-Schritt besteht aus zwei kleineren Ausführungsschritten:

 

1.Im ersten Schritt wird die vordefinierte Funktion /system/compute aufgerufen, um die Mapping-Ausgabe in eine tatsächliche (generisch file genannte) Datei zu konvertieren. Beachten Sie, dass das Ergebnis des Ausdrucks results(output) einen Stream und keine Datei darstellt. Wenn mit dem Mapping (wie in diesem Fall) mehrere Ausgaben erzeugt werden, stellt die Mapping-Ausgabe eine Sequenz von Streams dar. Aus diesem Grund wird der aktuelle Stream (der iterierte Stream) mit Hilfe einer FlowForce-Ausdrucksfunktion (as-file) in eine Datei konvertiert.

2.Im zweiten Schritt wird für jeden iterierten Stream die zuvor bereitgestellte StyleVision-Transformation aufgerufen. Bei jeder Iteration wird StyleVision Server aufgerufen, eine XML-Datei als Input bereitgestellt und eine PDF-Datei als Ausgabe zurückgegeben. Der FlowForce-Ausdruck {filename(file)}.pdf erstellt den eigentlichen PDF-Dateinamen auf der Festplatte. Diese Operation erfolgt in dem durch den Parameter "Working-directory" definierten Arbeitsverzeichnis.

 

Anmerkung:In diesem Beispiel wird in beiden Schritten - im Schritt, in dem das Mapping ausgeführt wird, und im Schritt, in dem die StyleVision-Transformation ausgeführt wird - dasselbe Arbeitsverzeichnis verwendet. In einigen Fällen müssen eventuell separate Arbeitsverzeichnisse definiert werden, damit es zu keinen Dateinamenskonflikten und Auftragsausführungsfehlern kommt.

 

Ausführung des Auftrags

Um die Input-Daten für den Auftrag vorzubereiten, kopieren Sie die Dateien Nanonull-Branch.xml und Nanonull-HQ.xml aus <Dokumente>\Altova\MapForce2024\MapForceExamples in das Arbeitsverzeichnis (C:\FlowForceExamples\GeneratePdfs). Dadurch stehen XML-Input-Dateien für den ersten Schritt des Auftrags, in dem bei Ausführung des Auftrags Daten ausgelesen, werden, zur Verfügung.

 

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/GeneratePdfsService 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.

 

Nach erfolgreicher Fertigstellung des Auftrags stehen die dabei generierten PDF-Dateien im Arbeitsverzeichnis C:\FlowForceExamples\GeneratePdfs zur Verfügung. Im Browser wird auch bei erfolgreicher Ausführung die Meldung "Cannot output the job" angezeigt (dies wird erwartet, da mit dem Auftrag PDF-Dateien erzeugt werden, die nicht im Browser angezeigt werden können). Sollte der Auftrag aus irgendeinem Grund nicht ausgeführt werden können, wird im Browser die Meldung "Dienstausführung fehlgeschlagen" angezeigt. Überprüfen Sie in diesem Fall das Fehlerprotokoll des Auftrags. Um Fehler zu beheben, müssen Sie eventuell alle im oberen Bereich dieser Seite aufgelisteten Voraussetzungen überprüfen.

© 2017-2023 Altova GmbH