Date post: | 08-May-2015 |
Category: |
Technology |
Upload: | abc-groepbe |
View: | 1,586 times |
Download: | 2 times |
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)
21
Useful links
01/12/2011
• CMIS on Wikipedia• Oasis• OpenCMIS • Cookbook page• Spring Surf CMIS Sources• Apache Abdera• Alfresco CMIS Wiki
22
Questions?
01/12/2011
• (and hopefully answers)
Thank you!