Architecture Nuxeo : vous allez sûrement aimer la vue


Thu 02 July 2015 Par Mike Obrebski



enjoy-view-architectureNous avons parlé dans nos précédents articles de blog des nouvelles versions de Nuxeo Platform, des dernières fonctionnalités et améliorations et des détails de la mise en œuvre. Aujourd'hui, allons un peu plus loin et voyons les fondations de Nuxeo Platform.

L'architecture Nuxeo


Le runtime Nuxeo distribue les services de base vers toutes les couches, à commencer par le stockage. C'est la fonctionnalité de base pour gérer une base documentaire et interagir avec des objets de contenu.

OSGI


Au cœur de Nuxeo Platform se trouve la base documentaire permettant de stocker le contenu et les métadonnées associées. Nous stockons les métadonnées dans une structure de base de données SQL tandis que les fichiers binaires du contenu sont généralement sur un système de fichiers, ce qui correspond au Document Store et au Blob Store.

Le Document Store est mis en pratique par notre Visible Content Store (VCS) accompagné de n'importe quelle base de données SQL. Meme si nous avons une préférence pour PostgreSQL pour une question de performances, n'importe quelle base de données SQL peut être connectée en fonction des préférences de l'utilisateur. Toutes les métadonnées sont conservées dans le VCS et ce que nous appelons un Document est une collection de métadonnées, les fichiers binaires ou blobs, étant seulement un champ d'un document Nuxeo.

Le Blob Store est généralement basé dans un système de fichiers avec une structure simple où le contenu binaire est renommé avec un ID unique. C'est la seule référence au VCS. Cette structure horizontale simple permet de supprimer les opérations coûteuses sur les systèmes de fichier, facilite les back-ups et les restaurations et permet de passer à d'autres Blob Managers, tels qu'Amazon S3.




Nuxeo Repository



Au-dessus des structures de stockage et du runtime, il existe une couche de configuration permettant de définir les types et les champs du contenu. Tout se fait avec des définitions XML structurées qui, comme nous allons le voir, permettent d'étendre et de déployer des personnalisations de la même manière que la méthode par défaut. Tout est « pluggable » et permet de définir la structure statique de la base documentaire.


Nuxeo Components

Il y a des opérations qui définissent toutes les capacités et les actions au sein de Nuxeo Platform. Encore une fois, celles-ci sont très « pluggable » et personnalisables et sont composées de classes appliquant un type d'opération et utilisant le runtime pour interagir avec la base documentaire. Elles sont également exposées aux couches supérieures et c'est la clé de l'évolutivité de Nuxeo Platform. Elles peuvent être placées dans ce que l'on appelle des chaînes d'automatisation pour définir des comportements spécifiques. Elles sont exposées aux appels externes via différentes API, ce dont je vais parler un peu plus loin, et leur définition peut être personnalisée et connectée à Nuxeo Platform pour créer des fonctionnalités personnalisées supplémentaires. Puisque la conception du framework est modulaire et « pluggable », la personnalisation est simplifiée et en adéquation avec les objectifs du système.


Des concepts de workflows, cycles de vie, événements et « listeners », qui peuvent également être connectés et personnalisés de la même façon. L'extension des capacités de Nuxeo nécessite juste d'ajouter une définition dans un format XML et une extension de classe Java personnalisée.

Custom Operation


Maintenant que le système Nuxeo est défini d'un point de vue fonctionnel, nous pouvons désormais regarder les différentes façons d'interagir avec le système. Normalement, il devrait y avoir une UI et une application conçues pour un ensemble spécifique de cas d'utilisation. Par défaut, Nuxeo Platform propose les applications Document Management et Digital Asset Management (DAM). DAM est simplement un ensemble supplémentaire de définitions de contenu et de différents composants d'UI centrés sur l'interaction avec les ressources numériques, telles que les images et les vidéos. L'application est un ensemble de composants d'UI et de comportements associés conçus et mis à disposition pour un ensemble de cas d'utilisation, mais elle utilise le même ensemble d'opérations sous-jacentes disponibles pour n'importe quelle autre application.


L'UI Nuxeo est basée sur JSF/Seam ainsi que sur une collection de modèles et de configurations pour le « look and feel » de l'UI et les comportements. Cet aspect est également modulaire et les composants de l'UI peuvent être configurés. Définir les comportements et la disposition de cette façon permet d'étendre, de modifier et d'ajouter des modifications en tant que « plug-ins » sans avoir à modifier les éléments de design fixes. En résumé, on ajoute de nouveaux éléments sans modifier ceux qui existent.


Extension


À ce stade, nous disposons d'une version fonctionnelle de Nuxeo Platform avec toutes ses capacités et une application par défaut pour la gestion documentaire (Document Management) et la gestion des ressources numériques (Digital Asset Management). Ce qui nous amène à faire du modèle Nuxeo un processus de travail plutôt que de transformer les utilisateurs en pros de Nuxeo. Commençons par personnaliser la plateforme. Comme décrit auparavant, Nuxeo Platform est conçue dès sa base en gardant la notion d'évolutivité à l'esprit. Nous fournissons non seulement un Explorer pour parcourir les différents points et opérations d'extension afin d'identifier les configurations par défaut et personnalisables, mais également un outil de développement et de configuration, Nuxeo Studio, afin de rendre cette étape simple et visuelle.


API - Automation


Nuxeo Studio


Plutôt que d'identifier et d'écrire manuellement du code XML formaté, Nuxeo Studio est un outil visuel et centralisé qui permet de personnaliser Nuxeo Platform. Toutes les personnalisations possibles dans Nuxeo Platform évoquées plus haut peuvent être réalisées simplement via cette application en ligne. Plutôt que d'adapter vos pratiques de Content Management au système d'ECM, vous pouvez modeler et adapter votre plateforme en fonction de vos processus opérationnels à l'aide de Studio, maximimisant ainsi son efficacité et sa convivialité. Studio est une interface unique pour configurer le contenu statique, tel que les schémas de métadonnées, les types de documents et les agencements visuels associés.

Ensuite, il est possible de configurer les workflows avec un éditeur visuel, des cycles de vie, des événements ou des actions utilisateurs. Enfin, toutes les opérations Nuxeo disponibles évoquées plus haut peuvent être regroupées en chaînes, qui peuvent être appelées par des événements, des actions utilisateurs ou des applications externes via des API.

Un projet Studio est un ensemble de configurations qui sont déployées directement sur une instance Nuxeo en un seul clic. C'est tout à fait adapté à la nature modulaire de Nuxeo Platform.


Copy of Nuxeo Components - Content Model


WebEngine


Nuxeo n'est pas seulement une application de Content Management, c'est une plateforme. Ce qui signifique qu'elle est supposée supporter vos applications de différentes façons tout en étant évolutive par nature. J'ai déjà évoqué ce dernier point, et c'est lié à sa nature « pluggable » et modulaire et à l'outil Studio.

La prochaine étape pour donner plus de contrôle sur votre UI et sur votre application est un framework WebEngine que Nuxeo Platform fournit afin de concevoir votre propre UI et votre propre front-end exécutés sur le serveur Nuxeo. Cette méthode vous donne un accès direct au runtime Nuxeo tout en vous permettant de concevoir votre propre UI à l'aide de modèles HTML et Freemarker.

API


Nuxeo supporte aussi bien les applications externes que les configurations internes via un ensemble d'API et une exposition aux opérations et aux appels REST. Vous pouvez appeler toutes les opérations et chaînes d'automatisation Nuxeo via un client Java, des appels REST et du JavaScript pour que chaque application puisse bénéficier de Nuxeo Platform.



Copy of Nuxeo Components - Custom extensions

Enfin, pour garantir la compatibilité entre les versions et le contrôle des versions, Nuxeo propose un plug-in IDE pour Eclipse dans lequel presque n'importe quel point peut être étendu avec du code Java personnalisé pour obtenir un système réellement évolutif sans apporter de modification au code Nuxeo.



Catégorie: Product & Development
Tagged: Nuxeo Platform, Nuxeo Studio