Nuxeo World Session: CMIS - What's Next?

58
Florent Guillaume — 18 nov 2010 CMIS What's next?

description

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

Transcript of Nuxeo World Session: CMIS - What's Next?

Page 1: Nuxeo World Session: CMIS - What's Next?

Florent Guillaume — 18 nov 2010

CMISWhat's next?

Page 2: Nuxeo World Session: CMIS - What's Next?

Agenda

• Presentation of CMIS

• Screenshots

• Apache Chemistry / OpenCMIS

• Understanding CMIS

• Future

2

Page 3: Nuxeo World Session: CMIS - What's Next?

Presentation of CMIS

3

Page 4: Nuxeo World Session: CMIS - What's Next?

Why CMIS?

• Domain Model

• Services, objects, types, properties

• Greatest common denominator

• Transport Protocols

• REST/AtomPub, SOAP Web Services

• No Language API

• ⇒ Apache Chemistry4

Page 5: Nuxeo World Session: CMIS - What's Next?

Interoperability

• Application / Repository

• Client / Server

• Application ↔ Repository

• e.g. photo management

• Repository ↔ Repository

• e.g. archival, publishing

• Repository federation

• central access to heterogenous systems5

Page 6: Nuxeo World Session: CMIS - What's Next?

CMIS Benefits

• Customer benefits

• Interoperability between vendors

• Common model

• Desilofication

• Commoditization

• Vendor benefits

• Repository vendors get more apps

• Applications vendors get more repos 6

Page 7: Nuxeo World Session: CMIS - What's Next?

CMIS Implementations

• Repositories

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

• Clients

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

7

Page 8: Nuxeo World Session: CMIS - What's Next?

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

Page 9: Nuxeo World Session: CMIS - What's Next?

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

Page 10: Nuxeo World Session: CMIS - What's Next?

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

Page 11: Nuxeo World Session: CMIS - What's Next?

Screenshots

11

Page 12: Nuxeo World Session: CMIS - What's Next?

Nuxeo

12

Page 13: Nuxeo World Session: CMIS - What's Next?

Adobe Drive 2

13

Page 14: Nuxeo World Session: CMIS - What's Next?

Adobe Drive 2

14

Page 15: Nuxeo World Session: CMIS - What's Next?

Nuxeo Mobile

15

Page 16: Nuxeo World Session: CMIS - What's Next?

SharePoint 2010 Connector

16

Page 17: Nuxeo World Session: CMIS - What's Next?

IBM FileNet P8

17

Page 18: Nuxeo World Session: CMIS - What's Next?

CMIS Workbench

18

Page 19: Nuxeo World Session: CMIS - What's Next?

CMIS Spaces

19

Page 20: Nuxeo World Session: CMIS - What's Next?

CMIS Explorer

20

Page 21: Nuxeo World Session: CMIS - What's Next?

Plone

21

Page 22: Nuxeo World Session: CMIS - What's Next?

Drupal

22

Page 23: Nuxeo World Session: CMIS - What's Next?

eZ Publish

23

Page 24: Nuxeo World Session: CMIS - What's Next?

Joomla

24

Page 25: Nuxeo World Session: CMIS - What's Next?

And many, many others...

25

Page 26: Nuxeo World Session: CMIS - What's Next?

26

Page 27: Nuxeo World Session: CMIS - What's Next?

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

Page 28: Nuxeo World Session: CMIS - What's Next?

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

Page 29: Nuxeo World Session: CMIS - What's Next?

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

Page 30: Nuxeo World Session: CMIS - What's Next?

Understanding CMIS

30

Page 31: Nuxeo World Session: CMIS - What's Next?

CMIS Bindings

• AtomPub

• ReST base

• URI templates

• SOAP

• Standardized Web Services

• Browser Bindings (work in progress)

• JSON-based

• ... more are possible 31

Page 32: Nuxeo World Session: CMIS - What's Next?

CMIS Domain Model

• Objects: Folders, Documents

• Properties

• scalars, lists

• binary content stream

• Types

• inheritance, constraints

• standard properties32

Page 33: Nuxeo World Session: CMIS - What's Next?

Folders and Documents

33

Folder(root)

Folderfoo

Folderbar

Folderblah

Folderstuff

Foldergee

Doc123

Doc456

Doc789

Doc001

Page 34: Nuxeo World Session: CMIS - What's Next?

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

Page 35: Nuxeo World Session: CMIS - What's Next?

Type Definition

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

35

Page 36: Nuxeo World Session: CMIS - What's Next?

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

Page 37: Nuxeo World Session: CMIS - What's Next?

CMIS Services

• CRUD

• Queries

• Versioning

• Renditions

• Change Log

• Repository Info, Types

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

Page 38: Nuxeo World Session: CMIS - What's Next?

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

Page 39: Nuxeo World Session: CMIS - What's Next?

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

Page 40: Nuxeo World Session: CMIS - What's Next?

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

Page 41: Nuxeo World Session: CMIS - What's Next?

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

Page 42: Nuxeo World Session: CMIS - What's Next?

Versioning

• Version series

• Private working copy

• Check in, Check out

• Get all versions

42

Page 43: Nuxeo World Session: CMIS - What's Next?

Renditions

• Retrieve only

• Additional content streams

• MIME type, kind, title, size

• Various uses

• thumbnail / icon (current Nuxeo)

• conversions (future)

• PDF, HTML

• Multi-page 43

Page 44: Nuxeo World Session: CMIS - What's Next?

Relationships

• Source, Target

• Unfiled

• Not versionable

• May use referential integrity

44

Page 45: Nuxeo World Session: CMIS - What's Next?

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

Page 46: Nuxeo World Session: CMIS - What's Next?

Multi-Filing, Unfiling

• Only for documents, not folders

• Zero, one or more parents

• All parents are equivalent

• Different paths

• (If paths are supported)

46

Page 47: Nuxeo World Session: CMIS - What's Next?

Folders and Documents

47

Folder(root)

Folderfoo

Folderbar

Folderblah

Folderstuff

Foldergee

Doc123

Doc456

Doc789

Doc001

Page 48: Nuxeo World Session: CMIS - What's Next?

Multi-Filing, Unfiling

48

Folder(root)

Folderfoo

Folderbar

Folderblah

Folderstuff

Foldergee

Doc123

Doc456

Doc789

Doc333

Doc001

Page 49: Nuxeo World Session: CMIS - What's Next?

Future

49

Page 50: Nuxeo World Session: CMIS - What's Next?

Future of CMIS

• CMIS 1.1

• Late 2011

• Errata, clarifications

• Additional bindings

• (Type mutability)

• CMIS 2.0

• Late 2012

• Bigger features, non-backward compat50

Page 51: Nuxeo World Session: CMIS - What's Next?

Future of CMIS in Nuxeo

• Relations

• Full Renditions

• ACLs

• Multi-filing

• Extensions

51

Page 52: Nuxeo World Session: CMIS - What's Next?

Relations

• Find user-level relations

• Find comments, forums, annotations, ...

• Find tags

• Query with JOIN on relations

• Migrate from Jena to VCS

52

Page 53: Nuxeo World Session: CMIS - What's Next?

Full Renditions

• Already expose icon (thumbnail)

• Expose conversions

• PDF renditions

• HTML renditions

• Resized images

53

Page 54: Nuxeo World Session: CMIS - What's Next?

ACLs

• Expose ACLs

• Allow ACL changes

• Grant or deny permissions

54

Page 55: Nuxeo World Session: CMIS - What's Next?

Multi-Filing

• Make proxies accessible

• Multi-filing of the target version object

• Allow proxy creation

55

Page 56: Nuxeo World Session: CMIS - What's Next?

Extensions

• Complex properties access

• Improve CMISQL expressivity

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

• Transaction demarcation

• Locking

• Workflow

• Content automation (Operations) 56

Page 57: Nuxeo World Session: CMIS - What's Next?

Thank you!