SlideShare a Scribd company logo
Getting Started with CMIS
January 2012

Jeff Potts
Chief Community Officer
Apache Chemistry cmislib lead
Agenda
• What is CMIS?
  – Brief description
  – Quick overview of the domain model
• First steps using Apache Chemistry
  – Demos using cmislib (Python) and OpenCMIS
    (Java)
  – Demo using OpenCMIS Workbench & the Groovy
    Console
• Tips & Tricks for New CMIS Developers
• Where to learn more
Getting Started with CMIS
What is CMIS?
• Vendor independent API for working with
  content repositories
• Specification managed by OASIS
  – Domain model
  – Protocol bindings
    • Web Services Binding
    • ATOM Pub Binding
    • Browser (JSON) Binding (Coming in 1.1)
  – CMIS Query Language
The Beauty of CMIS
 Presentation
     Tier

                 REST   SOAP




                               ?
   Content
 Services Tier




  Enterprise
  Apps Tier                        ?
Meet CMIS
  Consumer
                Client


              read   write

              Services
             Domain Model
  Provider




                                      Content
              Vendor                  Management
              Mapping                 Interoperability
                                      Services
               Content
              Repository     CMIS lets you
                             read, search, write, update, delete, version, c
                             ontrol, … content and metadata!
Developed by 30+ ECM Vendors
Implementations Already Available…




                                     Providers
                                     Consumers
Use Cases
                            Content
        Client                                      Client
                           Repository



       Content              Content               Content
                                                   Content
      Repository           Repository            Repository
                                                     Content
                                                  Repository
                                                    Repository


 •   Collaborative Content Creation     •   Workflow & BPM
 •   Portals                            •   Archival
 •   Client Application Integration     •   Virtual Documents
 •   Mashup                             •   DAM / WCM
Types
Document                      Folder
• Content                     • Container
• Renditions                  • Hierarchy
• Version History             • Filing

                     Described by
                    Type Definitions

Relationship                  Policy
• Source Object               • Target Object
• Target Object
Type Definitions
            Object                       Property
            • Type Id                    • Property Id
            • Parent               *     • Display Name
            • Display Name               • Type
            •Queryable                   • Required
            • Controllable               • Default Value
                                         •…



 Document           Folder             Relationship        Policy
 •Versionable                          • Source Types
 • Allow Content                       • Target Types


                             Custom Type
Getting Started with CMIS
• Open Source implementations of CMIS
• Apache Chemistry is the umbrella project
  for all CMIS related projects within the
  ASF
  – OpenCMIS (Java, client and server)
  – cmislib (Python, client)
  – phpclient (PHP, client)
  – DotCMIS (.NET, client)
• Apache Chemistry started as an incubator
  project in May 2009
  – Graduated to a top level project in February
    2011.
• Backed by
  Adobe, Alfresco, Nuxeo, OpenText, and
  SAP
• OpenCMIS is a de-facto reference for
  CMIS and is also used by the CMIS TC to
  test new CMIS 1.1 features
FIRST STEPS WITH CMIS

Real-world coding examples
Notes on my setup
•   Alfresco 4.0.c Community
•   SomeCo content model (See ecmarchitect.com)
•   Mac OS X, Tomcat, MySQL, Eclipse
•   Java
    – OpenCMIS 0.6*
    – Alfresco OpenCMIS extension 0.2*
    – JDK 1.6.0_29
• Python
    – cmislib 0.5
    – Python 2.6/2.7

                                * Distributed with Alfresco 4 SDK
DEMO
Installing and Using cmislib
Use easy_install to install cmislib. Docs available here.




                                                            :10
DEMO
Using OpenCMIS to create, query, relate, & delete
The code comes from the ecmarchitect.com custom content types
tutorial, available here. Apache Chemistry OpenCMIS lives here.




                                                           :10
DEMO

Using the Groovy Console in the OpenCMIS Workbench




                                                     :05
TIPS & TRICKS

A few tidbits for the developer new to CMIS
Prefix cannot be null or empty
• You may see this error when using the
  Alfresco OpenCMIS extension
• It is due to a dependency problem
• If you are using Maven, see this issue.
• If you are setting an explicit
  classpath, refer to the CMIS classpath set
  in the Ant build file in the content types
  tutorial
Using Alfresco CMIS extension with
OpenCMIS Workbench
• You must do this if you want to set
  properties defined in an aspect
• Copy alfresco-opencmis-extension-0.2.jar
  to workbench/lib
• Set the following on “Expert” tab:
org.apache.chemistry.opencmis.objectfactory.classname=o
rg.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl

• Click “Load Repositories” before leaving
  the expert tab
In Alfresco 4 the CMIS URLs have
changed
• In Alfresco 4, OpenCMIS is now the CMIS
  implementation
  – Use http://localhost:8080/alfresco/cmisatom
    instead of http://localhost:8080/alfresco/s/cmis
  – Consider the CMIS web scripts to be
    deprecated
  – You may see different results b/w the two
    URLs
CMIS in server-side JavaScript*
varcmisConnection = cmis.getConnection();
varcmisSession    = cmisConnection.getSession();
folder = cmisSession.getRootFolder();
print("Children of: " + folder.name + "(" +
folder.id + ")");

variter = folder.getChildren().iterator();
while (iter.hasNext()) {
  print(iter.next().name);
}




                               *Broken in 4.0.c Community
Experimental JSON binding in
 Alfresco 4
 • Alfresco 4 includes an experimental
   implementation of the new browser
   binding
 • http://localhost:8080/alfresco/cmisbrowser
http://localhost:8080/alfresco/cmisbrowser
http://localhost:8080/alfresco/cmisbrowser/{repo id}/root
http://localhost:8080/alfresco/cmisbrowser/{repo
id}/root?includeAllowableActions=true&skipCount=0&maxItems
http://localhost:8080/alfresco/cmisbrowser/{repo
id}/root/cmis-demo
http://localhost:8080/alfresco/cmisbrowser/{repo
id}/root/cmisdemo?selector=children
http://localhost:8080/alfresco/cmisbrowser/{repo
id}/root/cmisdemo?selector=object
Working with permissions
• ACLs are lists of ACEs
• In Alfresco, group identifiers start with
  ”GROUP_”
• You cannot break inheritance through
  CMIS, but you can determine whether an
  ACE is inherited or “direct”
WHERE TO LEARN MORE
CMIS Resources
• cmis.alfresco.com includes a public CMIS server
  and links to CMIS resources
• Read the CMIS specification
• Apache Chemistry site has clients, lightweight
  server, documentation
• Alfresco Extension for OpenCMIS allows you to
  work with aspect-defined properties
• “Getting Started with CMIS” tutorial shows how to
  use cURL to hit ATOM Pub binding directly
• Slideshare has some CMIS related presentations
  from DevConhere and here
QUESTIONS
jeff.potts@alfresco.com
@jeffpotts01 (Twitter & all chat services)
http://ecmarchitect.com

More Related Content

PPTX
Getting Started with Runtime Security on Azure Kubernetes Service (AKS)
PPTX
Azure Security Fundamentals
PPTX
Alfresco CMIS
PDF
What is Docker Architecture | Edureka
PDF
Microservice architecture
PDF
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
PDF
An Introduction to AWS
PPTX
Moving From Actions & Behaviors to Microservices
Getting Started with Runtime Security on Azure Kubernetes Service (AKS)
Azure Security Fundamentals
Alfresco CMIS
What is Docker Architecture | Edureka
Microservice architecture
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
An Introduction to AWS
Moving From Actions & Behaviors to Microservices

What's hot (20)

PDF
Terraform
PPTX
OpenShift Introduction
PDF
Storage and Alfresco
PDF
Scaling paypal workloads with oracle rac ss
PDF
Getting Started with Infrastructure as Code
PDF
Firebase Auth Tutorial
PPTX
Terraform on Azure
PPTX
Terraform
PPTX
What is Object storage ?
PDF
Best Practices with Azure Kubernetes Services
PPTX
Terraform modules restructured
PDF
From Spring Framework 5.3 to 6.0
PDF
Netapp Storage
PPTX
강연 1. AWS 소개 및 AWS의 역사:: AWSome Day Online Conference
PPTX
Introduction To Terraform
PPTX
Introduce Google Kubernetes
PDF
Cloud Native Application
PPTX
Govern your Azure environment through Azure Policy
PDF
Oracle DB를 AWS로 이관하는 방법들 - 서호석 클라우드 사업부/컨설팅팀 이사, 영우디지탈 :: AWS Summit Seoul 2021
PDF
진화하는 CloudFront 의 이해와 글로벌 서비스 활용 - 안수일 시니어 솔루션즈 아키텍트, GS NEOTEK :: AWS Summit...
Terraform
OpenShift Introduction
Storage and Alfresco
Scaling paypal workloads with oracle rac ss
Getting Started with Infrastructure as Code
Firebase Auth Tutorial
Terraform on Azure
Terraform
What is Object storage ?
Best Practices with Azure Kubernetes Services
Terraform modules restructured
From Spring Framework 5.3 to 6.0
Netapp Storage
강연 1. AWS 소개 및 AWS의 역사:: AWSome Day Online Conference
Introduction To Terraform
Introduce Google Kubernetes
Cloud Native Application
Govern your Azure environment through Azure Policy
Oracle DB를 AWS로 이관하는 방법들 - 서호석 클라우드 사업부/컨설팅팀 이사, 영우디지탈 :: AWS Summit Seoul 2021
진화하는 CloudFront 의 이해와 글로벌 서비스 활용 - 안수일 시니어 솔루션즈 아키텍트, GS NEOTEK :: AWS Summit...
Ad

Similar to Getting Started with CMIS (20)

PDF
PLAT-1 CMIS in the Real World
PDF
FISL: Content Management Primer
PDF
CM Pros CMIS Overview - Jan 2011
PDF
PLAT-3 CMIS — What’s coming next?
PDF
Apache Chemistry: The Alfresco Open Source Implementation of CMIS
PDF
PLAT-2 CMIS - What’s coming next?
PPTX
CMIS Introduction
PDF
ITB2016 - ContentBox Modular CMS
PDF
PLAT-16 Using Enterprise Content in Grails
PDF
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
PDF
WCM-9 WCM Solutions with Drupal and Alfresco
PDF
Tech talk-live-alfresco-drupal
PDF
Cmis Virtual Training Webinar 24 Nov09
KEY
Eclipse Enterprise Content Repository (ECR)
PPT
CDMI For Swift
PPTX
CMIS: An Open API for Managing Content
PDF
Alfresco 4: Scalability and Performance
PDF
Alfresco scalability and performnce
PPTX
Building Content-Rich Java Apps in the Cloud with the Alfresco API
PDF
Nuxeo World Session: CMIS - What's Next?
PLAT-1 CMIS in the Real World
FISL: Content Management Primer
CM Pros CMIS Overview - Jan 2011
PLAT-3 CMIS — What’s coming next?
Apache Chemistry: The Alfresco Open Source Implementation of CMIS
PLAT-2 CMIS - What’s coming next?
CMIS Introduction
ITB2016 - ContentBox Modular CMS
PLAT-16 Using Enterprise Content in Grails
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
WCM-9 WCM Solutions with Drupal and Alfresco
Tech talk-live-alfresco-drupal
Cmis Virtual Training Webinar 24 Nov09
Eclipse Enterprise Content Repository (ECR)
CDMI For Swift
CMIS: An Open API for Managing Content
Alfresco 4: Scalability and Performance
Alfresco scalability and performnce
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Nuxeo World Session: CMIS - What's Next?
Ad

More from Jeff Potts (20)

PPTX
No Docker? No Problem: Automating installation and config with Ansible
PPTX
Flexible Permissions Management with ACL Templates
PPTX
Moving Gigantic Files Into and Out of the Alfresco Repository
PDF
Could Alfresco Survive a Zombie Attack?
PPTX
Connecting Content Management Apps with CMIS
PPTX
The Challenges of Keeping Bees
PPTX
Getting Started With CMIS
PPTX
Alfresco: What every developer should know
PPTX
Apache Chemistry in Action: Using CMIS and your favorite language to unlock c...
PPTX
Alfresco: The Story of How Open Source Disrupted the ECM Market
PPTX
Join the Alfresco community
PPTX
Intro to the Alfresco Public API
PPTX
Apache Chemistry in Action
PPTX
Alfresco Community Survey 2012 Results
PPTX
Relational Won't Cut It: Architecting Content Centric Apps
PPTX
Alfresco SAUG: State of ECM
PPTX
Alfresco SAUG: CMIS & Integrations
PDF
Should You Attend Alfresco Devcon 2011
PPTX
2011 Alfresco Community Survey Results
PPTX
Intro to Alfresco for Developers
No Docker? No Problem: Automating installation and config with Ansible
Flexible Permissions Management with ACL Templates
Moving Gigantic Files Into and Out of the Alfresco Repository
Could Alfresco Survive a Zombie Attack?
Connecting Content Management Apps with CMIS
The Challenges of Keeping Bees
Getting Started With CMIS
Alfresco: What every developer should know
Apache Chemistry in Action: Using CMIS and your favorite language to unlock c...
Alfresco: The Story of How Open Source Disrupted the ECM Market
Join the Alfresco community
Intro to the Alfresco Public API
Apache Chemistry in Action
Alfresco Community Survey 2012 Results
Relational Won't Cut It: Architecting Content Centric Apps
Alfresco SAUG: State of ECM
Alfresco SAUG: CMIS & Integrations
Should You Attend Alfresco Devcon 2011
2011 Alfresco Community Survey Results
Intro to Alfresco for Developers

Recently uploaded (20)

PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
sap open course for s4hana steps from ECC to s4
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPT
Teaching material agriculture food technology
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Encapsulation theory and applications.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
sap open course for s4hana steps from ECC to s4
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Review of recent advances in non-invasive hemoglobin estimation
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Dropbox Q2 2025 Financial Results & Investor Presentation
Understanding_Digital_Forensics_Presentation.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Chapter 3 Spatial Domain Image Processing.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
20250228 LYD VKU AI Blended-Learning.pptx
Teaching material agriculture food technology
Encapsulation_ Review paper, used for researhc scholars
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Encapsulation theory and applications.pdf
Unlocking AI with Model Context Protocol (MCP)

Getting Started with CMIS

  • 1. Getting Started with CMIS January 2012 Jeff Potts Chief Community Officer Apache Chemistry cmislib lead
  • 2. Agenda • What is CMIS? – Brief description – Quick overview of the domain model • First steps using Apache Chemistry – Demos using cmislib (Python) and OpenCMIS (Java) – Demo using OpenCMIS Workbench & the Groovy Console • Tips & Tricks for New CMIS Developers • Where to learn more
  • 4. What is CMIS? • Vendor independent API for working with content repositories • Specification managed by OASIS – Domain model – Protocol bindings • Web Services Binding • ATOM Pub Binding • Browser (JSON) Binding (Coming in 1.1) – CMIS Query Language
  • 5. The Beauty of CMIS Presentation Tier REST SOAP ? Content Services Tier Enterprise Apps Tier ?
  • 6. Meet CMIS Consumer Client read write Services Domain Model Provider Content Vendor Management Mapping Interoperability Services Content Repository CMIS lets you read, search, write, update, delete, version, c ontrol, … content and metadata!
  • 7. Developed by 30+ ECM Vendors Implementations Already Available… Providers Consumers
  • 8. Use Cases Content Client Client Repository Content Content Content Content Repository Repository Repository Content Repository Repository • Collaborative Content Creation • Workflow & BPM • Portals • Archival • Client Application Integration • Virtual Documents • Mashup • DAM / WCM
  • 9. Types Document Folder • Content • Container • Renditions • Hierarchy • Version History • Filing Described by Type Definitions Relationship Policy • Source Object • Target Object • Target Object
  • 10. Type Definitions Object Property • Type Id • Property Id • Parent * • Display Name • Display Name • Type •Queryable • Required • Controllable • Default Value •… Document Folder Relationship Policy •Versionable • Source Types • Allow Content • Target Types Custom Type
  • 12. • Open Source implementations of CMIS • Apache Chemistry is the umbrella project for all CMIS related projects within the ASF – OpenCMIS (Java, client and server) – cmislib (Python, client) – phpclient (PHP, client) – DotCMIS (.NET, client)
  • 13. • Apache Chemistry started as an incubator project in May 2009 – Graduated to a top level project in February 2011. • Backed by Adobe, Alfresco, Nuxeo, OpenText, and SAP • OpenCMIS is a de-facto reference for CMIS and is also used by the CMIS TC to test new CMIS 1.1 features
  • 14. FIRST STEPS WITH CMIS Real-world coding examples
  • 15. Notes on my setup • Alfresco 4.0.c Community • SomeCo content model (See ecmarchitect.com) • Mac OS X, Tomcat, MySQL, Eclipse • Java – OpenCMIS 0.6* – Alfresco OpenCMIS extension 0.2* – JDK 1.6.0_29 • Python – cmislib 0.5 – Python 2.6/2.7 * Distributed with Alfresco 4 SDK
  • 16. DEMO Installing and Using cmislib Use easy_install to install cmislib. Docs available here. :10
  • 17. DEMO Using OpenCMIS to create, query, relate, & delete The code comes from the ecmarchitect.com custom content types tutorial, available here. Apache Chemistry OpenCMIS lives here. :10
  • 18. DEMO Using the Groovy Console in the OpenCMIS Workbench :05
  • 19. TIPS & TRICKS A few tidbits for the developer new to CMIS
  • 20. Prefix cannot be null or empty • You may see this error when using the Alfresco OpenCMIS extension • It is due to a dependency problem • If you are using Maven, see this issue. • If you are setting an explicit classpath, refer to the CMIS classpath set in the Ant build file in the content types tutorial
  • 21. Using Alfresco CMIS extension with OpenCMIS Workbench • You must do this if you want to set properties defined in an aspect • Copy alfresco-opencmis-extension-0.2.jar to workbench/lib • Set the following on “Expert” tab: org.apache.chemistry.opencmis.objectfactory.classname=o rg.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl • Click “Load Repositories” before leaving the expert tab
  • 22. In Alfresco 4 the CMIS URLs have changed • In Alfresco 4, OpenCMIS is now the CMIS implementation – Use http://localhost:8080/alfresco/cmisatom instead of http://localhost:8080/alfresco/s/cmis – Consider the CMIS web scripts to be deprecated – You may see different results b/w the two URLs
  • 23. CMIS in server-side JavaScript* varcmisConnection = cmis.getConnection(); varcmisSession = cmisConnection.getSession(); folder = cmisSession.getRootFolder(); print("Children of: " + folder.name + "(" + folder.id + ")"); variter = folder.getChildren().iterator(); while (iter.hasNext()) { print(iter.next().name); } *Broken in 4.0.c Community
  • 24. Experimental JSON binding in Alfresco 4 • Alfresco 4 includes an experimental implementation of the new browser binding • http://localhost:8080/alfresco/cmisbrowser http://localhost:8080/alfresco/cmisbrowser http://localhost:8080/alfresco/cmisbrowser/{repo id}/root http://localhost:8080/alfresco/cmisbrowser/{repo id}/root?includeAllowableActions=true&skipCount=0&maxItems http://localhost:8080/alfresco/cmisbrowser/{repo id}/root/cmis-demo http://localhost:8080/alfresco/cmisbrowser/{repo id}/root/cmisdemo?selector=children http://localhost:8080/alfresco/cmisbrowser/{repo id}/root/cmisdemo?selector=object
  • 25. Working with permissions • ACLs are lists of ACEs • In Alfresco, group identifiers start with ”GROUP_” • You cannot break inheritance through CMIS, but you can determine whether an ACE is inherited or “direct”
  • 27. CMIS Resources • cmis.alfresco.com includes a public CMIS server and links to CMIS resources • Read the CMIS specification • Apache Chemistry site has clients, lightweight server, documentation • Alfresco Extension for OpenCMIS allows you to work with aspect-defined properties • “Getting Started with CMIS” tutorial shows how to use cURL to hit ATOM Pub binding directly • Slideshare has some CMIS related presentations from DevConhere and here
  • 28. QUESTIONS jeff.potts@alfresco.com @jeffpotts01 (Twitter & all chat services) http://ecmarchitect.com