The “E” in “ECM” stands for “Enterprise”. Translation: Enormous, Extremely uninteresting, Exceedingly complex. And yet most organizations have two or more ECM systems. How can we write content-centric applications, including mobile and cloud apps, that access these repositories (some of them very “yesterday”) using today’s preferred languages and frameworks? Apache Chemistry makes it possible by providing client-side libraries in Java, Python, DotNET, PHP, and Objective-C that give your apps the power to interoperate with ECM repositories like SharePoint, Documentum, & Alfresco.
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apache Chemistry in Action: Using CMIS and your favorite language to unlock content from ECM repositories by Jeff Potts
1. Apache Chemistry in Action: Using CMIS
and your favorite language to unlock
content from ECM repositories
Jeff Potts
jeff.potts@alfresco.com OR jpotts@apache.org
2. 80% of the content in an Enterprise is unstructured
Jeff Potts jeff.potts@alfresco.com
3. Managing & collaborating on files is a pain
Jeff Potts
Where is the latest version?
Who changed it last? What did they change?
Which project is this related to?
Who should be allowed to see this file? To
make changes?
How long do we have to keep this file?
Can I get this file in another format?
I’m done with this file, what happens next?
jeff.potts@alfresco.com
4. So we write apps that help deal with content
Jeff Potts jeff.potts@alfresco.com
archives.nyphil.org
my.alfresco.com
Alfresco iOS Client
5. But files are a strange beast
Jeff Potts
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
jeff.potts@alfresco.com
6. That’s where a content repository comes in
Jeff Potts jeff.potts@alfresco.com
RDB
(Metadata)
File System
(Files)
FileProtocols
(WebDAV,FTP,etc.) API
Repository
Content Object
7. The Problem: Until now, each repo had its own API
jeff.potts@alfresco.com
API API API
My Custom Application Third-Party Systems
Most organizations have multiple repositories!
One-off
integration
One-off
integration
One-off
integration
Jeff Potts
8. An industry-wide specification is born: CMIS
Jeff Potts
Managed by OASIS
Broad vendor support and
adoption
1.0 out now, 1.1 coming soon
http://bit.ly/PnAb77
jeff.potts@alfresco.com
9. CMIS specification describes a repo and what’s in it
Jeff Potts
Domain Model: Repository, Folder,
Document, ACL, Relationship, Object
Type, Secondary Type*, Item*
Binding: Web Services, AtomPub, Browser
(JSON)*
Query Language: Subset of SQL-92
jeff.potts@alfresco.com
*New in CMIS 1.1
10. Apache Chemistry is the CMIS reference implementation
Jeff Potts
Client libraries, server
frameworks, development tools
jeff.potts@alfresco.com
http://bit.ly/ex20BT
11. Getting started with CMIS
Jeff Potts
Grab a CMIS client from Apache Chemistry
Find a CMIS-compliant repository
You need its “service URL”
Connect to it with the OpenCMIS
Workbench
jeff.potts@alfresco.com
12. Let’s see a demo! Python & cmislib, multiple repos
Jeff Potts jeff.potts@alfresco.com
cmislib
13. Let’s see another! Java & OpenCMIS, Servlets & JSPs
Jeff Potts
The Blend
– An example music mash-
up site
– Java Servlets & JSPs
– Show it running against
multiple CMIS
repositories
– Full source available
from Manning
jeff.potts@alfresco.com
http://bit.ly/U9npcF
14. The beauty of CMIS
Jeff Potts jeff.potts@alfresco.com
My Custom Application Third-Party Systems
CMIS API
Standard
integration
Standard
integration
15. Coming in CMIS 1.1
Jeff Potts
Browser (JSON) Binding
Type mutability
Secondary types (aka “Aspects”)
Item
jeff.potts@alfresco.com
16. Come to the Alfresco Meetup at 15:00, Rm 123, Bldg G
Meet customers, partners, and other
community members
Learn about Alfresco in the real world
Hear talks on our cloud API, Web Content
Management, Scripts, and Case
Management
See you today at 15:00 in Room 123!
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.