Nuxeo World Session: CMIS - What's Next?

Preview:

DESCRIPTION

Presentation from Florent Guillaume at Nuxeo World 2010 (November 17-18, 2010) on CMIS and Nuxeo.

Citation preview

Florent Guillaume — 18 nov 2010

CMISWhat's next?

Agenda

• Presentation of CMIS

• Screenshots

• Apache Chemistry / OpenCMIS

• Understanding CMIS

• Future

2

Presentation of CMIS

3

Why CMIS?

• Domain Model

• Services, objects, types, properties

• Greatest common denominator

• Transport Protocols

• REST/AtomPub, SOAP Web Services

• No Language API

• ⇒ Apache Chemistry4

Interoperability

• Application / Repository

• Client / Server

• Application ↔ Repository

• e.g. photo management

• Repository ↔ Repository

• e.g. archival, publishing

• Repository federation

• central access to heterogenous systems5

CMIS Benefits

• Customer benefits

• Interoperability between vendors

• Common model

• Desilofication

• Commoditization

• Vendor benefits

• Repository vendors get more apps

• Applications vendors get more repos 6

CMIS Implementations

• Repositories

• Nuxeo, Alfresco, Microsoft, IBM, SAP, eXo, Day, Jahia, KnowledgeTree, ...

• Clients

• Nuxeo, Adobe, IBM, Microsoft, eZ Publish, Plone, Drupal, Joomla, ...

7

History of CMIS (I)

• Founding members (from iECM) work on a new standard

• 2006

• EMC, IBM, Microsoft

• Contributing members invited for review

• Aug 2007

• Alfresco, Open Text, Oracle, SAP

8

History of CMIS (II)

• Draft spec submitted to OASIS

• September 2008

• OASIS committee formed

• November 2008

• First public draft released

• October 2009

• CMIS 1.0 standard approved

• May 2010 9

History of CMIS (III)

• OASIS TC members today

• Adobe, Adullact, Alfresco, ASG Software Solutions, Booz Allen Hamilton, Citytech, Content Technologies, Day, dotCMS, Ektron, EMC, Entropysoft, Exalead, FatWire, Fidelity Investments, Flatirons Solutions, fme, Genus Technologies, Greenbytes, Harris Corp, IBM, Magnolia, Microsoft, Nuxeo, Open Text, Oracle, Pearson, Quark, SAP, Saperion, Structured Software Systems, Sun, Vamosa, Vignette, WeWebU

10

Screenshots

11

Nuxeo

12

Adobe Drive 2

13

Adobe Drive 2

14

Nuxeo Mobile

15

SharePoint 2010 Connector

16

IBM FileNet P8

17

CMIS Workbench

18

CMIS Spaces

19

CMIS Explorer

20

Plone

21

Drupal

22

eZ Publish

23

Joomla

24

And many, many others...

25

26

Apache Chemistry

• Incubating project• Started in 2009

• http://incubator.apache.org/chemistry/

• Implement the whole CMIS spec

• Client-side• Java (OpenCMIS)

• Python, PHP, JavaScript

• Server-side• Java (OpenCMIS)

27

Apache Chemistry History

• Original Apache Chemistry project

• Day, Nuxeo in 2009

• OpenCMIS started privately

• Alfresco, Open Text, SAP

• Proposed to Apache in December 2009

• Chemistry and OpenCMIS merge

• 3 days of meetings in April 2010

• OpenCMIS 0.1 released Sept. 201028

OpenCMIS Facts

• 90,000 lines of Java

• OSGi bundles

• 5 JARs needed for a client

• Built with Maven

• Covers all aspects of the spec

• Extensible

• Lots of tests

• Contributors

• Nuxeo, Alfresco, Day, Open Text, SAP...29

Understanding CMIS

30

CMIS Bindings

• AtomPub

• ReST base

• URI templates

• SOAP

• Standardized Web Services

• Browser Bindings (work in progress)

• JSON-based

• ... more are possible 31

CMIS Domain Model

• Objects: Folders, Documents

• Properties

• scalars, lists

• binary content stream

• Types

• inheritance, constraints

• standard properties32

Folders and Documents

33

Folder(root)

Folderfoo

Folderbar

Folderblah

Folderstuff

Foldergee

Doc123

Doc456

Doc789

Doc001

Document Properties

• 5ba79978-a87f-4146-9dd4-5197c5ac0962• cmis:objectId: 5ba79978-a87f-4146-9dd4-5197c5ac0962

• cmis:objectTypeId: invoice

• cmis:name: My Document

• cmis:creationDate: 2010-01-25T10:20:53.286-08:00

• cmis:createdBy: florent

• cmis:contentStreamFileName: mydocument.pdf

• cmis:contentStreamMimeType: application/pdf

• cmis:isLatestVersion: true

• cmis:versionLabel: 1.5

• dc:subject: [example, sample, frobs]

• dc:description: invoice for the frobmachin de janvier

34

Type Definition

• invoice• id: invoice• localName: t-invoice• displayName: Invoice• baseId: cmis:document• parentId: record• fileable: true• queryable: true• fulltextIndexed: true• controllableACL: false

35

Type Definition Properties

• invoice• cmis:objectId: ID• cmis:objectTypeId: ID• cmis:name: String• cmis:creationDate: DateTime (read-only)• cmis:createdBy: String (read-only)• cmis:lastModificationDate: DateTime• cmis:isLatestVersion: Boolean• dc:subject: String (multi-valued, not required)• dc:description: String

36

CMIS Services

• CRUD

• Queries

• Versioning

• Renditions

• Change Log

• Repository Info, Types

• (Multi-Filing, ACLs, Relationships, Policies)37

Repository Info

• When connecting, list repositories

• Find out repository capabilities

• Implemented services, tree-based navigation, multi-filing, unfiling, query capabilities, ...

• Get repository-wide information

• Description, vendor, CMIS version, ...

• Root folder ID

• Latest change log token38

Retrieve

• By ID (5ba79978-a87f-4146-9dd4-5197c5ac0962)

• By Path (/default-domain/workspace/main/mydoc)

• By Query on properties / content

• Parent(s) / Children / Tree

• Content Stream

• Allowable Actions

• Renditions39

Query

• Retrieve by properties / content

• SQL-like Language: CMISQL

• Type → Table

• Object → Row

• Property → Column

• Multi-Valued, Fulltext with score, JOIN

• SELECT only

• no UPDATE or DELETE 40

Create, Update, Delete

• Create

• May include a content stream

• Update

• May verify a change token (optimistic locking)

• May change ID (auto-versioning)

• May check in

• Delete

• May delete all versions 41

Versioning

• Version series

• Private working copy

• Check in, Check out

• Get all versions

42

Renditions

• Retrieve only

• Additional content streams

• MIME type, kind, title, size

• Various uses

• thumbnail / icon (current Nuxeo)

• conversions (future)

• PDF, HTML

• Multi-page 43

Relationships

• Source, Target

• Unfiled

• Not versionable

• May use referential integrity

44

Change Log

• List of chronological changes

• Create, update, delete

• ID of object

• (Properties, ACLs)

• Since a given date (change log token)

• May not be available since “forever”

45

Multi-Filing, Unfiling

• Only for documents, not folders

• Zero, one or more parents

• All parents are equivalent

• Different paths

• (If paths are supported)

46

Folders and Documents

47

Folder(root)

Folderfoo

Folderbar

Folderblah

Folderstuff

Foldergee

Doc123

Doc456

Doc789

Doc001

Multi-Filing, Unfiling

48

Folder(root)

Folderfoo

Folderbar

Folderblah

Folderstuff

Foldergee

Doc123

Doc456

Doc789

Doc333

Doc001

Future

49

Future of CMIS

• CMIS 1.1

• Late 2011

• Errata, clarifications

• Additional bindings

• (Type mutability)

• CMIS 2.0

• Late 2012

• Bigger features, non-backward compat50

Future of CMIS in Nuxeo

• Relations

• Full Renditions

• ACLs

• Multi-filing

• Extensions

51

Relations

• Find user-level relations

• Find comments, forums, annotations, ...

• Find tags

• Query with JOIN on relations

• Migrate from Jena to VCS

52

Full Renditions

• Already expose icon (thumbnail)

• Expose conversions

• PDF renditions

• HTML renditions

• Resized images

53

ACLs

• Expose ACLs

• Allow ACL changes

• Grant or deny permissions

54

Multi-Filing

• Make proxies accessible

• Multi-filing of the target version object

• Allow proxy creation

55

Extensions

• Complex properties access

• Improve CMISQL expressivity

• DISTINCT, COUNT, GROUP BY, date arithmetic, extended CONTAINS

• Transaction demarcation

• Locking

• Workflow

• Content automation (Operations) 56

Thank you!

Recommended