cmis introduction

Post on 08-May-2015

1.593 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

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

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

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

7

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

01/12/2011

8

Contributors

01/12/2011

And many more…

9

Contributors

01/12/2011

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

• Everyone is a sponsoring member!

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

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

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

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

14

Application-2-Repository

01/12/2011

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

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

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

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

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

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

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)

22

Questions?

01/12/2011

• (and hopefully answers)

Thank you!

top related