CMIS Spec Uncovered

Post on 14-Jun-2015

1.876 views 8 download

Tags:

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.

Transcript of CMIS Spec Uncovered

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