Upload
nuxeo
View
2.205
Download
2
Tags:
Embed Size (px)
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!
Questions?
• http://doc.nuxeo.com/display/NXDOC/CMIS+for
+Nuxeo
• http://docs.oasis-open.org/cmis/CMIS/v1.0/cs01/
cmis-spec-v1.0.html
• http://incubator.apache.org/chemistry/
58