This session will provide an overlook of the adoption of CMIS after one year from it’s ratification as OASIS standard. By providing several real life deployment success stories and integration scenarios, we’ll offer a close look to the many practical applications of the standard, especially leveraging the Apache Chemistry OpenCMIS implementation. We will conclude presenting highlights of the Alfresco CMIS strategy and discuss more advanced aspects of our CMIS implementation like performance and compliance.
1. CMIS in the “real world”
Or “Why bother writing custom APIs when you have standard ones”?
2. Agenda
How did we get here?
• From Babel to Esperanto
• CMIS quick reference card
How & What can I build?
• Apache Chemistry state of the nation
• What can I do with CMIS?
• Application to Repository (a2r)
• Repository to Repository (r2r)
How people use CMIS?
• CMIS & Alfresco
• a2r CMIS product integrations
• CMIS performances
Demo (s)
3. Once upon a time…
Builders of way too many…
Towers of Babel !
5. Did not take too long to get to…
Initiated by
CMIS Technical
IBM, EMC
Committee formed at
& Microsoft
CMIS V1.0
OASIS
Published
1st Public
2nd
Review
Public
CMIS
Review
Announced
Late
Sept
Oct
Oct
Jan
May
2007
2008
2008
2009
2010
2010
OASIS approved CMIS as an OASIS Specification on
May 1, 2010.
6. or the “Constitution” of ECM
Document Folder
ACL
• Content Object
• Property
Container
• Type Id
• Property Id
• Renditions• Parent
*
• Hierarchy
• Display Name
ACE
• Principal
• Version History Name
• Display • Filing
• Type
• Abstract
• Required
• Permissions
• Queryable
• Default Value
• Direct
• Controllable
• …
Described by
Type Definitions
Relationship
Document
Folder
Policy
Relationship
Policy
• Source Object
• Versionable
• • Target Object
Source Types
• Target Object
• Allow Content
• Target Types
Custom Type
CMIS
Type
defini.ons
CMIS ECM Domain Model
8. Or would you rather go back to stone age?
Application
Libraries Apache
Chemistry
(ORM, connection pools, etc.)
ODBC / JDBC CMIS Bindings
CMIS Domain
SQL
Model
Content
Relational DB
Repository
10. Open Source implementations of
• Apache Chemistry (http://chemistry.apache.org) is
the umbrella project for all CMIS related projects within the
Apache Software Foundation.
• Apache Chemistry provides libraries and frameworks for
• Java (Client and Server)
• Python (Client)
• PHP (Client)
• .NET (Client)
11. State of the Nation
Java OpenCMIS (current version: 0.5.0)
• Mature
• High spec coverage and major testing
• Client API / Server SPI
• Goodies
• In memory & fileshare test servers
• Swing Workbench
• OSGi bundles
• OpenCMIS is available
• as source code:
https://svn.apache.org/repos/asf/chemistry/opencmis/trunk/
• as release package with all dependencies:
http://chemistry.apache.org/java/download.html
• via Maven:
http://chemistry.apache.org/java/developing/dev-use-with-maven.html
13. OpenCMIS details
What does OpenCMIS give me?
• Object oriented Client API
• Ease of use and focus on domain model
• Concept of session (CMIS is stateless)
• Performance focus
• Caching
• Repository infos
• Type definitions
• AtomPub links
• CMIS objects
• Compression
• CMIS XML compresses very well
• Docs & Samples
• http://chemistry.apache.org/java/developing/index.html
• http://svn.apache.org/repos/asf/chemistry/opencmis/trunk/
chemistry-opencmis-samples/
14. Other clients
Python cmislib (current version: 0.4.1)
• Mature, tested against major servers
• Available as egg, zip, tar.gz
PHP lib(current version: unreleased)
• Basic coverage of the spec
• Used in a few productions site & for the Drupal integration
DotCMIS (current version: 0.3)
• Quite mature, good coverage of the spec
• Single DLL
• Requires more testing
Browser binding (experimental on CMIS 1.1 branch)
16. CMIS use cases
Application to repository (A2R)
• ”App uses a content repository to handle content services”
• Neat separation of frontend and content tiers
• Examples:
• Portal (e.g.Liferay) or Intranet (e.g. Drupal, Sharepoint)
• Custom webapp or desktop application (e.g Office apps)
Repository to repository (R2R)
• “This is where content repositories talk directly to each other”
• CMIS is flourishing, easy inter vendor communication
• Examples:
• Legacy Content Migration
• Content Publishing or Archival
Federated repositories
• Mix of the 2 above: application talks to multi repositories
http://wordofpie.com/2009/08/17/three-fundamental-cmis-use-cases/
17. CMIS & Alfresco
(Open)CMIS is key to Alfresco strategy
• CMIS client/server enhancements
• Alfresco OpenCMIS Extension
• OpenCMIS Server as of Alfresco 4.0
• Spring Surf OpenCMIS Client integration
• Products
• Web Quick Start
• Alfresco iPhone / iPad Mobile App
• Internal processes
• Team (http://team.alfresco.com) & soon Partner
(http://partners.alfresco.com) based on Drupal Alfresco CMIS integration
CMIS allows seamless integrations with Alfresco
• Social integration (Jive, Liferay, Drupal)
• OpenCMIS clients / product integration (OpenWorkdesk)
18. Alfesco OpenCMIS Extension
CMIS Extension for discovering / managing aspects
• Aspects are an essential tool to model metadata in
Alfresco. The CMIS specification does not define aspects or
something similar, but it defines several extension points.
• CMIS extensions are XML fragments placed in different parts
of a CMIS object. (CMIS/Atom extensions are not fun to
work directly with…)
• “Alfresco OpenCMIS Extension” seamlessly merges aspect
properties with object properties and provides interfaces to
get, add and remove aspects.
• It does that by replacing OpenCMIS' internal object factory
with an object factory that is aspect aware.
http://code.google.com/a/apache-extras.org/p/alfresco-opencmis-extension/
19. Alfesco OpenCMIS Server
Starting from Alfresco 4.0:
• Alfresco CMIS based on the OpenCMIS server framework
• Why has it been re-implemented?
• OpenCMIS is used by several CMIS repositories.
• One code base for the AtomPub and the Web Services binding
(and the Browser Binding).
• Better CMIS specification compliance.
• Better performance, less memory consumption,
handling of big documents.
What changes?
• Old URLs still valid but deprecated
• Generic clients should not notice differences
• Alfresco Extension keeps on working!
• JSON Browser binding prototype (disabled by default)
20. Alfesco iOS Mobile App
iPhone / iPad app for
Alfresco 3.4 + (or Team)
• Heavily CMIS based
(+ some custom Webscripts)
• Initial Implementation of an
Objective-C CMIS client
• Code will be open sourced
during DevCon
Features
• Read, open & save documents
• Search documents
• Upload and tag photos / video
• Look for Marc
21. Spring Surf (Webscripts) and OpenCMIS
Starting from Alfresco 4.0:
• OpenCMIS client libs available in webscripts
• Use cases
• Repository
• Light Migrations / Synchronization
• Publishing
• Web Tier
• CMIS Enabled Frontend
• Federated application frontend
How to use it?
• New JavaScript top level object: cmis
• Three connection types:
• Current Alfresco server (uses OpenCMIS local binding if possible)
• Preconfigured connection
• Web script configured connection
23. CMIS vehicle for Social Content
Enterprise
Content
sharing
Management
collaboration
liking Social
Content
recommending
Management
following
commenting
Social
Software
Discuss… then Capture
CMIS enables a neat integration of ECM and Social
24. Jive Toolkit
Jive Toolkit
Alfresco Jive Toolkit Jive
• Focus on the • Enables both process • Focus on the
processes around and community community around
content content
Jive + Alfresco use cases
• Load a document into Alfresco via Jive
• Link to an existing Alfresco document via Jive
• Socialize a document to Jive via Alfresco
Will be available with Jive 5.0. Ask Peter Monks
27. Alfresco + Drupal = The Dynamic duo
Powerful Presentation Framework Loosely
Coupled Enterprise Repository
• Thousands of modules • Multiple ways to update content
• Easy to theme • Robust business process engine
• Fast, efficient development • Extensible content model
model
28. Best of both worlds
Mature integration
• Based on the Chemistry PHP CMIS module
• GA in the Drupal community (http://drupal.org/project/cmis)
• AppNovations Canopy: commercial solution at
http://www.appnovation.com/solution/canopy-drupalalfresco-integrated-solution
• Used in production sites and Eat your own food:
• team.alfresco.com
• (soon) partners.alfresco.com
Use cases
• Create and persist web content in Alfresco via CMIS Sync
• Attach binary files, created in Alfresco, to Drupal content
• Browse / search CMIS repository from Drupal
• Review and approval publishing workflow in Alfresco
29. And Liferay?
Many levels of integration
• UI Integration DocLib portlet
http://wiki.alfresco.com/wiki/Doclib_Portlet
• DocLib Content only CmisHook in LR 6.0
http://www.liferay.com/web/jonas.yuan/blog/-/blogs/integrating-alfresco-through-cmis-in-liferay
• DocLib Content + Metadata Multiple CMIS repos in LR 6.1
http://www.liferay.com/web/alexander.chow/blog/-/blogs/7670631
Common integration pattern for Alfresco customers
• Typical Frontend intranet / extranet solution
• Common pitfalls
• No CMIS, totally custom Webscript interface (so 90’s)
• Lack of tuning performance
• No inter tier caching
30. Why not CMIS?
Liferay + Alfresco DM (contents) . 6 millions pages view / year.
80.000 bookings per year. 6th biggest turistism portal in the world.
31. WeWebU OpenWorkdesk
Content centric business applications suite
• Advanced eFile management
• Advanced BPM capabilities
• Role dependent views on information
• Configuration vs. coding
OpenWorkdesk & Alfresco
• CMIS Adapter
• Web services binding
• Tested w/ Alfresco 3.x and 4.x
• X-Scenario 2 CMIS-Systems
• Support of OpenLDAP
• Support of Alfresco Aspects via CMIS extension
• Activity
• Support planned for Q1/2010
33. CMIS usage sheet - Recap
CMIS does CMIS does not
• Offer MCD for ECM • Cover all ECM aspects
• Aspects targeted for 1.1 • E.g. users or workflow
• Provide mature tooling • Compare performances
• Enable separation of of in process integrations
content and web tier • Suit for
• Simplify multi vendor / • Large migrations
technology integration • Ultra high performant and
• Remove the burden of concurrent scenarios
• Work “one size fits all”
custom API maintenance
• Requires developer
knowledge of the APIs
• Requires performance
tuning
34. OpenCMIS design & performance tips
Get only what you need… Tune client…
• Only ask for the properties • Enable HTTP Keep Alive
you need! • Speed up burst of requests
• Never do perform • Read content streams
“SELECT * FROM …” queries • And close them!
• Select sensible page sizes • Use compression for high
and depths latency / low bandwidth
• Operation Context • Enable in Session Parameters
…when you need it! …and server!
• Tune Sensible caching • Alfresco 4.x OpenCMIS
• OpenCMIS and DotCMIS server faster than 3.4
have first-level caching • repository-bm module
build in. Use it & add your allow benchmark of
application caching • CMIS Sequential
• CMIS mixed