Your SlideShare is downloading. ×
0
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Alfresco CMIS
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Alfresco CMIS

6,735

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 …

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.

0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,735
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
289
Comments
0
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Alfresco CMIS<br />0<br />David Caruana<br />Chief Architect, Alfresco<br />twitter: @dcaruana<br />
  • 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. 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. 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. 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. 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. DEMO<br />6<br />Explore The Alfresco CMIS Index Page<br />
  • 8. CMIS Type Definitions<br />7<br />Object<br /><ul><li> Type Id
  • 9. Parent
  • 10. Display Name
  • 11. Abstract
  • 12. Queryable
  • 13. Controllable</li></ul>Property<br /><ul><li> Property Id
  • 14. Display Name
  • 15. Type
  • 16. Required
  • 17. Default Value
  • 18. …</li></ul>*<br />Document<br /><ul><li>Versionable
  • 19. Allow Content</li></ul>Folder<br />Relationship<br /><ul><li> Source Types
  • 20. Target Types</li></ul>Policy<br />Custom Type<br />
  • 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. 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. 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. 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. 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. 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. 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. Permissions
  • 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. DEMO<br />16<br />Explore The Alfresco CMIS Domain Model<br />
  • 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. 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. 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. 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. DEMO<br />21<br />Example Queries<br />
  • 36. Aspects<br />22<br />Bad News<br /> CMIS v1.0 does not include Aspect support<br />
  • 37. Alfresco Wouldn’t Be Alfresco Without Aspects<br />23<br />Good News<br /> We Added Them Anyway<br />
  • 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. DEMO<br />25<br />Aspects Do Exist…<br />
  • 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. 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. 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. 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. 30<br />Shape & Color Pallette<br />Normal Text<br />Normal Text<br />Normal Text<br />
  • 45. 31<br />

×