Introducing CMIS
David Caruana & Michael Farman
25th September 2008
Agenda
● Background to CMIS
● Specification Overview
● Alfresco CMIS Implementation
● Demonstration
● Next Steps
Background / History
●
Founding members
●
●
Spec as been in development for
approx 2 years
●
Contributing Members invited Aug 07
●
Draft Spec Submitted to OASIS 10th
Sept 2008
Contributing members
●
IBM, Microsoft, EMC
Timeline
●
●
●
Alfresco, Open Text, SAP, Oracle
(BEA)
Approach
●
Standardizing existing ECM
implementations
●
Minimizing initial scope
●
For broad acceptance
What is CMIS?
●
“The objective of the CMIS standard is to define a common content
management web services interface that can be implemented by content
repositories and enable interoperability across repositories.”
●
A (draft) standard defining APIs to support interoperability with ECM systems
●
CMIS defines:
●
●
●
●
Model e.g. Types, Relationships
Standardised Query Language
Protocol Bindings e.g. REST, Web Services
Services e.g. Check out/in, versioning
Why CMIS?
● Most large organisations have multiple ECM solutions
● No standard across ECM systems
●
Proprietary specific APIs
●
Proprietary Query interfaces
●
Language dependent Java vs .Net …
● One-off integrations
●
No reuse
●
Expensive to implement, maintain
Target Use Cases
●
Collaborative Content Creation
●
●
Browsing, properties, indexing, search
Mashups
●
URL addressability, properties
Archival Applications
●
●
Portals
●
●
Authentication, Checkin/out, Version
Control
●
Compound Documents
●
●
Properties, indexing and search
Relationships
Electronic Legal Discovery
●
Versioning, properties, indexing, search
Non-Target Use Cases
● Maybe addressed in future CMIS versions
● Records Management & Compliance
●
Retention schedules, classification, legal holds
● Digital Asset Management
●
Renditions, streaming
● Web Content Management
●
Templates, staging, preview, deployment . . .
● Subscription/Notification Services
●
Event triggers
CMIS and Other Standards
●
●
Why not using an existing standard?
●
JCR-170/283
WebDAV
●
No types and properties
●
Java Only
●
No Query
●
Too prescriptive
●
No relationships
●
Tied to HTTP
•
●
Requires changes to core ECM
capabilities to support specific
features and models
Not service oriented
•
Requires persistent connections
•
Unsuited to Mashups
●
Atom Publishing Protocol (APP)
●
HTTP and resource specific
●
Note: CMIS builds on APP conventions
CMIS Specification Status & Next Steps
● Successful Vendor Interoperability Workshop
●
All 7 vendors
●
CMIS Providers and Clients Tested
•
REST and Web Services Protocol Bindings
● Draft submitted to OASIS 10th Sept 08
● Technical Committee Formed
● First Meeting 25th Sept 08
● Official Ratification TBD
Specification Overview
● Part I - Encapsulates ECM experience
●
●
●
Defines Domain Model
Defines Services i.e. interaction with Model
Common to ECM repositories
● Part II – Map Part I to Protocol Bindings
●
●
SOAP / WSDL
• Leverage years of investment in infrastructure/tools
• Service-oriented
• Content Repository orchestration
REST
• “Web 2.0” stack
• Resource-oriented
• Content syndication / publishing
CMIS Domain Model
Document
Folder
• Content
• Metadata
• Version History
• Container
• Hierarchy / Filing
• Metadata
Meta Model
Relationship
Policy
• Source
• Target
• Target
CMIS Meta Model
Object Type
Property Type
- Type Id
*
- Parent
- Display Name
- Required
- Query-able
- Default Value
- Controllable
Folder Object
Type
- Version-able
Relationship
Object Type
- Allowed
Source Types
- Allow Content
- Allowed
Target Types
Custom
Types
- Display Name
- Type
- Abstract
Document
Object Type
- Property Id
-…
Policy Object
Type
CMIS Services
Browse
Inspect
Act
Repository
Object
Object
•Get Server Information
•Get Type Definitions
•Read Content
•Get Properties
•Get Allowable Actions
•Write Content
•Set Properties
•Create Folder / Doc / Relation
•Delete
•Move
Navigation
•Walk Folder / Doc Hierarchy
•Get Checked-out
Versioning
•Walk Version History
Relationship
Versioning
•Check-out / In
•Cancel Check-out
•Delete Version(s)
•Traverse Relationship(s)
Discovery
•Issue Query
Policy
Policy
•Get Applied Policies
•Apply / Remove
CMIS Query
Mapping
• CMIS Meta Model mapped to a Relational View
• Virtual table exposed for each ‘query-able’ object type
SQL SELECT
• SQL-92 subset, plus support for…
• Multi-valued Properties
• Folder location
• Full Text & Score
• Type Inheritance
Example
• SELECT ObjectId, Score() AS Relevance, Destination, DepartureDates
FROM TravelBrochure
WHERE CONTAINS( ‘CARIBBEAN CENTRAL AMERICA CRUISE TOUR’ )
AND ‘2010-1-1’ < ANY DepartureDates
ORDER BY Relevance DESC
CMIS SOAP Binding
● WSDL definition…
●
XML schema for CMIS Domain Model
●
XML schema for Service messages
●
Direct exposure of CMIS (Part I) Services
●
Generate client API for almost all languages
● WS-Security & Username Token Profile (MUST)
● WS-I Basic Profile & Basic Security Profile
● MTOM content transfers
CMIS REST Binding
● ATOM Publishing Protocol
●
ATOM syndication format for web feeds (GET)
●
Create & update web resources (POST, PUT, DELETE)
●
Extension mechanism supported
● CMIS extension
●
XML Schema for CMIS Domain Model
•
●
As used in SOAP Binding
New Web Resources / Method mappings
● Use any existing HTTP or ATOM client API
Atom Publishing Protocol to CMIS
Repository
Server
Service
Service
Document
AtomPub
Domain Model
Schema
CMIS
Workspace
Atom
Feed
Atom
Entry
Repository
Root Folder
Collection
Entry
Resource
Children
Media
Resource
Additional
Atom Feeds
Folder
/Document
Parents/Associated
Content
Version History
Type
Definitions
CheckedOut
Type
Working
Copy
Allowable Actions
Queries
Alfresco Draft CMIS Implementation
• Web
Services
Available
Now in
Alfresco
Labs 3B
• Alfresco
Repository
• REST
• Test
Harness
Foster
Feedback
Validate
Spec
Promote
CMIS
Ease
Learning
• Open
Source
Alfresco Implementation Stack
CMIS REST Client
CMIS WS Client
CMIS REST API
CMIS Web Services
Web Scripts
Apache Abdera
Apache CXF
CMIS
Extension
Alfresco Repository
Alfresco CMIS Strategy
● Actively contribute to specification
● Continue to update draft implementation based up updates
●
Provide Open Source implementation as spec evolves
● Provide 100% compliance
● Productised CMIS Client Support and Tools
Demo
Next Steps
● Alfresco wiki page on CMIS
●
http://wiki.alfresco.com/wiki/CMIS
● Take part in the CMIS Survey
●
http://wiki.alfresco.com/wiki/CMIS#References
● Download specification
●
http://www.alfresco.com/about/cmis/cmis-draft-v0.5.zip
● Try out Draft CMIS Implementation
●
Alfresco Labs 3b - http://wiki.alfresco.com/wiki/CMIS
● Subscribe to CMIS Blog
●
http://blogs.alfresco.com/cmis/
● Discuss in CMIS forum
●
http://forums.alfresco.com
Thanks for Attending
Introducing CMIS
Questions?
Michael Farman
25th September 2008
Descargar

Introduction to CMIS