Hotfolder

Automatisierte Workflows

Konfiguration

Neben dem manuellen Starten von Workflows besteht die Möglichkeit, bestimmte Workflows automatisiert zu starten. Dies geschieht in Verbindung mit einem sogenannten "Hotfolder". Ein Hotfolder ist ein Ordner, der gleichsam unter Beobachtung steht: wird darin ein SIP abgelegt, beginnt automatisch die Verarbeitung dieses SIP mit einem bestimmten Workflow.

Die Konfiguration von solchen Hotfoldern wird in der Datei <Installationsordner>\config\doc_observer.yml vorgenommen.

label_of__hotfolder:
  directory_watcher:
    directory: /tmp              # directory to watch
    glob: */**                   # pattern for files to watch
    interval: 5.0                # interval between runs (in seconds)
    stable: 2                    # number of runs until a file is stable (only trigger when copying is finished)
    persist: /tmp/dw_state.yml   # path for persistence file

  webservice:
    uri: localhost:3000          # uri for the webservice
    user: user                   # user name for basic authentication
    password: passwort123        # password for basic authentication

  workflow_id: 3                 # id of the workflow to execute
  queue_name: fast-queue         # optional queue name, if not given the organisation queue is used
                                 # (name of the queue "Meine Organisation".paremeterize() -> "meine-organisation")
                                 # to run the corresponding worker: "QUEUES=fast-queue rails jobs:work"

  path:
    parent: false                # submit the parent path of the object { true | false (default) }
    absolute: false              # submit the absolute path of the object { true | false (default) }
    extension: false             # submit the filename with the extension { true | false (default) }

  temporary_folder_path: C:/temp # once the file is stable, move it here and send this path to the workflow execution

Beispiel

Folgendes Beispiel richtet einen Hotfolder ein unter C:/beispiel. Bleibt in diesem Ordner eine ZIP-Datei 10 Sekunden lang unverändert liegen, so wird diese Datei mit dem Workflow mit der ID 217 verarbeitet. Dieser Workflow gehört in docuteam feeder zur Organisation mit der ID 1. Schlägt der so gestartete Workflow fehl, so wird der Workflow mit der ID 34 ausgeführt (um z.B. eine Email zu versenden):

beispiel_hotfolder:                     # die Bezeichnung dieses Hotfolders lautet "beispiel_hotfolder"
  directory_watcher:
    directory: C:/beispiel              # der Ordner, der überwacht wird
    glob: '*.zip'                       # nur ZIP-Dateien sollen beachtet werden
    interval: 5.0                       # die Zeitspanne zwischen den Überprüfungen beträgt 5 Sekunden
    stable: 2                           # eine Datei muss 2 Intervalle unverändert bleiben, hier also 10 Sekunden
    persist: C:/temp/beispiel_state.yml # Persistenzdatei (muss nicht selbst kreiert werden)

  webservice:
    uri: localhost:3000/organizations/1 # hier wird der Hotfolder für die Organisation Nr. 1 betrieben
    user: someUserName                  # Benutzername
    password: somePassword              # Passwort

  workflow_id: 217                      # das SIP soll mit dem Workflow Nr. 217 verarbeitet werden

  path:
    parent: false                       # diese drei Angaben bestimmen, wie der Pfa
    absolute: false                     # zum SIP im Hotfolder an den
    extension: false                    # Workflow übermittelt werden soll

  temporary_folder_path: C:/temp/sips   # Pfad für temporäre Dateien

Service/Dämon

Zur laufenden Überwachung des Hotfolders muss ein entsprechender Service oder Dämon eingerichtet werden. Unter Windows kann dies beispielsweise mittels NSSM geschehen:

Parameter Wert
Applikationspfad ...\docuteam\apps\ruby23\bin\bundle.bat
Start-Verzeichnis ...\docuteam\apps\feeder_ruby
Argumente exec ...\docuteam\apps\ruby23\bin\ruby lib\doc_observer\
doc_observer.rb <observer_label>

<observer_label> referenziert einen Eintrag in der Datei doc_observer.yml
für obiges Beispiel also beispiel_hotfolder