PLAT-1 CMIS in the Real World
-
Upload
alfresco-software -
Category
Technology
-
view
3.102 -
download
5
description
Transcript of PLAT-1 CMIS in the Real World
CMIS in the “real world”
Or “Why bother writing custom APIs when you have standard ones”?
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)
Once upon a time…
Builders of way too many…
Towers of Babel !
We have a dream!
Did not take too long to get to…
Late 2007
Initiated by IBM, EMC
& Microsoft
CMIS Technical Committee formed at
OASIS
Oct 2009
1st Public Review
Jan 2010
2nd
Public Review
May 2010
Oct 2008
CMIS V1.0 Published
Sept 2008
CMIS Announced
OASIS approved CMIS as an OASIS Specification on May 1, 2010.
CMIS ECM Domain Model
or the “Constitution” of ECM
Document • Content • Renditions
• Version History
Folder • Container • Hierarchy • Filing
Relationship • Source Object • Target Object
Policy • Target Object
Described by Type Definitions
CMIS Type defini.ons
*
Custom Type
Object • Type Id • Parent
• Display Name • Abstract • Queryable • Controllable
Document • Versionable • Allow Content
Folder Relationship • Source Types • Target Types
Policy
Property • Property Id • Display Name
• Type • Required
• Default Value • …
ACL
ACE • Principal
• Permissions • Direct
CMIS Cheat Sheet
http://cmis.alfresco.com/cmis-cheatsheet.pdf
Or would you rather go back to stone age?
Application
Libraries (ORM, connection pools, etc.)
ODBC / JDBC
SQL
Relational DB Content
Repository
CMIS Domain Model
Apache Chemistry
CMIS Bindings
Nice theory but … Tools anyone?
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)
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
State of the Nation
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/
OpenCMIS details
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)
Other clients
All nice, but what can I build with CMIS?
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/
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)
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/
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)
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
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
Spring Surf & OpenCMIS
CMIS vehicle for Social Content
CMIS enables a neat integration of ECM and Social
Social Software
Enterprise
Content
Management collaboration
sharing
following
recommending
commenting
liking Social Content
Management
Discuss… then Capture
Jive Toolkit
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
Jive • Focus on the
community around content
Alfresco • Focus on the
processes around content
Jive Toolkit
Jive Toolkit • Enables both process
and community
Content socialization
Architecture
Alfresco Jive
LDAP
REST (h6ps)
Alfresco + Drupal = The Dynamic duo Powerful Presentation Framework
Enterprise Repository Loosely
Coupled
• Thousands of modules • Easy to theme • Fast, efficient development
model
• Multiple ways to update content • Robust business process engine • Extensible content model
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
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
Why not CMIS?
Liferay + Alfresco DM (contents) . 6 millions pages view / year. 80.000 bookings per year. 6th biggest turistism portal in the world.
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
OpenWorkdesk architecture
CMIS usage sheet - Recap
CMIS does • Offer MCD for ECM • Aspects targeted for 1.1
• Provide mature tooling • Enable separation of
content and web tier • Simplify multi vendor /
technology integration • Remove the burden of
custom API maintenance
CMIS does not • Cover all ECM aspects • E.g. users or workflow
• Compare performances of in process integrations
• Suit for • Large migrations • Ultra high performant and
concurrent scenarios • Work “one size fits all” • Requires developer
knowledge of the APIs • Requires performance
tuning
OpenCMIS design & performance tips
Get only what you need… • Only ask for the properties
you need! • Never do perform
“SELECT * FROM …” queries • Select sensible page sizes
and depths • Operation Context
…when you need it! • Tune Sensible caching • OpenCMIS and DotCMIS
have first-level caching build in. Use it & add your application caching
Tune client… • Enable HTTP Keep Alive • Speed up burst of requests
• Read content streams • And close them!
• Use compression for high latency / low bandwidth • Enable in Session Parameters
…and server! • Alfresco 4.x OpenCMIS
server faster than 3.4 • repository-bm module
allow benchmark of • CMIS Sequential • CMIS mixed
Thanks!
Questions?!?