29
CMIS Specification Uncovered 0 David Caruana Chief Architect, Alfresco twitter: @dcaruana

CMIS Spec Uncovered

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: CMIS Spec Uncovered

CMIS Specification Uncovered

0

David CaruanaChief Architect, Alfresco

twitter: @dcaruana

Page 2: CMIS Spec Uncovered

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?

Page 3: CMIS Spec Uncovered

3

Meet CMIS

Client

Content Repository

Services

Domain Model

read write

consumer

provider

Vendor Mapping

ContentManagementInteroperabilityServices

Page 4: CMIS Spec Uncovered

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

Page 5: CMIS Spec Uncovered

5

DEMO

Spring Surf meets CMIS…

Page 6: CMIS Spec Uncovered

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

Page 7: CMIS Spec Uncovered

7

CMIS Developed By 30+ ECM Vendors

Implementations Already Available…

Providers

Consum

ers

Page 8: CMIS Spec Uncovered

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

Page 9: CMIS Spec Uncovered

9

Applications Applications Applications

Page 10: CMIS Spec Uncovered

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

Page 11: CMIS Spec Uncovered

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

Page 12: CMIS Spec Uncovered

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• …

Page 13: CMIS Spec Uncovered

13

Base Properties

IdentifersobjectIdtypeIdbaseTypeIdname

HierarchyparentIdpathallowedChildObjectTypeIds

AuditcreatedBycreationDatelastModifiedBylastModificationDate

VersionisLatestVersionisMajorVersionversionLabelcheckinComment

ContentcontentStreamLengthcontentStreamMimeType

Page 14: CMIS Spec Uncovered

14

Content Streams

*Document

• Mime Type

Content Stream• Stream Id

Rendition• Kind• Mime Type

* Maximum length is repository specific

Page 15: CMIS Spec Uncovered

15

Access Control

Object

ACL

ACE• Principal• Permissions• Direct

Permissionscmis:readcmis:writecmis:allrepository specific

Page 16: CMIS Spec Uncovered

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

Page 17: CMIS Spec Uncovered

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

Page 18: CMIS Spec Uncovered

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

Page 19: CMIS Spec Uncovered

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

Page 20: CMIS Spec Uncovered

20

Advanced Features

Policies

Repository specific Policies

Client

discover

* Note: Optional Capability

Document

Retention Security …

apply

Page 21: CMIS Spec Uncovered

21

DEMO

CMIS through the eyes of the OpenCMIS Workbench…

Page 22: CMIS Spec Uncovered

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

Page 23: CMIS Spec Uncovered

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…

Page 24: CMIS Spec Uncovered

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

Page 25: CMIS Spec Uncovered

25

DEMO

OpenCMIS API…

Page 26: CMIS Spec Uncovered

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

Page 27: CMIS Spec Uncovered

27

Learn Moredocs.oasis-open.org/cmis/CMIS/v1.0/cs01/cmis.alfresco.comincubator.apache.org/chemistry/

Page 28: CMIS Spec Uncovered

28

Shape & Color Pallette

Normal Text

Normal TextNormal Text

Page 29: CMIS Spec Uncovered

29