Uploaded 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.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,232
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
278
Comments
0
Likes
8

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