Post on 14-Jun-2015
description
CMIS Specification Uncovered
0
David CaruanaChief Architect, Alfresco
twitter: @dcaruana
2
CMIS Specification
I’m a Software Engineer, I would like to know…
What Is Its Purpose?
Should I Invest?
What's Specified?
How Do I Use It?
Where Can I Learn More?
3
Meet CMIS
Client
Content Repository
Services
Domain Model
read write
consumer
provider
Vendor Mapping
ContentManagementInteroperabilityServices
4
Some Use Cases
Client
Content Repository
Content Repository
Content Repository
Client
Content RepositoryContent
RepositoryContent Repository
• Workflow & BPM• Archival• Virtual Documents• DAM / WCM
• Collaborative Content Creation• Portals• Client Application Integration• Mashup
5
DEMO
Spring Surf meets CMIS…
6
CMIS is an OASIS Standard
Late2007
Initiated byIBM, EMC& Microsoft
CMIS Technical Committee formed at OASIS
Oct2009
1st PublicReview
Jan2010
2nd PublicReview
May2010
Oct2008
CMIS V1.0Published
Sept2008
CMISAnnounced
Alfresco Releases 1st Implementation
Alfresco Releases 1st Supported Implementation
7
CMIS Developed By 30+ ECM Vendors
Implementations Already Available…
Providers
Consum
ers
8
It’s Good For You
• Focal point for content management ecosystem• Communities• Tools• Libraries• Training
• Your knowledge is re-usable
• Growth in Content Applications• Just as SQL boosted the Database Industry
Developers
9
Applications Applications Applications
•
10
300 Pages of Specification Condensed
• Domain Model• Data Model (core entities, query)• Services (operations against Data Model)
• Web Services Binding• Services in WSDL
• AtomPub Binding• Services in Atom Publishing Protocol
• Guiding Design Principal• Encapsulate existing ECM approach, rather than invent• You already know the concepts
Three Sections…
App Developers
Library Developers
11
Data Model Base Types
•
Document• Content• Renditions• Version History
Folder• Container• Hierarchy• Filing
Relationship• Source Object• Target Object
Policy• Target Object
Described byType Definitions
12
Type Definitions
*
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• …
13
Base Properties
IdentifersobjectIdtypeIdbaseTypeIdname
HierarchyparentIdpathallowedChildObjectTypeIds
AuditcreatedBycreationDatelastModifiedBylastModificationDate
VersionisLatestVersionisMajorVersionversionLabelcheckinComment
ContentcontentStreamLengthcontentStreamMimeType
14
Content Streams
*Document
• Mime Type
Content Stream• Stream Id
Rendition• Kind• Mime Type
* Maximum length is repository specific
15
Access Control
Object
ACL
ACE• Principal• Permissions• Direct
Permissionscmis:readcmis:writecmis:allrepository specific
16
CMIS QL
• 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
• Each Type is projected as a Table
17
Do You Understand These Queries?
select cmis:name, cmis:lastModificationDatefrom cmis:documentwhere cmis:lastModifiedBy = 'admin’order by cmis:lastModificationDate desc
select cmis:namefrom cmis:documentwhere contains('alfresco’)
select cmis:name, cmis:contentStreamLengthwhere in_tree(‘<folderObjectId>’)and cmis:contentStreamLength > 102400order by cmis:contentStreamLength
18
Advanced Features
Document Versions
V1Minor
V2Major
V3Major
Version S
eries
Document
PWC
checkout
checkin
latest
Repository Vendor May Support• Version Specific Folder Filing• Query All Versions• Create Minor, Major, PWCs
19
Advanced Features
Change Log
Create Update Delete
Change Events
Clientlogs discover
Repo
Change Event:• Object Id• Change Time• Change Type – created, updated, deleted, security• Properties – for updated events
* Note: Optional Capability
20
Advanced Features
Policies
Repository specific Policies
Client
discover
* Note: Optional Capability
Document
Retention Security …
apply
21
DEMO
CMIS through the eyes of the OpenCMIS Workbench…
22
CMIS Services
Browse Inspect
Repository- Get Server Information- Get Type Definitions
Navigation- Walk Folder / Doc Hierarchy- Get Checked-out
Discovery- Issue Query- Get Change Log
Object- Read Content- Get Properties- Get ACLs- Get Allowable Actions
Versioning- Walk Version History
Relationship- Traverse Relationship(s)
Policy- Get Applied Policies
Act
Object- Write Content- Set Properties- Create Folder / Doc / Relation- Delete- Move- Set ACLs
Versioning- Check-out / In- Cancel Check-out- Delete Version(s)
Policy- Apply / Remove
23
Use CMIS Services Anywhere
• Bindings are neutral• Any Programming Language• Any Operating System• Any Environment
• Only requirement is one of…• Web Service Client Library• HTTP Client Library
• As a developer, you’ll probably want to build a wrapper API• But, don’t…
24
• 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
25
DEMO
OpenCMIS API…
26
CMIS Take Away
• OASIS Standard• Defines ECM Domain Model and Services• SQL like Query Language• Plenty of Vendor Support• Use In Any Environment• Apache Chemistry Client APIs
• Re-use Your Knowledge Across ECM Industry
Remember This
27
Learn Moredocs.oasis-open.org/cmis/CMIS/v1.0/cs01/cmis.alfresco.comincubator.apache.org/chemistry/
28
Shape & Color Pallette
Normal Text
Normal TextNormal Text
29