Altova FlowForce Server 2024 Advanced Edition

In diesem Beispiel wird gezeigt, wie Sie mehrere Dateien im lokalen Dateisystem mit Hilfe eines FlowForce Server-Auftrags kopieren.

 

Angenommen, Sie möchten alle Dateien aus dem Verzeichnis C:\FlowForceExamples\CopyFiles\Source in ein neues Verzeichnis C:\FlowForceExamples\CopyFiles\Target kopieren. (Passen Sie die Pfade auf Unix-Systemen entsprechend an.) Wir verwenden zu diesem Zweck einen "for-each"-Schritt, mit dem wir durch alle Dateien in einem Verzeichnis iterieren und anschließend für jedes Element in der Schleife die Funktion /system/filesystem/copy aufrufen.

 

Voraussetzungen

Benötigte Lizenzen: FlowForce 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).

In diesem Auftrag werden Dateien aus dem Verzeichnis C:\FlowForceExamples\CopyFiles\Source in das Verzeichnis C:\FlowForceExamples\CopyFiles\Target kopiert. Stellen Sie sicher, dass Sie diese Verzeichnisse vor Erstellung des Auftrags im lokalen Dateisystem erstellt haben. Stellen Sie außerdem sicher, dass das Quellverzeichnis einige Dateien enthält, damit Sie den Auftrag testen können.

 

Erstellen des Auftrags

Melden Sie sich bei FlowForce Server an und navigieren Sie zu einem Container, für den Sie die Berechtigung zur Erstellung neuer Aufträge haben. In diesem Tutorial wird aus Gründen der Einheitlichkeit der Container /public/Examples verwendet. Wenn Sie diesen Container noch nicht eingerichtet haben, erstellen Sie ihn mit dem Befehl Erstellen | Container erstellen.

 

Erstellen Sie einen neuen Auftrag im Container /public/Examples. Geben Sie einen Namen für den Auftrag (z.B. "CopyFiles") und optional eine Beschreibung dafür ein.

ff_example_copy_01

Um über Elemente einer Liste zu iterieren, bietet FlowForce Server einen "for-each"-Ausführungsschritt. Ein solcher Schritt iteriert über eine Sequenz (Liste) von Elementen bis einschließlich zum letzten Element in der Sequenz. In diesem Beispiel ist unsere Elementesequenz die Liste der Dateien im Quellverzeichnis. Klicken Sie auf Neuer Ausführungsschritt und geben Sie neben "Funktion ausführen" /system/compute ein. Sie können diesen Pfad auch, wie unten gezeigt, aus der Dropdown-Liste auswählen.

ff_example_copy_02

Geben Sie als nächstes den folgenden Ausdruck in das Feld "Ausdruck" ein:

 

list-files("C:\FlowForceExamples\CopyFiles\Source\*.*")

 

Geben Sie als nächstes in das Feld Das Ergebnis dieses Schritts zuweisen an einen Namen für die Liste ein (in diesem Fall lautet der Name list). Auf diese Art kann die neu erstellte Dateiliste in einem folgenden Schritt einfach referenziert werden. Ihr erster Ausführungsschritt sollte nun folgendermaßen aussehen:

fs_ex_copyfiles_03

Der oben gezeigte Ausdruck ruft die Ausdrucksfunktion list-files auf. Die Funktion erhält als Argument einen Pfad (in diesem Fall C:\Source\*.*) und gibt die Liste der Dateien (oder Verzeichnisse) unter dem angegebenen Pfad zurück. Beachten Sie, dass der Pfad die Platzhalterzeichen *.* enthält, um alle Dateien im Verzeichnis auszuwählen. Sie können die Platzhalter bei Bedarf anpassen, um nur bestimmte Dateierweiterungen, z.B. *.txt auszuwählen. Nähere Informationen zu Ausdrücken in FlowForce finden Sie unter Die FlowForce-Ausdrücke.

 

Sie können nun fortfahren und den eigentlichen "for-each"-Iterationsschritt erstellen. Klicken Sie auf Neuer For-Each-Schritt und geben Sie in das Feld "In Sequenz" list ein. (Dies bezieht sich auf die im vorherigen Ausführungsschritt erstellte Liste list).

fs_ex_copyfiles_04

Tipp: Sie könnten den Ausdruck auch in das Feld "in sequence" des "for-each"-Schritts kopieren und sich so den ersten Ausführungsschritt überhaupt sparen.

 

Klicken Sie als nächstes auf die Schaltfläche add und fügen Sie innerhalb des "for-each"-Schritts einen neuen Ausführungsschritt ein. In diesem Schritt wird für jedes Element in der Schleife, wie unten gezeigt, die Funktion /system/filesystem/copy aufgerufen.

fs_ex_copyfiles_05

Wie Sie oben sehen, wird die Funktion copy mit den folgenden Argumenten aufgerufen:

 

Die Quelle Source ist das akuelle Element (die aktuelle Datei) in der Schleife. Sie können in das Feld "Quelle" entweder {item} eingeben, oder auf die Schaltfläche ff_ic_set_to klicken und item auswählen.

Das Ziel Target ist der Zielordner. In diesem Beispiel wird der Pfad im aktuellen Zustand eingegeben, Sie könnten den Pfad aber auch als Argument für den Auftrag eingeben.

Die Option Überschreiben ist aktiviert, d.h. wenn im Quellverzeichnis eine Datei desselben Namens vorhanden ist, wird die Datei überschrieben. Wenn dies nicht passieren soll, klicken Sie auf die Schaltfläche delete.

 

Aus Gründen der Einfachheit definieren wir die beiden anderen Argumente in diesem Beispiel nicht. Nähere Informationen dazu finden Sie unter der Beschreibung der Funktion /system/filesystem/copy.

 

Der bislang erstellte Auftrag enthält nun alle erforderlichen Verarbeitungsschritte, hat aber noch keinen Trigger. Damit der Auftrag immer wieder gestartet wird, könnten Sie einen Timer-Trigger verwenden, siehe Timer Trigger. Oder Sie können das Quellverzeichnis auf Änderungen überwachen lassen und den Auftrag mit Hilfe eines Dateisystem-Triggers starten, siehe Dateisystem-Trigger. Und schließlich können Sie den Auftrag auch als Webservice-Aufruf bei Bedarf starten.

 

In diesem Beispiel starten wir die Ausführung des Auftrags bei Bedarf durch Klicken auf eine URL im Browser (dabei wird der Auftrag als Webservice aufgerufen). Um den Auftrag in einen Webservice umzuwandeln, aktivieren Sie das Kontrollkästchen Diesen Auftrag über HTTP unter URL zur Verfügung stellen und geben Sie den Namen des Webservice ein.

ff_example_copy_06

Außerdem werden Ihre Anmeldeinformationen benötigt, damit der Auftrag ausgeführt werden kann. Geben Sie daher im Abschnitt "Anmeldeinformationen", wie unten gezeigt, den Benutzernamen und das Passwort für Ihr Betriebssystem ein (nicht dasjenige für FlowForce Server). Wenn Sie zuvor eigenständige Anmeldeinformationen erstellt haben, wie unter Definieren von Anmeldeinformationen beschrieben, können Sie diese mit der Option Anmeldeinformationen auswählen auswählen.

fs_deploy_mapping_05

 

Ausführung des Auftrags

Um den Auftrag zu testen, 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/CopyFilesService 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.

 

Bei erfolgreicher Ausführung werden alle Dateien aus dem Quellverzeichnis in das Zielverzeichnis kopiert. Andernfalls wird im Browser der Fehler "Dienstausführung fehlgeschlagen" angezeigt. Falls dieser Fehler angezeigt wird, überprüfen Sie das Auftrags-Log, um nähere Informationen dazu zu lesen, siehe Anzeige des Auftrags-Logs. Mögliche Ursachen sind falsche Anmeldeinformationen, falsche Dateipfade, unzureichende Rechte für das Dateisystem und andere. So schlägt der Auftrag z.B. fehl, wenn das Kontrollkästchen Überschreiben nicht aktiviert wurde und das Zielverzeichnis bereits eine Datei mit demselben Namen enthält, wie unten gezeigt.

fs_ex_copyfiles_07

© 2017-2023 Altova GmbH