cmis introduction

22
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 1 01/12/2011

Upload: abc-groepbe

Post on 08-May-2015

1.599 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: CMIS Introduction

1

Our Mission is to bring competence and expertise for thenew and ongoing IT and business projects of our customers

Content Management Interoperability Services (CMIS)

Ken Coenen1 December 2011

01/12/2011

Page 2: CMIS Introduction

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

Page 3: CMIS Introduction

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

Page 4: CMIS Introduction

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

01/12/2011

No standardisation

Page 5: CMIS Introduction

5

What is CMIS?• A standard enabling information sharing between different

Content Management SystemsNote: 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

Page 6: CMIS Introduction

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

Page 7: CMIS Introduction

7

The Lord of the Rings principle• “One source code to interoperate with them all”

01/12/2011

Page 8: CMIS Introduction

8

Contributors

01/12/2011

And many more…

Page 9: CMIS Introduction

9

Contributors

01/12/2011

• Three original CMIS proposers are ALL in the Gartner Magic Quadrant

• Everyone is a sponsoring member!

Page 10: CMIS Introduction

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

Page 11: CMIS Introduction

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

Page 12: CMIS Introduction

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

Page 13: CMIS Introduction

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

Page 14: CMIS Introduction

14

Application-2-Repository

01/12/2011

• Repository-2-Repository is also possibleeg. Sharepoint has a CMIS Consumer and a CMIS Producer

Page 15: CMIS Introduction

15

Client libraries

01/12/2011

• 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 ProtocolMay be used as a client library to any CMIS AtomPub binding provider

Page 16: CMIS Introduction

16

Apache OpenCMIS

01/12/2011

• 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

Page 17: CMIS Introduction

17

Demo

01/12/2011

• Connect to the Alfresco repositoryMap<String, String> parameters = new HashMap<String, String>();

parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());parameters.put(SessionParameter.ATOMPUB_URL, <AtomPubUrl>);parameters.put(SessionParameter.USER, <Username>);parameters.put(SessionParameter.PASSWORD, <Password>);

Page 18: CMIS Introduction

18

Demo

01/12/2011

• 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);

Page 19: CMIS Introduction

19

Demo

01/12/2011

• When eventually creating the session, you must have specified a repository, otherwise an Exception will be thrown:

Session session = sessionFactory.createSession(parameters);

Page 20: CMIS Introduction

20

Future

01/12/2011

• 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)

Page 22: CMIS Introduction

22

Questions?

01/12/2011

• (and hopefully answers)

Thank you!