CMIS: An Open API for Managing Content Jeff Potts Chief Community Officer
May 17, 2015
CMIS: An Open API for Managing ContentJeff PottsChief Community Officer
80% of the content in an Enterprise is unstructured
Managing & collaborating on files is a painWhere is the latest version?Who changed it last? What changed?Which project is this related to?Who should be allowed to read? To
make changes?How long do we have to keep this?Can I get this in another format?I’m done with this, what happens next?
So we write apps that help deal with content
archives.nyphil.org
my.alfresco.com
Alfresco iOS Client
But files are a strange beastDon’t work well as BLOBs in an RDB
• Can’t be indexed• Can’t be streamed• Subject to size limitations
File systems alone aren’t rich enoughNeither are Amazon S3 buckets
That’s where a content repository comes in
RDB(Metadata
)
File System
(Files)
File P
roto
cols
(WebD
AV
, FTP, e
tc.)
API
MetadataContentStream
Repository
Content Object
Not just basic file sharingUser InterfacePersistence/Data
Model/MetadataBusiness
Processes/WorkflowLibrary Services
(Upload/Download, Versioning, & Check-in/Check-out)
Security
Full-text SearchTransforms/
Renditions/Thumbnails
Tagging/Categorization
Authoring tool integration
Remote APISchedulerComments/Ratings/
Activity Streams
The Problem: Until now, each repo had its own API
API API API
My Custom Application Third-Party Systems
Most organizations have multiple repositories!
One-off integration
One-off integration
One-off integration
An industry-wide spec is born
Managed by OASISBroad vendor support and
adoption1.0 out now, 1.1 coming soonhttp://bit.ly/PnAb77
CMIS specification
Domain Model: Repository, Folder, Document, ACL, Relationship, Object Type, Secondary Type*, Item*
Binding: Web Services, AtomPub, Browser (JSON)*
Query Language: Subset of SQL-92
*New in CMIS 1.1
Reference implementation
Client libraries, server frameworks, development tools
http://bit.ly/ex20BT
Getting started with CMISGrab a CMIS client from Apache
ChemistryFind a CMIS-compliant repositoryYou need its “service URL”Connect to it with the OpenCMIS
WorkbenchOptional: For Alfresco in the Cloud, you’ll
need an API key from http://www.alfresco.com/develop
Demo! File upload
Let’s load some images into Alfresco on-premise
Then, let’s re-run that code to load some images into Alfresco in the Cloud
Same CMIS calls, different authentication
Demo! Java & OpenCMIS, Servlets & JSPsThe Blend
• An example music mash-up site
• Java Servlets & JSPs• Show it running against
multiple CMIS repositories
• Full source available from Manning
http://bit.ly/U9npcF
The beauty of CMIS
My Custom Application Third-Party Systems
CMIS API
Standard integration
Standard integration
Alfresco Repository
Deploys as a WAR to a servlet containerDependencies
• 64-bit JDK• OpenOffice.org/LibreOffice• ImageMagick
Happily runs on either physical or virtual hardware
Alfresco Cloud is a multi-tenant SaaS offering of the same great repo
Folder, file, content and metadata manipulation and search
Networks, sites, people, comments, tags, activities, …
API Launch Partners
Alfresco Cloud API ConsiderationsRate limits
• 5 requests/second, 10,000 requests/day (Dev)
• 50 requests/second, 100,000 requests/day (Prod)
No limit on # of applicationsAlfresco Cloud users own their content>= OpenCMIS 0.8.0-SNAPSHOT>= cmislib 0.5.1dev
Getting HelpDocs: http://www.alfresco.com/developResources:
• Alfresco API forum• #alfresco on freenode IRC• Alfresco Technical Discussion Google Gro
up
Source Code:• Code from DevCon Session• Spring Social Alfresco Library• Peter’s Grails Example• Jeff’s Java Examples & Python Examples
Read the book!
Everything you need to know about CMIS 1.0 & 1.1
Lots of Groovy and Java examples
Also covers Python, Android, & iOS
Now on MEAP!37%-off: 12cmisal
Conquer Content Chaos!
Get your API key by May 31 and we’ll ship you this t-shirt!
http://www.alfresco.com/develop
Thank You!
Jeff Potts@jeffpotts01http://ecmarchitect.com