cmis: an open api for managing content
DESCRIPTION
This talk gives an overview of CMIS and the Alfresco API. Originally presented at GlueCon 2013 and updated for Alfresco Day Sydney in August of 2013.TRANSCRIPT
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