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
  workflow_ids: [1, 2]           # list of workflow ids to execute
  teardown_workflow_id: 1        # this workflow gets executed when a worfklow in the list failes (used to clean-up, send message, etc.)
  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 # path for temporary files

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: /tmp/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_ids: [217]                   # das SIP soll mit dem Workflow Nr. 217 verarbeitet werden
  teardown_workflow_id: 34              # falls der Workflow Nr. 217 abbricht, wird Workflow Nr. 34 ausgeführt

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

  temporary_folder_path: C:/temp        # 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