Vous avez peut-être souvent besoin d’alimenter un serveur Nuxeo avec un jeu de données existant. Par exemple pour disposer du même jeu de données sur plusieurs environnement ou simplement pour importer le jeu de données lors de la configuration de votre serveur. Aujourd’hui, je vais vous expliquer comment créer un ensemble de données facile à importer en utilisant notre plug-in nuxeo-showcase-content-importer, comme nous le faisons dans Nuxeo Showcase Content, avec de nombreux documents Nuxeo de base, ou dans Nuxeo Getting Started.
Création du jeu de données
La première étape est d’importer les données dans un serveur Nuxeo en cours d’exécution. Vous pouvez utiliser le bouton import
dans l’UI JSF, ou le bouton +
dans Web UI. Si vous avez un grand nombre de documents et que vous avez besoin d’une solution plus performante, l’API REST ou d’autres outils d’import sont parfaits, mais un peu plus complexes.
Optimisation de l’export
Votre serveur Nuxeo contient désormais tous les documents/fichiers importés à l’étape précédente. Vous souhaitez désormais les exporter, mais avant d’utiliser notre export zip
, je tiens à attirer votre attention sur le fait que le plug-in showcase-content-importer
déclenche à nouveau tous les éléments générés, ce qui vous évitera d’exporter un énorme fichier zip avec les différentes vues des images, les encodages des vidéos, etc.
Supprimons donc tous ces éléments générés avant l’export et assurons-nous que tous ces documents ont bien été effacés, le but étant de ne pas les inclure dans notre export. La méthode la plus efficace est d’arrêter votre serveur puis d’exécuter la requête SQL suivante dans votre base de données :
delete from hierarchy where primarytype = 'view' or primarytype = 'storyboarditem' or primarytype = 'transcodedVideoItem';
Vous pouvez ensuite redémarer votre serveur, aller à la racine et lancer l’action Zip Export
à partir du menu export
de Web UI ou de l’UI JSF.
Création du bundle de données
Maintenant que nous avons exporté notre fichier zip
sans inclure les documents techniques inutiles, nous allons en faire un package Nuxeo pouvant être déployé n’importe où.
Préparation du package
Nous allons utiliser Nuxeo Generator qui permet de créer un package Nuxeo vide en une seule commande.
`
$ yo nuxeo –type=”ressources” single-module package
create Generating Multi module (Your project parent POM) info Parameters: Use a parent artifact, Parent group, Parent artifact, Parent version, Import nuxeo in the dependency management
, Nuxeo version, Project group, Project artifact, Project version, Project description ? Use a parent artifact (for instance your company’s BOM or the org.nuxeo.ecm.distribution:nuxeo-distribution POM)? Yes ? Parent Group id: org.nuxeo.ecm.distribution ? Parent Artifact id: nuxeo-distribution ? Parent Version: 8.10 ? Project Group id: org.nuxeo.provisioning ? Project Artifact id: easy-provisioning-parent ? Project Version: 1.0-SNAPSHOT ? Project Description:
create Generate Module: easy-provisioning-ressources
create Generating Single module info Parameters: Nuxeo version, Project group, Project artifact, Project version, Project description ? Project Group id: org.nuxeo.provisioning ? Project Artifact id: easy-provisioning-ressources ? Project version: 1.0-SNAPSHOT ? Project description:
create Generate Module: easy-provisioning-package
create Generating Package info Parameters: Package artifact, Package version, Package name, Company name ? Package Artifact id: easy-provisioning-package ? Package Version: 1.0-SNAPSHOT ? Package name: easy-provisioning ? Company name: `
Votre répertoire devrait ressembler à ça :
$ tree -d . ├── easy-provisioning-package │ └── src │ └── main │ ├── assemble │ └── resources │ └── install │ └── templates │ └── easy-provisioning └── easy-provisioning-ressources └── src ├── main │ ├── java │ │ └── org │ │ └── nuxeo │ │ └── provisioning │ └── resources │ ├── META-INF │ └── OSGI-INF └── test ├── java │ └── org │ └── nuxeo │ └── provisioning └── resources
Ajout d’une dépendance au plug-in nuxeo-showcase-content-importer
Notre package Nuxeo est prêt à être déployé, mais nous avons besoin d’une dépendance vis-à-vis de nuxeo-showcase-content-importer
, qui doit importer le zip précedemment exporté.
Nous devons nous assurer que le fichier assembly.xml
va copier les bundles attendus lors du processus. Pour ce faire, il suffit d’ajouter une dépendance directe à org.nuxeo.ecm.platform:nuxeo-showcase-content-importer
dans le fichier easy-provisioning-package/pom.xml
:
<dependencies>.. <dependency><groupid>org.nuxeo.ecm.platform</groupid> <artifactid>nuxeo-showcase-content-importer</artifactid></dependency></dependencies>
Ajout du fichier exporté
Le package Nuxeo a été créé à l’aide du générateur. Il contient tout ce dont nous avons besoin, à l’exception de notre fichier zip
exporté. Nommez-le easy-provisioning.zip
et copiez-le vers le répertoire easy-provisioning-ressources/src/main/resources
. Ajoutez une contribution pour le déclarer (easy-provisioning-ressources/src/main/resources/OSGI-INF/
) :
<component name="org.nuxeo.provisioning"><extension target="org.nuxeo.ecm.showcase.content" point="contents"><content name="easy-provisioning"><filename>easy-provisioning.zip</filename></content></extension></component>
Ajoutez ensuite cette contribution au fichier easy-provisioning-ressources/src/main/resources/META-INF/MANIFEST.MF
:
Nuxeo-Component: OSGI-INF/showcasecontent-resources-contrib.xml
Déploiement du package
Il ne vous reste plus qu’à déployer et installer votre package :
$ mvn install $ cd $NUXEO_HOME $ ./bin/nuxeoctl mp-install easy-provisioning-package/target/easy-provisioning-package-1.0-SNAPSHOT.zip
Et c’est tout ! Votre contenu n’est importé qu’une fois et tous les convertisseurs vont travailler d’arrache-pied pour recréer toutes les vues des images, les storyboards des vidéos et les vidéos encodées.