Afin de faciliter l’ajout dans Flower de fonctionnalité, la GUI Flower inclut un module reverse proxy basé sur le produit open source Zuul de Netflix. Ce module permet d’inclure des plugins en redirigeant des requêtes HTTP émises auprès de la GUI vers des URLs selon les routes définies.

Définir un plugin

Un plugin permet de rediriger un flux HTTP reçu par la GUI vers une autre URL. Pour accéder à un plugin, à travers la GUI, il est nécessaire que le client émettant la requête soit authentifié (à travers le cookie SESSION). Cette authentification est transmise au plugin sous la forme d’une en-tête HTTP token dont la valeur est le jeton de l’utilisateur effectuant la requête.


Afin d’ajouter un plugin, il est nécessaire de définir la route correspondante. Une route est définie tel que :

  • un chemin en entrée : les requêtes émises sur ce chemin sont interceptées. Pour que la GUI puisse rajouter le token, ce chemin doit toujours commencer par /plugins/.
  • une URL : l’URL vers laquelle rediriger les requêtes interceptées

soit :

zuul.routes.<plugin-id>.path=<plugin path>
zuul.routes.<plugin-id>.url=<external plugin URL>


Exemple : Définition d’un plugin nommé myplugin

zuul.routes.myplugin.path=/plugins/sample/**
zuul.routes.myplugin.url=http://localhost:3006/sample

Avec cet exemple, les requêtes émises sur <gui>/plugins/sample sont redirigées vers http://localhost:3006/sample.



* Avec le framework Spring MVC, il est possible de récupérer ce token en ajoutant le paramètre suivant à la méthode d’entrée : @RequestHeader("token") String token. * L’application supporte non seulement HTTP mais aussi HTTPS pour redirigfer les requêtes.

Le timeout sur les plugins peut être configuré à l’aide des propriétés zuul.host.connect-timeout-millis et zuul.host.socket-timeout-millis.

Plugins par défaut

Par défaut, plusieurs plugins sont ajoutés permettant de consommer des ressources Flower. Ils sont listés dans le tableau ci-dessous.

Chemin URL cible Description
/plugins/arender ${gui.client.arender.url} Redirige vers la visionneuse de document ARender
/plugins/plume ${gui.client.plume.url} Redirige vers plume
/plugins/soap ${core}/services Redirige vers les services SOAP exposés par le Core
/plugins/rest ${core}/rest Redirige vers les services REST exposés par le Core
/plugins/reporting ${core}/external/reporting Redirige vers le module Kibana du Core
/plugins/external ${core}/external