Functional Overview
Depending on your user interface you can access collections by different means.
Collecting Documents
You can classify any type of document in a collection. You just need to have Read access to the document to be able to collect it. Collecting a document doesn't give you more permissions on the document: your permissions are the one defined on the original parent of the document.
Documents can be collected:
- Individually by clicking on the icon
of the document
- By batch by selecting documents from a list of documents and clicking on the icon
in the selection header.
In both cases you can select the collection by:
- Browsing the collections in the list
- Starting to type the collection name and select it
- Typing a new collection name to create it
The list of collections the document is available from is displayed on its View tab.


Creating Collections
Sharing a Collection
Removing Documents from a Collection
To remove a document from a collection click on the icon of the collection from the document view.


To remove several documents from a collection:
- Go to the Collections tab in your side menu.
- Click on the collection name that you want to manage.
- Select the documents to remove using the checkboxes.
- In the selection header, click on the Remove from collection icon
.


In both ways documents are immediately removed from the collection.
Favorites
Favorites is a particular collection that enables you to bookmark documents.
The list of documents bookmarked as favorites is available:
- On the dashboard in the Favorite Item widget
- On the Favorites Tab in the side menu
Bookmarking documents in your favorites can be done similarly to adding documents to a collection and selecting the Favorites collection, or using the Favorites icon from the document itself.
Once the document is added to your favorites, it will be available in the dashboard and in the Favorites tab.
Installation and Configuration
The collection module has no specific installation step as it is already included in the default Nuxeo Platform distribution.
Customization
How to Implement a New Type of Collection
If you'd like to implement a new collection (for instance to have new metadata) you can simply add the Collection
facet to your specific document type. You'll therefore be able to use it as a regular collection.
<require>org.nuxeo.ecm.collections.schemas</require>
<extension target="org.nuxeo.ecm.core.schema.TypeService" point="schema">
<schema name="yourSchema" src="schemas/xxx.xsd" prefix="xxx" />
</extension>
<extension target="org.nuxeo.ecm.core.schema.TypeService" point="doctype">
<facet name="YourFacet" >
<schema name="yourSchema" />
</facet>
<doctype name="YourDocumentType" extends="Document">
<facet name="YourFacet" />
<facet name="Collection" />
</doctype>
</extension>
NotCollectionMember Facet
All documents can be added to a collection except:
- Documents with the facet
SystemDocument
- Documents with the facet
NotCollectionMember
By default, documents of type Collection
, WorkspaceRoot
, TemplateRoot
, SectionRoot
, Domain
and Root
have the facet NotCollectionMember
. Please see collection-core-types-contrib.xml for more details.
Plugging Business Rules to Collection Specific Events
Several events related to collections are available:
beforeAddedToCollection
addedToCollection
beforeRemovedFromCollection
removedFromCollection
The collection reference is available in the event context map. For example, within an event listener which starts an automation chain, you can fetch the collection as described below:
- Document.Fetch:
value: "@{Event.context.getProperty(\"collectionRef\").reference()}"
Synchronizing a Collection with Nuxeo Drive
To do so you need to add the following XML contribution with either Nuxeo Studio or a custom bundle:
<component name="org.nuxeo.drive.actions.collections">
<require>org.nuxeo.drive.actions</require>
<extension target="org.nuxeo.ecm.platform.actions.ActionService"
point="filters">
<filter id="can_sync_current_doc" append="true">
<rule grant="true">
<type>Collection</type>
</rule>
</filter>
</extension>
</component>


Yet you can always unsynchronize the collection from the Nuxeo Drive tab in the user Home.
Notes:
- Files or folders created in the locally synchronized collection folder will not be added to the collection server-side. For now we have no mechanism to choose their path in the hierarchy.
- Please be aware that all the limitations applied to online editing with Nuxeo Drive apply to synchronized collections.
Core Implementation
A collection holds the list of references of the documents it contains. Conversely, a document holds the list of references of the collections it belongs to.
Collection operation are offered by the CollectionManager.java service.
Because a collection can potentially contain a large number of documents and, to a lesser extent, a document can belong to many collections, some tasks are performed asynchronously.
For instance, when deleting a collection, an asynchronous work will update the documents it contains to remove the reference of the deleted collection. In the same way, when a document is removed, an asynchronous work will update the collection it belonged to in order to remove the reference of the deleted document.
Finally, when copying a collection, an asynchronous work will also duplicate its content.