1. Our Mission is to bring competence and expertise for the
new and ongoing IT and business projects of our customers
Content Management
Interoperability Services (CMIS)
Ken Coenen
1 December 2011
01/12/2011 1
2. Who am I and what am I doing?
• Ken Coenen
• Java Consultant @ AXI
• Working on Case Management – built in document system
• Researching ECM integration with the CMIS
standard, focussing on Alfresco and Sharepoint
01/12/2011 2
3. Agenda
• The problem
• What is CMIS?
• Contributors to the CMIS Specification
• CMIS Compliancy
• Bindings
• Repository-2-Repository and Application-2-Repository
• Client libraries (Apache OpenCMIS)
• Demo: Alfresco Community Edition 4.0.b
• Useful links
• Q&A
01/12/2011 3
4. The problem
• A lot of different vendors for Enterprise Content Management
Systems (ECMs)
• They all have different interfaces
• Searching all repositories is virtually impossible
• Eventually the purpose of the document management
systems gets lost: documents end up dying in the repository
because nobody can access them
No standardisation
01/12/2011 4
5. What is CMIS?
• A standard enabling information sharing between different
Content Management Systems
Note: It doesn’t say how these features must be implemented
by the repository vendor!
• Content Management Interoperability Services
• Approved by OASIS, a web standards consortium, on
may 1, 2010.
• Advantages:
– Programming language neutral (every language talks WS or REST)
– Platform independent
– No more vendor lock-in – maybe!
01/12/2011 5
6. Theoretically this means…
• You can write applications targeting SP
2010, Alfresco, Documentum and other ECM systems using
Apache Chemistry OpenCMIS (or some other CMIS client API –
or your own ), without writing one line of vendor-specific
code
• Compare it with JDBC to connect to any database that
provides a JDBC driver
• Called “The SQL of content” – Actually there is also a CMIS
Query Language built-in
01/12/2011 6
7. The Lord of the Rings principle
• “One source code to interoperate with them all”
01/12/2011 7
9. Contributors
• Three original CMIS proposers
are ALL in the Gartner Magic
Quadrant
• Everyone is a sponsoring
member!
01/12/2011 9
10. What is supported?
• Repository-, navigation-, object-, versioning-, multifiling-,
ACL-, policy-, discovery-, and relationship services
• No vendor-unique functionality
eg. Alfresco’s Aspects, Sharepoint Document Sets, …
• Some extra functionality exposed through CMIS Extensions
01/12/2011 10
11. Compliancy
• An ECM is “CMIS compliant” when all MUST-specifications are
supported
• CMIS Specification – MUST and MAY
• Capabilities queryable through Repository Information
– Navigation capabilities (Get descendants, …)
– Filing capabilities (Multifiling, Un-filing, …)
– Versioning capabilities
– Query capabilities (Full text search, Metadata, Combined, …)
• SOAP and REST binding must be supported by the ECM
01/12/2011 11
12. CMIS details
• CMIS provides a Domain Model with primary data types of
documents, folders, relationships and policies
• CMIS Query Language to search for documents and folders
= Read-only relational view (cfr. Database, but virtual
columns)
eg. SELECT ObjectId, SCORE() AS Relevance,
FROM TravelBrochure
WHERE CONTAINS(‘CARIBBEAN CENTRAL AMERICA CRUISE TOUR’)
01/12/2011 12
13. CMIS Bindings
• Web Services (SOAP)
Different Services, more structured cfr. CMIS Domain Model
• AtomPUB (REST)
URLs and HTTP methods GET, POST, PUT, DELETE
• Which binding?
– Both have good/almost identical performance
– Same authentication methods
– Sometimes one implementation contains a bug
01/12/2011 13
15. Client libraries
• Apache Chemistry
– OpenCMIS (Java) – Released september 2010
– cmislib (Python)
– CMIS PHP Client (PHP)
– DotCMIS (.NET) – Released march 2011
• Spring Surf CMIS
= View composition framework for Spring MVC that plugs into
your existing Spring applications
• Apache Abdera CMIS Extension
= high-performance implementation of the IETF Atom
Syndication Format and Atom Publishing Protocol
May be used as a client library to any CMIS AtomPub binding
provider
01/12/2011 15
16. Apache OpenCMIS
• Collection of Java libraries, frameworks and tools around the
CMIS specification
• Make CMIS simple for Java client and server developers
through an understandable API
• Provides an abstraction layer – hides the binding details
(choose implementation when creating the session)
• Also includes test tools (TCK = Test Compatibility Kits) for
content repository developers and client application
developers
01/12/2011 16
17. Demo
• Connect to the Alfresco repository
Map<String, String> parameters = new
HashMap<String, String>();
parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.v
alue());
parameters.put(SessionParameter.ATOMPUB_URL, <AtomPubUrl>);
parameters.put(SessionParameter.USER, <Username>);
parameters.put(SessionParameter.PASSWORD, <Password>);
01/12/2011 17
18. Demo
• You can then either specify a repository you want to connect
to:
parameters.put(SessionParameter.REPOSITORY_ID, repository.getId
());
• Or first query a list of all possible repositories:
List<Repository> repositories =
sessionFactory.getRepositories(parameters);
01/12/2011 18
19. Demo
• When eventually creating the session, you must have
specified a repository, otherwise an Exception will be thrown:
Session session = sessionFactory.createSession(parameters);
01/12/2011 19
20. Future
• For the moment basics only
• Still a young standard, so a lot of improvements on the way
• On the CMIS side (CMIS 2.0 already being suggested), but also
on the Vendor’s side (continued CMIS support and bug fixes)
01/12/2011 20
21. Useful links
• CMIS on Wikipedia
• Oasis
• OpenCMIS
• Cookbook page
• Spring Surf CMIS Sources
• Apache Abdera
• Alfresco CMIS Wiki
01/12/2011 21