Document Model - BloomReach Experience - Open Source CMS

This article covers a Hippo CMS version 12. There's an updated version available that covers our most recent release.


Document Model

Documents and Folders

In the Hippo Repository, folders are in general of type hippostd:folder, which defines the types of documents and child folders that can be created with the FolderWorkflow.

Documents are represented by hippo:handle nodes. These nodes can have multiple children with sub-types of hippo:document. They are termed 'variants'. Documents with simple workflows, like images and assets, only have one such variant. But the more complex 'documentworkflow' workflow manages three such variants (see below).

Each folder node has a mix:referenceable mixin added to it. Document variants also get the mix:referenceable mixin by default, unless a version history is needed, in which case the mix:versionable mixin is used. Similarly, handles have the mix:referenceable mixin, reflecting the fact that their UUIDs can be used to reference the document.

In YAML format, a typical node structure in the repository therefore looks something like this:

  jcr:primaryType: hippostd:folder
  jcr:mixinTypes: ['hippo:named', 'hippotranslation:translated', 'mix:referenceable']
  jcr:uuid: 92f48970-7b13-4c68-8a2e-491c84588b9c
  hippo:name: My Hippo Project
  hippostd:foldertype: [new-translated-folder, new-document]
  hippotranslation:id: 996bcac5-86cf-49b5-a7a3-16a74863e814
  hippotranslation:locale: en
    jcr:primaryType: hippostd:folder
    jcr:mixinTypes: ['hippotranslation:translated', 'mix:referenceable']
    jcr:uuid: fbbfb1ab-2b57-4ae3-b1f0-a3597c3df94d
    hippostd:foldertype: [new-content-document, new-content-folder]
    hippotranslation:id: 6297cf67-37d8-428e-aaf1-d64a5289af8a
    hippotranslation:locale: en
      jcr:primaryType: hippo:handle
      jcr:mixinTypes: ['hippo:named', 'mix:referenceable']
      jcr:uuid: 64ab4648-0c20-40d2-9f18-d7a394f0334b
      hippo:name: Sample document
        jcr:primaryType: myhippoproject:contentdocument
        jcr:mixinTypes: ['mix:referenceable']
        jcr:uuid: 570182a8-2b85-48c9-ad66-8c0ee529c6bd
        hippo:availability: [live]
        hippostd:holder: admin
        hippostd:state: published
        hippostdpubwf:createdBy: admin
        hippostdpubwf:creationDate: 2014-03-25T16:52:00+01:00
        hippostdpubwf:lastModificationDate: 2014-03-25T16:52:00+01:00
        hippostdpubwf:lastModifiedBy: admin
        hippostdpubwf:publicationDate: 2014-03-25T16:52:00+01:00
        hippotranslation:id: ce342189-ee92-494e-8589-33d219e7cefb
        hippotranslation:locale: en
        myhippoproject:introduction: Lorem Ipsum is simply dummy text of the printing
          and typesetting industry.
        myhippoproject:publicationdate: 2014-03-25T16:52:00+01:00
        myhippoproject:title: Lorem