Skip to main content
Skip table of contents

File System Bulk

Dieser Adapter vereinfacht die Nutzung von Datei-Operationen in Technical Processes. Mit ihm lassen sich einfach Aktionen wie das Auflisten, Verschieben und Kopieren von mehreren Dateien oder Verzeichnissen durchführen. Durch die Kompatibilität mit dem ZIP in Memory Compression Adapter lassen sich auch einfach multiple Dateien und Verzeichnisse (ent-)packen.

Eigenschaften (Properties)

Operation

Bestimmt, welche Operation der Adapter durchführt

Mögliche Werte:

  • Read: Dateien auslesen
  • Write: Dateien und Verzeichnisse erzeugen/ersetzen

  • Delete: Dateien und Verzeichnisse löschen
  • GetMetadata: Metadaten von Dateien und Verzeichnissen auslesen
  • Copy: Dateien und Verzeichnisse kopieren
  • Move: Dateien und Verzeichnisse verschieben
  • List: Dateien und Verzeichnisse listen
  • ListAndRead: Dateien und Verzeichnisse listen und den Inhalt der Dateien gleich mit auslesen. (Kombiniert List mit Read)
  • ListWithMetadata: Dateien und Verzeichnisse listen und die Metadaten gleich mit auslesen. (Kombiniert List mit GetMetadata)

Die Input- und Output-Strukturen sind kompatibel mit denen des ZIP in Memory Compression Adapters.

Parameter

Adapter

Hauptklasse des Adapters (nicht verändern!)

Mögliche Werte: de.softproject.integration.adapter.filesystem.Bulk: Hauptklasse (Standard)

baseDirectory

Basis-Verzeichnis für alle Operationen

(info) Alle Operationen können nur in diesem Verzeichnis und seinen Unterverzeichnissen arbeiten.

Mögliche Werte: Absoluter Pfad zum Basis-Verzeichnis

subDirectory

Verzeichnis relativ zum baseDirectory als Basis für alle Operationen.

Mögliche Werte:

  • <leer>: die Operationen starten im baseDirectory
  • .: die Operationen starten im baseDirectory
  • a: die Operationen starten in <baseDirectory>/a
  • .. oder a/../..: Fehler, das baseDirectory kann auf diesem Weg nicht verlassen werden
limit

Begrenz die Anzahl der zurückgegebenen Treffer einer List-Operation.

Mögliche Werte:

  • <positive Zahl>: maximale Anzahl der zurückgelieferten Treffer
  • 0: Ergebnis ist eine leere Liste
  • <negative Zahl>: maximale Treffer-Anzahl ist unbegrenzt


Bei der Suche nach Dateien wird empfohlen, den Parameter skipDirectories auf true zu setzen, da sonst die gewünschten Treffer von Verzeichnissen verdrängt werden könnten.

maxLevel

Beschränkt die Rekursionstiefe für List-Operationen

Mögliche Werte:

  • <positive Zahl>: maximale Tiefe, die eine List-Operation in Verzeichnisse hinabsteigt
  • 1: nur der direkte Inhalt des Verzeichnisses, das durch baseDirectory/subDirectory angegeben ist
  • 0: Ergebnis ist eine leere Liste
  • <negative Zahl>: die Rekursionstiefe ist unbegrenzt
filterRegulärer Ausdruck, der auf den relativen Pfad eines Eintrags bei List-Operationen angewendet wird. Wenn der reguläre Ausdruck zutrifft, wird der Pfad in die Ergebnismenge der Liste übernommen.
skipDirectories

Definiert, ob eine List-Operation Verzeichnis-Elemente im Ergebnis ausgibt

Mögliche Werte:

  • true: Verzeichnisse werden nicht in die Ergebnismenge von List-Operationen übernommen (nützlich in Verbindung mit limit)
  • false: Verzeichnisse werden in die Ergebnismenge von List-Operationen übernommen
overwrite

Definiert, ob bei den Operationen Write, Move oder Copy vorhandene Dateien überschrieben werden dürfen

Mögliche Werte:

  • true: Bestehende Dateien dürfen bei Write, Copy und Move überschrieben werden.
  • false: Bestehende Dateien dürfen nicht überschrieben werden.
strict

Definiert, ob für Write-Operationen ein Elternverzeichnisse vorhanden sein muss und ob das Verzeichnis für die Operation Delete leer sein muss.

Mögliche Werte:

  • true:
    • Bei Copy und Move muss das Zielverzeichnis existieren, in welches hineinkopiert wird.
    • Bei Delete müssen die Verzeichnisse leer sein.
    • Bei Write muss das Zielverzeichnis existieren, in das hineingeschrieben wird.
  • false: Die Elternverzeichnisse werden für Write-Operationen angelegt. Zudem werden Verzeichnisse auch gelöscht, wenn sie noch nicht leer sind.

Statuswerte

1

Alle Einträge für die Operation konnten erfolgreich durchgeführt werden.

0Nicht alle Einträge für die Operation konnten erfolgreich durchgeführt werden, d.h. das Ergebnis enthält Error-Elemente.
-1Bei der Ausführung kam es zu anderen technischen Problemen, z.B. ungültiger Input.

Input

Input-Struktur für Read, Write, GetMetadata und Delete

XML
<any>
 <!-- any mixture of file and directory elements -->
 <File name="relativePath">...Base64 content for Write...</File>
 <Directory name="relativePath" />
</any>

Input-Struktur für Copy und Move

XML
<any>
 <!-- any mixture of file and directory elements -->
 <File name="relativePath" target="relativePath" />
 <Directory name="relativePath" target="relativePath" />
</any>

Output

CODE
<Data>
  <!-- any mixture of file, directory and error elements -->
  <File name="relativePath" [size="size of file in bytes"]
      [creationTime=""] [creationTimeAsMillis=""]
      [lastModifiedTime=""] [lastModifiedTimeAsMillis=""]
      [lastAccessTime=""] [lastAccessTimeAsMillis=""]>
    <!-- base64 conten, if operation Read or ListAndRead -->
    <!-- xml structures containing metadata, if operation GetMetadata or ListWithMetadata -->
  </File>
  <Directory name="relativePath" [size="0"]
      [creationTime=""] [creationTimeAsMillis=""]
      [lastModifiedTime=""] [lastModifiedTimeAsMillis=""]
      [lastAccessTime=""] [lastAccessTimeAsMillis=""]>
    <!-- xml structures containing metadata, if operation GetMetadata or ListWithMetadata -->
  </Directory>
  <Error name="relativePath" [target="relativePath"] exception="fully qualified classname of exception"
      [size="size of file in bytes"]
      [creationTime=""] [creationTimeAsMillis=""]
      [lastModifiedTime=""] [lastModifiedTimeAsMillis=""]
      [lastAccessTime=""] [lastAccessTimeAsMillis=""]>
    <!-- base64 content if operation Write -->
  </Error>
</Data>

Write, Delete, Copy und Move haben nur dann Error-Elemente als Ergebnis, wenn es tatsächlich Fehler gab.

Beispiele für List

Voraussetzung

Folgende Verzeichnisstruktur ist gegeben:

JAVA
/
+ a/
| + index.html
| + logo.gif
| + content/
|   + toc.html
|   + page1.html
|   + page2.html
|   + images/
|     + pic1.png
|     + pic2.png
+ b/
  + some.html
  + other.html
  + files.html

Szenarien

Alles listen

Adapter-KonfigurationOutput
  • baseDirectory = /a
  • subDirectory =
  • limit = -1
  • maxLevel = -1
  • filter =
  • skipDirectories = false
XML
<Data>
  <File name="index.html" ... />
  <File name="logo.gif" ... />
  <Directory name="content" ... />
  <File name="content/toc.html" ... />
  <File name="content/page1.html" ... />
  <File name="content/page2.html" ... />
  <Directory name="content/images" ... />
  <File name="content/images/pic1.png" ... />
  <File name="content/images/pic2.png" ... />
</Data>

Die ersten 5 Einträge

Adapter-KonfigurationOutput
  • baseDirectory = /a
  • subDirectory =
  • limit = 5
  • maxLevel = -1
  • filter =
  • skipDirectories = false
XML
<Data>
  <File name="index.html" ... />
  <File name="logo.gif" ... />
  <Directory name="content" ... />
  <File name="content/toc.html" ... />
  <File name="content/page1.html" ... />
</Data>

Die ersten fünf Dateien

Adapter-KonfigurationOutput
  • baseDirectory = /a
  • subDirectory =
  • limit = 5
  • maxLevel = -1
  • filter =
  • skipDirectories = true
XML
<Data>
  <File name="index.html" ... />
  <File name="logo.gif" ... />
  <File name="content/toc.html" ... />
  <File name="content/page1.html" ... />
  <File name="content/page2.html" ... />
</Data>

Nur das aktuelle Verzeichnis

Adapter-KonfigurationOutput
  • baseDirectory = /a
  • subDirectory =
  • limit = -1
  • maxLevel = 1
  • filter =
  • skipDirectories = false
XML
<Data>
  <File name="index.html" ... />
  <File name="logo.gif" ... />
  <Directory name="content" ... />
</Data>

Alle Dateien und Verzeichnisse, die einen Filter erfüllen

Adapter-Konfiguration

Output

  • baseDirectory = /a
  • subDirectory =
  • limit = -1
  • maxLevel = -1
  • filter = tent
  • skipDirectories = false
XML
<Data>
  <Directory name="content" ... />
  <File name="content/toc.html" ... />
  <File name="content/page1.html" ... />
  <File name="content/page2.html" ... />
  <Directory name="content/images" ... />
  <File name="content/images/pic1.png" ... />
  <File name="content/images/pic2.png" ... />
</Data>

Alle Dateien, die einen Filter erfüllen (ohne Verzeichnisse)

Adapter-Konfiguration

Output

  • baseDirectory = /a
  • subDirectory =
  • limit = -1
  • maxLevel = -1
  • filter = tent
  • skipDirectories = true
XML
<Data>
  <File name="content/toc.html" ... />
  <File name="content/page1.html" ... />
  <File name="content/page2.html" ... />
  <File name="content/images/pic1.png" ... />
  <File name="content/images/pic2.png" ... />
</Data>

Alles unterhalb eines Unterverzeichnisses

Adapter-Konfiguration

Output

  •  baseDirectory = /a
  • subDirectory = content
  • limit = -1
  • maxLevel = -1
  • filter =
  • skipDirectories = false
XML
<Data>
  <File name="toc.html" ... />
  <File name="page1.html" ... />
  <File name="page2.html" ... />
  <Directory name="images" ... />
  <File name="images/pic1.png" ... />
  <File name="images/pic2.png" ... />
</Data> 

Alles unterhalb des aktuellen Verzeichnisses und den direkten Kindverzeichnissen

Adapter-Konfiguration

Output

  • baseDirectory = /a
  • subDirectory =
  • limit = -1
  • maxLevel = 2
  • filter =
  • skipDirectories = false
XML
 <Data>
  <File name="index.html" ... />
  <File name="logo.gif" ... />
  <Directory name="content" ... />
  <File name="content/toc.html" ... />
  <File name="content/page1.html" ... />
  <File name="content/page2.html" ... />
  <Directory name="content/images" ... />
</Data>

Das Startverzeichnis kann tief im Verzeichnisbaum liegen

Adapter-Konfiguration

Output

  • baseDirectory = /a
  • subDirectory = content/images
  • limit = -1
  • maxLevel = -1
  • filter =
  • skipDirectories = false
XML
<Data>
  <File name="pic1.png" ... />
  <File name="pic2.png" ... />
</Data> 
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.