This project provides higher level features and examples of Content Import and Export, using Hippo Workflow API (for higher/workflow level document management), Hippo JCR POJO Binding library (for lower level JCR mappings/bindings) and Gallery Magick Image Processing library (for thumbnail image generation).
So, while Hippo JCR POJO Binding library focuses only on JCR Node level mappings and bindings and doesn't provide any Hippo Workflow level operations, this project aims to provide higher level, that is, Hippo Workflow level, Content Export/Import features.
In other content import tools such as Hippo CMS Import tool or any custom import modules (e.g, DaemonModule with REST API calls), you can easily see them very complicated. Those tools do provide too many features such as task execution engine, a specific POJO mapping, link resolutions between imported documents and binaries, specific XML format support, etc.
It sounded promising, but those were too much to maintain and furthermore most of those services were not really core features that a content import tool should provide.
We believe the core features needed for a content import tool are just as follows instead:
The other features can be easily replaced by other existing services. For example,
As mentioned above, link resolution between imported documents caused so complicated implementations in other content import modules in the past.
In this module, we would like to avoid that kind of complication by simplifying the approach like the following:
This project provides migration task componets which can be used in any Java application or in Groovy updater scripts instead of trying to provide a whole new UI.
There are basically four content migration task interfaces for which components are provided by this project:
|BinaryExportTask||ContentMigrationTask to export binary (gallery/asset) data to ContentNode objects.||DefaultBinaryExportTask|
|DocumentVariantExportTask||ContentMigrationTask to export document variant nodes to ContentNode objects.||WorkflowDocumentVariantExportTask|
|BinaryImportTask||ContentMigrationTask to import binary (gallery/asset) data from ContentNode objects.||DefaultBinaryImportTask|
|DocumentVariantImportTask||ContentMigrationTask to import ContentNode objects and create or update documents.||WorkflowDocumentVariantImportTask|
Also there are some other core components used by the task implementations:
|DocumentManager||Hippo CMS Document/Folder Workflow manager to be used when maintaining Hippo folders and documents.||WorkflowDocumentManagerImpl|
You can find the following example groovy updater scripts using the task components in the demo project:
|Updater script name||Description|
|Example - Export Asset and Image Set Content||A example script to export asset and image set content, using BinaryExportTask.|
|Example - Export Published Documents||A example script to export published documents, using DocumentVariantExportTask.|
|Example - Import Asset and Image Set Content||A example script to import asset and image set content, using BinaryImportTask.|
|Example - Import Image Files||A example script to import image set content by scanning image files in a directory without JSON files, using BinaryImportTask.|
|Example - Import Documents As Unpublished||A example script to import documents as unpublished status, using DocumentVariantImportTask.|
|Example - Clean Hippo Mirror Docbase Values Having Paths||A example script to clean interim hippo:docbase values of Hippo Mirror nodes having paths instead of UUIDs.|
|Example - Clean Hippo String Docbase Property Values Having Paths||A example script to clean interim String Docbase property values having paths instead of UUIDs.|
You will see more explanations in the Tutorial pages.
A demo project with Hippo CMS 11 is not prepared yet. Please run the demo for Hippo CMS 10 described below.
You can check out, build and run demo application, which contains all the examples explained in this site documentation.
Here are example commands to check out, build and run demo application:
$ svn checkout https://forge.onehippo.org/svn/content-exim/content-exim-demo/branches/content-exim-demo-1.2.xx content-exim-demo-1.2.xx $ cd content-exim-demo-1.2.xx $ mvn clean verify $ mvn -P cargo.run
Visit http://localhost:8080/cms/ and Control Panel / Updater Editor in the Admin perspective to test it with the following example groovy updater scripts like the following (as ordered):
Note: As a functional testing, you might want to remove the following nodes through CMS Console (http://localhost:8080/cms/console/) to see how it exports and imports content after exporting all the content and before importing all the content back (between #2 and #3).