Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
CMIS Introduction
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