CMIS Introduction


Published on

Introduction to CMIS, Content Management Interoperability Services, by Ken Coenen.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

CMIS Introduction

  1. 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 201101/12/2011 1
  2. 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 Sharepoint01/12/2011 2
  3. 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&A01/12/2011 3
  4. 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 standardisation01/12/2011 4
  5. 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. 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-in01/12/2011 6
  7. 7. The Lord of the Rings principle• “One source code to interoperate with them all”01/12/2011 7
  8. 8. Contributors And many more…01/12/2011 8
  9. 9. Contributors • Three original CMIS proposers are ALL in the Gartner Magic Quadrant • Everyone is a sponsoring member!01/12/2011 9
  10. 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 Extensions01/12/2011 10
  11. 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 ECM01/12/2011 11
  12. 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. 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 bug01/12/2011 13
  14. 14. Application-2-Repository• Repository-2-Repository is also possible eg. Sharepoint has a CMIS Consumer and a CMIS Producer01/12/2011 14
  15. 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 provider01/12/2011 15
  16. 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 developers01/12/2011 16
  17. 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. 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. 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. 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. 21. Useful links• CMIS on Wikipedia• Oasis• OpenCMIS• Cookbook page• Spring Surf CMIS Sources• Apache Abdera• Alfresco CMIS Wiki01/12/2011 21
  22. 22. Questions?• (and hopefully answers) Thank you!01/12/2011 22
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.