CMIS Spec Uncovered


Published on

CMIS became an OASIS standard earlier this year. It has the potential to impact content repositories in the same way that SQL impacted relational databases all those years ago. In this session you'll learn about the goals of CMIS, its domain model and services, without any of the hype from a member of the CMIS technical committee. If you attend this session, you'll save yourself from the 250 pages of the specification. This is knowledge that will apply not only to Alfresco, but also all other major content repositories.

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

CMIS Spec Uncovered

  1. 1. CMIS Specification Uncovered<br />0<br />David Caruana<br />Chief Architect, Alfresco<br />twitter: @dcaruana<br />
  2. 2. CMIS Specification<br />1<br />I’m a Software Engineer, I would like to know…<br />What Is Its Purpose?<br />Should I Invest?<br />What's Specified?<br />How Do I Use It?<br />Where Can I Learn More?<br />
  3. 3. Meet CMIS<br />2<br />Client<br />consumer<br />read<br />write<br />Services<br />Domain Model<br />Content<br />Management<br />Interoperability<br />Services<br />Vendor Mapping<br />provider<br />Content Repository<br />
  4. 4. Some Use Cases<br />3<br />Client<br />Content Repository<br />Client<br />Content Repository<br />Content Repository<br />Content Repository<br />Content Repository<br />Content Repository<br /><ul><li>Workflow & BPM
  5. 5. Archival
  6. 6. Virtual Documents
  7. 7. DAM / WCM
  8. 8. Collaborative Content Creation
  9. 9. Portals
  10. 10. Client Application Integration
  11. 11. Mashup</li></li></ul><li>DEMO<br />4<br />Spring Surf meets CMIS…<br />
  12. 12. CMIS is an OASIS Standard<br />5<br />Alfresco Releases 1st Implementation<br />Alfresco Releases 1st Supported Implementation<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 />
  13. 13. CMIS Developed By 30+ ECM Vendors<br />6<br />Implementations Already Available…<br />Providers<br />Consumers<br />
  14. 14. It’s Good For You<br />7<br />Focal point for content management ecosystem<br />Communities<br />Tools<br />Libraries<br />Training<br />Your knowledge is re-usable<br />Growth in Content Applications<br />Just as SQL boosted the Database Industry<br />Developers<br />
  15. 15. Applications Applications Applications<br />8<br />
  16. 16. 300 Pages of Specification Condensed<br />9<br />Domain Model<br />Data Model (core entities, query)<br />Services (operations against Data Model)<br />Web Services Binding<br />Services in WSDL<br />AtomPub Binding<br />Services in Atom Publishing Protocol<br />Guiding Design Principal<br />Encapsulate existing ECM approach, rather than invent<br />You already know the concepts<br />Three Sections…<br />App Developers<br />Library Developers<br />
  17. 17. Data Model Base Types<br />10<br />Document<br /><ul><li> Content
  18. 18. Renditions
  19. 19. Version History</li></ul>Folder<br /><ul><li> Container
  20. 20. Hierarchy
  21. 21. Filing</li></ul>Described by<br />Type Definitions<br />Relationship<br /><ul><li> Source Object
  22. 22. Target Object</li></ul>Policy<br /><ul><li> Target Object</li></li></ul><li>Type Definitions<br />11<br />Object<br /><ul><li> Type Id
  23. 23. Parent
  24. 24. Display Name
  25. 25. Abstract
  26. 26. Queryable
  27. 27. Controllable</li></ul>Property<br /><ul><li> Property Id
  28. 28. Display Name
  29. 29. Type
  30. 30. Required
  31. 31. Default Value
  32. 32. …</li></ul>*<br />Document<br /><ul><li>Versionable
  33. 33. Allow Content</li></ul>Folder<br />Relationship<br /><ul><li> Source Types
  34. 34. Target Types</li></ul>Policy<br />Custom Type<br />
  35. 35. Base Properties<br />12<br />Hierarchy<br />parentId<br />path<br />allowedChildObjectTypeIds<br />Identifers<br />objectId<br />typeId<br />baseTypeId<br />name<br />Content<br />contentStreamLength<br />contentStreamMimeType<br />Audit<br />createdBy<br />creationDate<br />lastModifiedBy<br />lastModificationDate<br />Version<br />isLatestVersion<br />isMajorVersion<br />versionLabel<br />checkinComment<br />
  36. 36. Content Streams<br />Document<br /><ul><li>Mime Type</li></ul>Rendition<br /><ul><li>Kind
  37. 37. Mime Type</li></ul>*<br />Content Stream<br /><ul><li>Stream Id</li></ul>* Maximum length is repository specific<br />13<br />
  38. 38. Access Control<br />ACL<br />Object<br />ACE<br /><ul><li> Principal
  39. 39. Permissions
  40. 40. Direct</li></ul>Permissionscmis:read<br />cmis:write<br />cmis:all<br />repository specific<br />14<br />
  41. 41. CMIS QL<br />15<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 />Each Type is projected as a Table<br />
  42. 42. Do You Understand These Queries?<br />16<br />select cmis:namefrom cmis:documentwhere contains('alfresco’)<br />select cmis:name, cmis:lastModificationDatefrom cmis:documentwhere cmis:lastModifiedBy = 'admin’order by cmis:lastModificationDatedesc<br />select cmis:name, cmis:contentStreamLengthwhere in_tree(‘<folderObjectId>’)and cmis:contentStreamLength > 102400order by cmis:contentStreamLength<br />
  43. 43. Advanced Features<br />17<br />Document Versions<br />Document<br />Repository Vendor May Support<br /><ul><li> Version Specific Folder Filing
  44. 44. Query All Versions
  45. 45. Create Minor, Major, PWCs</li></ul>V1<br />Minor<br />V2<br />Major<br />Version Series<br />checkout<br />PWC<br />V3<br />Major<br />checkin<br />latest<br />
  46. 46. Advanced Features<br />18<br />Change Log<br />* Note: Optional Capability<br />Change Events<br />Create<br />Update<br />Delete<br />Client<br />Repo<br />logs<br />discover<br />Change Event:<br /><ul><li> Object Id
  47. 47. Change Time
  48. 48. Change Type – created, updated, deleted, security
  49. 49. Properties – for updated events</li></li></ul><li>Advanced Features<br />19<br />Policies<br />* Note: Optional Capability<br />Repository specific Policies<br />Retention<br />Security<br />…<br />discover<br />Client<br />apply<br />Document<br />
  50. 50. DEMO<br />20<br />CMIS through the eyes of the OpenCMIS Workbench…<br />
  51. 51. CMIS Services<br />21<br />Browse<br />Inspect<br />Act<br />Object<br />- Read Content<br />- Get Properties<br />- Get ACLs<br />- Get Allowable Actions<br />Object<br />- Write Content<br />- Set Properties<br />- Create Folder / Doc / Relation<br />- Delete<br /><ul><li> Move
  52. 52. Set ACLs</li></ul>Repository<br /><ul><li> Get Server Information
  53. 53. Get Type Definitions</li></ul>Navigation<br />- Walk Folder / Doc Hierarchy<br />- Get Checked-out<br />Versioning<br /><ul><li> Walk Version History</li></ul>Versioning<br />- Check-out / In<br />- Cancel Check-out<br />- Delete Version(s)<br />Relationship<br /><ul><li> Traverse Relationship(s)</li></ul>Discovery<br />- Issue Query<br />- Get Change Log<br />Policy<br /><ul><li> Get Applied Policies</li></ul>Policy<br />- Apply / Remove<br />
  54. 54. Use CMIS Services Anywhere<br />22<br />Bindings are neutral<br />Any Programming Language<br />Any Operating System<br />Any Environment<br />Only requirement is one of…<br />Web Service Client Library<br />HTTP Client Library<br />As a developer, you’ll probably want to build a wrapper API<br />But, don’t…<br />
  55. 55. 23<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 />
  56. 56. DEMO<br />24<br />OpenCMIS API…<br />
  57. 57. CMIS Take Away<br />25<br />OASIS Standard<br />Defines ECM Domain Model and Services<br />SQL like Query Language<br />Plenty of Vendor Support<br />Use In Any Environment<br />Apache Chemistry Client APIs<br />Re-use Your Knowledge Across ECM Industry<br />Remember This<br />
  58. 58. Learn More<br />26<br /><br /><br /><br />
  59. 59. 27<br />Shape & Color Pallette<br />Normal Text<br />Normal Text<br />Normal Text<br />
  60. 60. 28<br />
  1. A particular slide catching your eye?

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