Nuxeoサーバに既存のデータセットをプロビジョニングしたいことがよくあります。たとえば、複数の環境間で同じデータセットが必要な場合や、サーバの設定中にデータセットをインポートしたい場合があります。今日は、プラグインnuxeo-showcase-content-importerを使用してインポート用のデータセットを構築する方法を説明します。一連の基本的なNuxeo Documentsを含むNuxeo Showcase ContentNuxeo Getting Startedでの取り扱いと同様に行います。

##データの作成

最初に、実行中のNuxeoサーバにデータをインポートすることが必要です。これには、JSF UIの「インポート」ボタンか、Web UIの「+」ボタンを使用することができます。たくさんのドキュメントがある場合など、もっと機能が必要な場合は、REST APIやその他のインポータで目的が達成されるはずですが、もう少し作業が必要です。

##エクスポートの最適化

Nuxeoサーバには、前の手順でインポートしたすべてのドキュメント/ファイルが含まれています。文書がたくさんあるので、それらをエクスポートしたいと思います。しかし、「export zip」を使う前に、「showcase-content-importer」が全ての生成物を再トリガして、全てのピクチャビュー、ビデオエンコーディングなどを含む巨大なジップをエクスポートできないよう警告したいと思います。

したがって、エクスポートの前にこれらの生成されたドキュメントをすべて削除し、それらがエクスポートの一部にならないようにするため、破棄されたドキュメントが全部クリアされていることを確認してください。無駄な文書を減らす最も簡単な方法は、サーバを停止し、データベースで次のSQLクエリを実行することです。

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

これで、サーバを再起動してルート文書に移動し、Web UIまたはJSF UIを使用して「Export」メニューの「Zip Export」アクションを使用することができます。

##データのバンドル

無駄な技術文書なしで「zip」ファイルをエクスポートしたので、zipファイルをNuxeo Packageに入れます。これでどこにでも展開することができます。

###パッケージの準備

パッケージを準備するには、Nuxeo Generatorを使用します。1つのコマンドで空のNuxeo Packageをブートストラップするのに役立ちます。

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

フォルダは次のようになります。

$ 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

nuxeo-showcase-content-importerプラグインに依存関係を追加する

Nuxeo Packageはすぐに展開できるようになっていますが、エクスポートされたzipをインポートするには「nuxeo-showcase-content-importer」に依存しなければなりません。

「assembly.xml」ファイルが、期待されるバンドルをビルドプロセス中にコピーするようにする必要があります。これを行うには、「easy-provisioning-package/pom.xml」ファイルの「org.nuxeo.ecm.platform:nuxeo-showcase-content-importer」に直接依存関係を追加するだけです。

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

###エクスポートされたファイルを追加する

ジェネレータを使ってNuxeo Packageの準備を終えました。エクスポートされた「zip」ファイル以外、必要なものがすべて含まれています。それを「easy-provisioning.zip」という「easy-provisioning-ressources/src/main/resources」フォルダにコピーしてください。それを宣言するために投稿を追加します(「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>

次に、この投稿を「easy-provisioning-ressources/src/main/resources/META-INF/MANIFEST.MF」ファイルに追加します。

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

###パッケージを展開する

これでパッケージをビルドしてインストールするだけです。

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

以上です!コンテンツは一度だけインポートされ、すべてのコンバータはすべての画像ビュー、ビデオストーリーボード、およびエンコードされたビデオを再作成していきます!