Alfresco CMIS<br />0<br />David Caruana<br />Chief Architect, Alfresco<br />twitter: @dcaruana<br />
Alfresco CMIS<br />1<br />I’m a Software Engineer, I would like to know…<br />Is Alfresco CMIS Ready for Use?<br />How Is ...
Recap – Meet CMIS<br />2<br />Client<br />consumer<br />read<br />write<br />Services<br />Domain Model<br />Vendor Mappin...
Recap – CMIS is an OASIS Standard<br />3<br />CMIS Technical Committee formed at OASIS<br />CMIS V1.0<br />Published<br />...
Alfresco CMIS Timeline<br />4<br />The ‘Unofficial’ Reference Implementation<br />CMIS Approved <br />CMIS Announced<br />...
Alfresco CMIS Stack<br />5<br />Spring Surf<br />Web Quick Start<br />OpenCMIS Client Library<br />Alfresco Server<br />At...
DEMO<br />6<br />Explore The Alfresco CMIS Index Page<br />
CMIS Type Definitions<br />7<br />Object<br /><ul><li> Type Id
 Parent
 Display Name
 Abstract
Queryable
 Controllable</li></ul>Property<br /><ul><li> Property Id
 Display Name
 Type
 Required
 Default Value
 …</li></ul>*<br />Document<br /><ul><li>Versionable
 Allow Content</li></ul>Folder<br />Relationship<br /><ul><li> Source Types
 Target Types</li></ul>Policy<br />Custom Type<br />
Domain Model Mapping<br />8<br />CMIS Document cm:content<br />CMIS Folder cm:folder<br />CMIS Relationship peer associ...
Domain Model Mapping<br />9<br />Base Types<br />cmis:document, cmis:folder, cmis:relationship, cmis:policy<br />Sub Types...
Domain Model Mapping<br />10<br />cmis:namecm:name<br />cmis:objectId node ref<br />cmis:path display path of node ref<...
Domain Model Mapping<br />11<br />Projected on sub type of CMIS Doc / Folder<br />Property Id = <namespace_prefix>:<proper...
Domain Model Mapping<br />12<br />CMIS Folder hierarchy is rooted at /Company Home<br />/ = /Company Home<br />/Data Dicti...
Domain Model Mapping<br />13<br />Models are very similar, but different enough<br />CMIS Single Version Series vs Alfresc...
Domain Model Mapping<br />14<br />Identical Constructs<br />CMIS Direct  Alfresco Inherited<br />Basic Permissions<br />c...
 Permissions
 Direct</li></li></ul><li>Domain Model Mapping<br />15<br />CMIS Rendition Kind  Alfresco Rendition Definition<br />kind ...
DEMO<br />16<br />Explore The Alfresco CMIS Domain Model<br />
Query<br />17<br />Query Engine built on Alfresco Lucene Index<br />Can also access via Java SearchService<br />Relational...
Query<br />18<br />SELECT and FROM clauses<br />Identify which properties from which types to return<br />WHERE clause<br ...
Upcoming SlideShare
Loading in...5
×

Alfresco CMIS

6,818

Published on

Alfresco has provided an implementation of CMIS ever since the first draft of the specification was announced. It is the CMIS repository that all others are compared to. In this session, you'll learn how Alfresco maps to the CMIS domain model and explore how CMIS services such as query behave through live examples. You'll see how easy it is to build applications against CMIS including the use of unique Alfresco features such as Aspects.

Alfresco CMIS

  1. 1. Alfresco CMIS<br />0<br />David Caruana<br />Chief Architect, Alfresco<br />twitter: @dcaruana<br />
  2. 2. Alfresco CMIS<br />1<br />I’m a Software Engineer, I would like to know…<br />Is Alfresco CMIS Ready for Use?<br />How Is The CMIS Domain Model Mapped?<br />What Can IQuery With CMIS QL?<br />How Can I Use Alfresco CMIS?<br />What Extensions Are Supported?<br />What’s Coming Next?<br />
  3. 3. Recap – Meet CMIS<br />2<br />Client<br />consumer<br />read<br />write<br />Services<br />Domain Model<br />Vendor Mapping<br />provider<br />Content Repository<br />
  4. 4. Recap – CMIS is an OASIS Standard<br />3<br />CMIS Technical Committee formed at OASIS<br />CMIS V1.0<br />Published<br />Initiated by<br />IBM, EMC<br />& Microsoft<br />1st Public<br />Review<br />2nd Public<br />Review<br />CMIS<br />Announced<br />Late<br />2007<br />Oct<br />2009<br />Jan<br />2010<br />Oct<br />2008<br />May<br />2010<br />Sept<br />2008<br />
  5. 5. Alfresco CMIS Timeline<br />4<br />The ‘Unofficial’ Reference Implementation<br />CMIS Approved <br />CMIS Announced<br />Draft<br />Labs 3c<br />cmis.alfresco.com<br />v1.0 CS01<br />Community 3.3g<br />Enterprise 3.3<br />v0.61<br />Community 3.2<br />v1.0 CD07<br />Community 3.3<br />First Commit<br />r8457<br />June<br />2010<br />June<br />2009<br />Mar<br />2008<br />Apr<br />2010<br />Aug<br />2009<br />Sept<br />2008<br />
  6. 6. Alfresco CMIS Stack<br />5<br />Spring Surf<br />Web Quick Start<br />OpenCMIS Client Library<br />Alfresco Server<br />AtomPub Binding<br />Web Services Binding<br />Index<br />Domain Model Mapping<br />CMIS QL<br />Data Model / Services<br />Content Repository<br />
  7. 7. DEMO<br />6<br />Explore The Alfresco CMIS Index Page<br />
  8. 8. CMIS Type Definitions<br />7<br />Object<br /><ul><li> Type Id
  9. 9. Parent
  10. 10. Display Name
  11. 11. Abstract
  12. 12. Queryable
  13. 13. Controllable</li></ul>Property<br /><ul><li> Property Id
  14. 14. Display Name
  15. 15. Type
  16. 16. Required
  17. 17. Default Value
  18. 18. …</li></ul>*<br />Document<br /><ul><li>Versionable
  19. 19. Allow Content</li></ul>Folder<br />Relationship<br /><ul><li> Source Types
  20. 20. Target Types</li></ul>Policy<br />Custom Type<br />
  21. 21. Domain Model Mapping<br />8<br />CMIS Document cm:content<br />CMIS Folder cm:folder<br />CMIS Relationship peer association<br />only if source and target map to CMIS Document / Folder<br />CMIS Policy  <nothing><br />almost, we’ll come back to this!<br />Sub type of CMIS Document  sub type of cm:content<br />Sub type of CMIS Folder  sub type of cm:folder<br />Otherwise it is not mapped<br />Type Definitions<br />
  22. 22. Domain Model Mapping<br />9<br />Base Types<br />cmis:document, cmis:folder, cmis:relationship, cmis:policy<br />Sub Types<br />D|F|R|P:<namespace_prefix>:<type_name><br />D:cm:savedquery<br />F:st:site<br />R:ia:subscribedCalendarList<br />Type IDs<br />
  23. 23. Domain Model Mapping<br />10<br />cmis:namecm:name<br />cmis:objectId node ref<br />cmis:path display path of node ref<br />cmis:objectTypeId id of mapped type definition<br />cmis:creationDate, cmis:lastModificationDate auditable<br />cmis:createdBy, cmis:lastModifiedBy auditable<br />cmis:contentStream* cm:content<br />cmis:*version*  version store history<br />Base Type Properties Mapped to Alfresco Equivalents<br />
  24. 24. Domain Model Mapping<br />11<br />Projected on sub type of CMIS Doc / Folder<br />Property Id = <namespace_prefix>:<property_name><br />st:siteVisibility<br />st:sitePreset<br />Some Alfresco Property Types are not supported<br />d:any, d:qname, d:category<br />property is not mapped<br />Custom Properties On Alfresco Sub Types<br />
  25. 25. Domain Model Mapping<br />12<br />CMIS Folder hierarchy is rooted at /Company Home<br />/ = /Company Home<br />/Data Dictionary = /Company Home/Data Dictionary<br />CMIS Parent / Child mapped to cm:contains<br />Other child associations are not mapped<br />Peer associations are mapped<br />Exclude objects whose type is not mapped to CMIS<br />children and associations (target)<br />Read permissions are observed<br />AVM nodes are not projected through CMIS<br />Folders And Documents<br />
  26. 26. Domain Model Mapping<br />13<br />Models are very similar, but different enough<br />CMIS Single Version Series vs Alfresco Live/Versioned Stores<br />CMIS Version Series<br />CMIS Version  Alfresco version node<br />Alfresco live Node projects itself as latest CMIS Version<br />CMIS Checkout / Cancel / CheckinAlfresco equivalent<br />CMIS PWC  Alfresco Working Copy<br />CMIS create document auto creates first version<br />Non-versionable documents  mock single version<br />version label: 0.0, major: false<br />Versions<br />
  27. 27. Domain Model Mapping<br />14<br />Identical Constructs<br />CMIS Direct  Alfresco Inherited<br />Basic Permissions<br />cmis:read Alfresco “Read”<br />cmis:write Alfresco “Write”<br />cmis:all Alfresco “All”<br />Repository Permissions<br />projected as is<br />Access Control<br />ACL<br />ACE<br /><ul><li> Principal
  28. 28. Permissions
  29. 29. Direct</li></li></ul><li>Domain Model Mapping<br />15<br />CMIS Rendition Kind  Alfresco Rendition Definition<br />kind = definition name<br />cmis:thumbnail kind  Share Doc Lib Thumbnail<br />Renditions<br />Document<br />Rendition<br />*<br />Content Stream<br />
  30. 30. DEMO<br />16<br />Explore The Alfresco CMIS Domain Model<br />
  31. 31. Query<br />17<br />Query Engine built on Alfresco Lucene Index<br />Can also access via Java SearchService<br />Relational Model<br />Types mapped to Tables<br />Properties mapped to Columns<br />Query names<br />Type name: ns_prefix:name<br />Property name: ns_prefix:name<br />Two language variants<br />Strict & Alfresco<br />No Join (well, more on this later)<br /> CMIS QL<br />
  32. 32. Query<br />18<br />SELECT and FROM clauses<br />Identify which properties from which types to return<br />WHERE clause<br />Restrict returned rows to those that meet all constraints<br />Predicates: comparison, in, like, null, any, is null<br />Function Predicates: contains(), in_folder(), in_tree()<br />Operators: and, or, not<br />ORDER BY clause<br />Order results by one or more columns<br />Language Features<br />
  33. 33. Query<br />19<br />Full Alfresco FTS language in CONTAINS()<br />http://wiki.alfresco.com/wiki/Full_Text_Search_Query_Syntax<br />SCORE() used without CONTAINS()<br />Multiple CONTAINS()<br />Order by unselected columns<br />Restrictions for IN, comparisons and LIKE are dropped<br />Multi-value properties can use single-value syntax<br />Implicit ANY<br />Alfresco Language Variant<br />
  34. 34. Query<br />20<br />All properties may be selected<br />A property is queryable if indexed<br />A property is orderable if<br />Untokenized<br />Both Untokenized and Tokenized<br />Or one of the following types: d:boolean, d:datetime, d:double, d:float, d:integer, d:long, d:path<br />NOTE: 3.2  3.3 upgrade requires re-index to support CMIS exact matching and ordering for cmis:name<br />Lucene Indexing Considerations<br />
  35. 35. DEMO<br />21<br />Example Queries<br />
  36. 36. Aspects<br />22<br />Bad News<br /> CMIS v1.0 does not include Aspect support<br />
  37. 37. Alfresco Wouldn’t Be Alfresco Without Aspects<br />23<br />Good News<br /> We Added Them Anyway<br />
  38. 38. Domain Model Mapping<br />24<br />Aspect Definition  CMIS Policy Sub Type<br />P:cm:titled<br />P:cm:ownable<br />Query via Join onto Aspect Policy Sub Type<br />Aspect Properties  CMIS Extension<br />Apply / Remove Aspect<br />Get / Set Aspect Properties <br />OpenCMIS support<br />Aspects<br />
  39. 39. DEMO<br />25<br />Aspects Do Exist…<br />
  40. 40. 26<br />Hide complexity of on-the-wire protocol<br />Provides concise Object-Oriented API<br />Use with any CMIS Content Repository<br />Tested with all major players<br />Think of as JDBC of CMIS<br />Varieties<br />Java – OpenCMIS<br />PHP<br />Python<br />Open Source CMIS Client Libraries<br />
  41. 41. What’s Next?<br />27<br />http://cmis.alfresco.com/preview<br />OpenCMIS Server refactoring<br />Browser Binding (JSON)<br />plus lots more…<br />
  42. 42. Alfresco CMIS Take Away<br />28<br />Alfresco CMIS first released over 2 years ago<br />Full support for CMIS v1.0<br />AtomPub and Web Service Bindings<br />CMIS QL<br />Aspects Extension<br />OpenCMIS Client API<br />Community 3.3, Enterprise 3.3, cmis.alfresco.com<br />Remember This<br />
  43. 43. Learn More<br />29<br />docs.oasis-open.org/cmis/CMIS/v1.0/cs01/<br />cmis.alfresco.com<br />incubator.apache.org/chemistry/<br />
  44. 44. 30<br />Shape & Color Pallette<br />Normal Text<br />Normal Text<br />Normal Text<br />
  45. 45. 31<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×