Aller au contenu principal
Version: 7.1

Hotfolder

Configuration

En plus de pouvoir démarrer des workflows manuellement, il est aussi possible de démarrer certains workflows automatiquement. Cette automatisation est réalisée au travers de d'un "hotfolder". Un hotfolder est un dossier qui est "observé": si un SIP y est déposé, le traitement de ce SIP démarre automatiquement avec un workflow spécifique.



La configuration des hotfolders est réalisée dans le fichier <dossier d'installation>\config\doc_observer.yml.

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 # base uri for feeder
api_token: abc123 # api token for API

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

Exemple

L'exemple suivant défini un hotfolder dans C:/example. Si un fichier ZIP est inchangé dans ce dossier pendant 10 secondes, ce fichier est traité avec le workflow qui a l'ID 217. Ce workflow appartient à l'organisation qui a l'ID 1 dans docuteam feeder. Si le workflow démarré de cette manière échoue, le workflow avec l'ID 34 est exécuté (par exemple pour envoyer un email):

example_hotfolder:                     # Ce hotfolder est appelé "example_hotfolder"
directory_watcher:
directory: C:/example # Le dossier qui est observé
glob: '*.zip' # Ne traiter que les fichiers ZIP
interval: 5.0 # La durrée entre deux vérification est de 5 secondes
stable: 2 # Le fichier doit être inchangés pendant 2 intervalles, ici 10 secondes
persist: C:/temp/example_state.yml # fichier de persistance (ne doit pas être créé à la main)

webservice:
uri: localhost:3000 # L'URL racine de feeder
api_token: abc123 # token pour l'authentification vers le API

workflow_id: 217 # Le SIP doit être traité par le workflow 217

path:
parent: false # ces trois spécifications déterminent comment
absolute: false # le chemin du SIP dans l'hotfolder doit
extension: false # être transmis au workflow

temporary_folder_path: C:/temp/sips # chemin pour les fichiers temporaires

Service/Daemon

Pour qu'un hotfolder soit constamment observé, un service ou daemon correspondant doit être mis en place. Sous Windows, cela peut par exemple être fait au moyen de NSSM :

ParamètreValeur
chemin de l'application...\docuteam\apps\ruby23\bin\bundle.bat
dossier de démarrage...\docuteam\apps\feeder_ruby
argumentsexec ...\docuteam\apps\ruby23\bin\ruby lib\doc_observer\
doc_observer.rb <observer_label>

<observer_label> référence une entrée dans le fichier doc_observer.yml
dans l'exemple ci-dessus, example_hotfolder