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 # uri for the webservice
user: user # user name for basic authentication
password: password123 # 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
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/organizations/1 # l'hotfolder est observé par l'organisation 1
user: someUserName # nom d'utilisateur
password: somePassword # mot de passe
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ètre | Valeur |
---|---|
chemin de l'application | ...\docuteam\apps\ruby23\bin\bundle.bat |
dossier de démarrage | ...\docuteam\apps\feeder_ruby |
arguments | exec ...\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.ymldans l'exemple ci-dessus, example_hotfolder |