Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
CMIS: An Open API for Managing Content
1. CMIS: An Open API for
Managing Content
Jeff Potts
Chief Community Officer
2. 80% of the content in an
Enterprise is unstructured
3. Managing & collaborating on
files is a pain
Where 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?
4. So we write apps that help
deal with content
archives.nyphil.org
my.alfresco.com
Alfresco iOS
Client
5. But files are a strange beast
Don’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 enough
Neither are Amazon S3 buckets
6. That’s where a content
repository comes in
RDB
(Metadata)
File System
(Files)
FileProtocols
(WebDAV,FTP,etc.)
API
Repository
Content Object
7. Not just basic file sharing
User Interface
Persistence/Data
Model/Metadata
Business
Processes/Workflow
Library Services
(Upload/Download, V
ersioning, & Check-
in/Check-out)
Security
Full-text Search
Transforms/Renditions/
Thumbnails
Tagging/Categorization
Authoring tool
integration
Remote API
Scheduler
Comments/Ratings/Acti
vity Streams
8. 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
9. An industry-wide spec is born
Managed by OASIS
Broad vendor support and
adoption
1.0 out now, 1.1 coming soon
http://bit.ly/PnAb77
12. Getting started with CMIS
Grab a CMIS client from Apache Chemistry
Find a CMIS-compliant repository
You need its “service URL”
Connect to it with the OpenCMIS
Workbench
Optional: For Alfresco in the Cloud, you’ll need an
API key from http://www.alfresco.com/develop
13. 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
14. Demo! Java & OpenCMIS,
Servlets & JSPs
The 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
15. The beauty of CMIS
My Custom Application Third-Party Systems
CMIS API
Standard
integration
Standard
integration
16. Alfresco Repository
Deploys as a WAR to a servlet container
Dependencies
• 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
17.
18. Folder, file, content
and metadata
manipulation and
search
Networks, sites, peo
ple, comments, tags,
activities, …
20. Alfresco Cloud API
Considerations
Rate limits
• 5 requests/second, 10,000 requests/day (Dev)
• 50 requests/second, 100,000 requests/day (Prod)
No limit on # of applications
Alfresco Cloud users own their content
>= OpenCMIS 0.8.0-SNAPSHOT
>= cmislib 0.5.1dev
21. Getting Help
Docs: http://www.alfresco.com/develop
Resources:
• Alfresco API forum
• #alfresco on freenode IRC
• Alfresco Technical Discussion Google Group
Source Code:
• Code from DevCon Session
• Spring Social Alfresco Library
• Peter’s Grails Example
• Jeff’s Java Examples & Python Examples
22. 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
23. Conquer Content Chaos!
Get your API key by May 31
and we’ll ship you this t-
shirt!
http://www.alfresco.com/develop
Tons of content in companies today. Email is another big one.
A document repository helps answer these questions and keeps you productive
Alfresco’s cloud client, Alfresco’s mobile client, and an application one of Alfresco’s customers built are all examples of apps that help people deal with unstructured content. There are countless other examples.
Look at your own file system to see the kinds of silly things we do when we try to use a blunt tool like a file system for things like document management. We try to add information to file names because that’s all we have to work with.
Most content repositories look like this high-level diagram. Some differ in the protocols they support or exactly how files are stored (database versus file system, for example).
Just like databases before standardized SQL, each content repository has its own proprietary API. Huge pain.
Microsoft, EMC, IBM, SAP, Alfresco all are involved in this specification and have adopted it in their products.
What’s in the spec at an extremely high level
CMIS is the specification. Apache Chemistry is the reference implementation.
Once you get the hang of that, write code using your favorite language
Demo shows us starting with an empty Alfresco repositoryRunning the app from EclipseRunning a data loader to load some sample dataClicking around in the appRunning a python script to sync data from Alfresco to another vendor’s repoChanging a parameter in the application to point to the other repoCreate a new object in AlfrescoSync picks up the new object, puts it in the target repo, app sees it
Now custom apps and integrations don’t have to rely on one-off integrations. They use a single API (CMIS) instead.
REST API includes:SitesMembersFavoritesNetworksPeopleContainersActivitiesRatingsCommentsTags