Wie man einen Datensatz für den einfachen Import bündelt


Thu 12 January 2017 Von Arnaud Kervern

Vielleicht möchten Sie öfters bestehende Datensätze auf einen Nuxeo Server hochladen. Sie möchten beispielsweise den gleichen Datensatz zwischen mehreren Umgebungen teilen oder möglicherweise den Datensatz nur importieren, während Sie Ihren Server einrichten. Heute möchte ich Ihnen erklären, wie wir einen Datensatz für den Import mithilfe unseres Plug-ins nuxeo-showcase-content-importer erstellen können. Wir gehen genau wie mit dem Nuxeo Showcase Content vor, das eine Reihe einfacher Nuxeo Dokumente enthält, oder wie in Nuxeo Getting Started dargestellt.

Erstellen Ihrer Daten

Zunächst müssen wir Daten in einen laufenden Nuxeo Server importieren. Verwenden Sie dazu die Schaltfläche "importieren" in der JSF UI oder die Schaltfläche "+" in der Web UI. Sollten Sie mit sehr vielen Dokumenten arbeiten und größere Kapazitäten benötigen, sollte die REST API oder jeder andere Importer dafür geeignet sein. Dies ist jedoch mit etwas mehr Aufwand verbunden.

Optimierung Ihres Exports

Jetzt sind alle Dokumente/Dateien, die Sie im vorherigen Schritt importiert haben, auf dem Nuxeo Server vorhanden. Er enthält eine große Menge an Dokumenten, die Sie exportieren möchten. Bevor Sie jedoch Ihre "export zip" verwenden, möchte ich Sie warnen, dass der "showcase-content-importer" alle erstellten Inhalte erneut auslöst, weshalb Sie keine riesige zip-Datei exportieren können, die alle Bildansichten, Videocodierungen usw. enthält.

Wir entfernen also zunächst all diese erstellten Dokumente vor dem Export und stellen sicher, dass alle in den Papierkorb verschobenen Dokumente gelöscht wurden, da wir diese nicht exportieren möchten. Sie reduzieren die Zahl unnützer Dokumente am einfachsten, indem Sie Ihren Server anhalten und dann die folgenden SQL-Abfrage in Ihrer Datenbank ausführen.

delete from hierarchy where primarytype  = 'view' or primarytype = 'storyboarditem' or primarytype = 'transcodedVideoItem';

Jetzt können Sie Ihren Server neu starten, zu Ihrem Stammdokument gehen und den Befehl "Zip Export" im "Export"-Menü mithilfe der Web UI oder der JSF UI ausführen.

Bündelung der Daten

Nachdem wir unsere "zip"-Datei ohne nutzlose technische Dokumente exportiert haben, packen wir die zip-Datei in ein Nuxeo Paket, um es an einer anderen Stelle bereitzustellen.

Vorbereitung des Pakets

Wir bereiten das Paket mithilfe des Nuxeo Generator vor. Dieser hilft, ein leeres Nuxeo Paket mit einem Befehl zu starten.

$ 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:

Ihr Ordner sollte folgendermaßen aussehen:

$ 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

Fügen Sie dem nuxeo-showcase-content-importer Plug-in eine Abhängigkeit hinzu

Unser Nuxeo Paket kann bereitgestellt werden, wir sind jedoch auf den "nuxeo-showcase-content-importer" angewiesen, um Ihre exportierte zip-Datei importieren zu können.

Wir müssen sicherstellen, dass die "assembly.xml"-Datei während der Erstellung die erwarteten Bündel kopiert. Fügen Sie dazu einfach eine direkte Abhängigkeit zu "org.nuxeo.ecm.platform:nuxeo-showcase-content-importer" in der Datei "easy-provisioning-package/pom.xml" hinzu:

<dependencies>
  <!-- Additional bundles to be deployed by the MP -->
  ..
  <dependency>
    <groupId>org.nuxeo.ecm.platform</groupId>
    <artifactId>nuxeo-showcase-content-importer</artifactId>
  </dependency>
</dependencies>

Hinzufügen der exportierten Datei

Wir haben soeben die Erstellung eines Nuxeo Pakets mithilfe des Generator abgeschlossen. Es enthält alles was wir benötigen, außer unserer exportierten "zip"-Datei. Kopieren Sie diese in den Ordner "easy-provisioning-ressources/src/main/resources" mit dem Namen "easy-provisioning.zip". Fügen Sie eine Contribution hinzu, um sie festzulegen ("easy-provisioning-ressources/src/main/resources/OSGI-INF/"):

<?xml version="1.0" encoding="UTF-8" ?>
<component name="org.nuxeo.provisioning">
  <extension target="org.nuxeo.ecm.showcase.content" point="contents">
    <content name="easy-provisioning">
      <!-- Use the name of your zip file -->
      <filename>easy-provisioning.zip</filename>
    </content>
  </extension>
</component>

Fügen Sie diese Contribution dann der Datei "easy-provisioning-ressources/src/main/resources/META-INF/MANIFEST.MF" hinzu:

Nuxeo-Component: OSGI-INF/showcasecontent-resources-contrib.xml

Bereitstellung Ihres Pakets

Sie müssen jetzt nur noch Ihr Paket erstellen und installieren:

$ mvn install
$ cd $NUXEO_HOME
$ ./bin/nuxeoctl mp-install easy-provisioning-package/target/easy-provisioning-package-1.0-SNAPSHOT.zip

Das ist alles. Ihr Content wird nur einmal importiert und alle Konverter arbeiten mit voller Leistung, um Bildansichten, Video Storyboards und codierte Videos wiederherzustellen.


Etikettiert: Nuxeo Platform, Nuxeo Plugin, How to