Hotfolder

Workflows automatisés

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.yml
dans l'exemple ci-dessus, example_hotfolder