This document discusses Content Management Interoperability Services (CMIS), an open standard for accessing content management systems. It provides an overview of CMIS including its timeline, domain model, services, and bindings. It also demonstrates sample CMIS code for adding a document to a folder and querying documents. Key points are made about dealing with different CMIS repositories and things to be aware of when using CMIS.
3. Agenda
3
• The need for ECM interoperability
• CMIS timeline & Nuxeo’s early leadership
• Quick look at some code
• About the CMIS spec
• Apache Chemistry: A reference implementation
• Getting started
• Live Example
• Things to watch out for
• Q & A
7. Content Management Interoperability Services
• Domain Model
• Document, Folder, Relationship, Item, Type,
Secondary Type (Aspect), ACL
• Services
• Query Language
• Subset of SQL
• Bindings
• Browser (JSON)
• Atom Pub (XML)
• Web Services
#nuxeoCMIS
8. Nuxeo Got Involved Early
2008: Nuxeo joins OASIS to work on the spec
2009: Nuxeo proposes Apache Chemistry project
• 5 out of 9 of the original committers are from Nuxeo
2011: Apache Chemistry becomes a top-level project
2013: CMIS 1.1 becomes an OASIS standard
2010: CMIS 1.0 becomes an OASIS standard
#nuxeoCMIS
10. CMIS Addresses Interoperability
72% of enterprises have more than one
ECM repository…25% have three or more
“State of the ECM Industry,” AIIM, 2011
#nuxeoCMIS
11. Let’s Look at Some Code
GOAL:
Write Java code that will add a
document to a folder that will work
when run against any CMIS repository.
#nuxeoCMIS
16. CMIS Query Language
SELECT cmis:objectId, cmis:name,
cmis:description, dc:contributors
FROM cmis:document
WHERE cmis:name like 'sample%'
SELECT cmis:objectId, cmis:name,
cmis:description, dc:contributors
FROM cmis:document
WHERE CONTAINS('white paper')
17. Read the Spec
CMIS Specification Home Page
https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cmis
Current Version: CMIS 1.1
Approved: December, 2012
#nuxeoCMIS
20. Dealing with Different Repositories
• Imagine writing an industry specification that
must work for repositories that already exist
• Challenge:
1. Be flexible enough to support the broad
range of functionality in the industry
2. Be descriptive enough to add value as a
standard
#nuxeoCMIS
21. Nuxeo 7.1 Repository Capabilities
Vendor Info
Capabilities
Root folder ID
Change token
#nuxeoCMIS
24. CMIS in the Real World
• Renditions, renditions, renditions...
• Use case: Get all changed documents
• Use case: Content migrations
#nuxeoCMIS
25. Things to Know
• Pay attention to repository capabilities
• Cache the CMIS Session
• Treat object IDs as opaque
• Prefer the browser binding
• What you ask for can affect performance
• getDescendants(), getChildren()
• select * from cmis:document
• Large documents?
• appendContentStream()
• Change tokens
#nuxeoCMIS