Kopieren von Dateien

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Beispiele zur Konfiguration von Aufträgen >

Kopieren von Dateien

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:\Source in ein neues Verzeichnis C:\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
FlowForce Server wird an der konfigurierten Netzwerkadresse und am konfigurierten Port ausgeführt (siehe Einstellen der Netzwerkadresse und des Ports)
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:\Source in das Verzeichnis C:\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 auf der FlowForce Server-Verwaltungsschnittstelle an und klicken Sie auf Konfiguration. Öffnen Sie den Container /public und erstellen Sie einen neuen Auftrag. 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:\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:

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

ff_example_copy_04

Tipp: Sie könnten den Ausdruck-files("C:\Source\*.*") 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.

ff_example_copy_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

Bei den Anmeldeinformationen handelt es sich um eine Kombination aus dem Benutzernamen und dem Passwort, die mit einem Benutzerkonto auf dem Betriebssystem, auf dem der FlowForce Server-Auftrag ausgeführt wird, verknüpft sind. Bei Definition eines Auftrags in FlowForce Server müssen Sie die Anmeldeinformationen angeben, mit denen der Auftrag ausgeführt werden soll. Wenn das mit den Anmeldeinformationen verknüpfte Benutzerkonto nicht genügend Rechte auf dem Betriebssystem hat, kann der Auftrag nicht erfolgreich ausgeführt werden.

 

Ausführen des Auftrags

Um den Auftrag zu testen, geben Sie in die Adressleiste des Browsers http://127.0.0.1:4646/service/CopyFilesService ein, vorausgesetzt, FlowForce Server wird unter dem Standard-Host- und Port-Namen ausgeführt. Wenn Sie auf der Konfigurationsseite andere Host- und Port-Einstellungen definiert haben (siehe Einstellen der Netzwerkadresse und des Ports), dann ändern Sie die Adresse entsprechend. 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.

 

Bei erfolgreicher Ausführung werden alle Dateien aus dem Quellverzeichnis in das Zielverzeichnis kopiert. Andernfalls wird im Browser der Fehler "Fehler beim Ausführen des Tools" 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.

ff_example_copy_07


© 2019 Altova GmbH