SlideShare a Scribd company logo
Alfresco
      Florian Müller, Software Architect
Agenda


•    Prepared topics
     o    Alfresco CMIS mapping

     o    CMIS in Alfresco 3.X versus Alfresco 4.X

     o    CMIS web scripts

     o    Performance tuning

     o    CMIS Browser Binding: CMIS via JSON

•    Your topics
     o    Share experiences and ask questions

     o    What is missing in the CMIS specification?

     o    Which features should be added to the Alfresco OpenCMIS Extension?
Alfresco CMIS mapping 1/4

•    Documents
     o    All types derived from cm:content
     o    CMIS type id: “D:<alfresco type>”
     o    CMIS query name: “<alfresco type>”
     o    Exception: “cm:content”  “cmis:document”




•    Folders
     o    All types derived from cm:folder
     o    CMIS type id: “F:<alfresco type>”
     o    CMIS query name: “<alfresco type>”
     o    Exception: “cm:folder”  “cmis:folder”
Alfresco CMIS mapping 2/4

•    Relationships
     o    All peer-to-peer relationships
     o    CMIS type id: “R:<association type>”
     o    CMIS query name is irrelevant because relationships are not queryable
     o    CMIS base type “cmis:relationship” has no Alfresco equivalent


     o    Only relationships with CMIS source and target objects are exposed!
Alfresco CMIS mapping 3/4

•    Policies
     o    All aspect types
     o    CMIS type id: “P:<alfresco type>”
     o    CMIS query name: “<alfresco type>”
     o    CMIS base type “cmis:policy” has no Alfresco equivalent




•    Any type outside the cm:content and cm:folder
     hierarchy is not exposed via the CMIS interface!

•    http://wiki.alfresco.com/wiki/CMIS_Model_Mapping
Questions
CMIS in Alfresco 4.X 1/4

•    New CMIS implementation based on the
     Apache Chemistry OpenCMIS server framework

•    Why has it been re-implemented?

     o    OpenCMIS is used by several CMIS repositories.
          Alfresco automatically benefits from all bug fixes and improvements.
     o    One code base for the AtomPub and the Web Services binding
          (and the Browser Binding).
     o    Better CMIS specification compliance.
     o    Better performance, less memory consumption,
          handling of big documents.
CMIS in Alfresco 4.X 2/4

•    How does this affect CMIS clients?

     o    New URLs…
          The old implementation and URLs will be available but are deprecated.


     o    Specification compliant, generic CMIS clients shouldn’t see a difference.


     o    Aspects and the Alfresco OpenCMIS Extension work as before.


     o    If the CMIS Client make any assumptions about the format the object id,
          it has to change! (See next slides.)
CMIS in Alfresco 4.X 3/4

•    Alfresco 3.X Object Ids:

     o    Current version document id: node ref
          workspace://SpacesStore/e5787fce-7583-4b74-8836-8dcc94df4493


     o    Version document id: current version node ref + “;” + version label
           workspace://SpacesStore/e5787fce-7583-4b74-8836-8dcc94df4493;1.0


     o    The creation of a new version doesn’t change the current version
          document id.  Not spec compliant!


     o    A client must not assume that a document id always represents the
          current version!
CMIS in Alfresco 4.X 4/4

•    Alfresco 4.X Object Ids:

     o    Current version document id: node ref + “;” + version label
          workspace://SpacesStore/e5787fce-7583-4b74-8836-8dcc94df4493;1.1


     o    Version document id: current version node ref + “;” + version label
           workspace://SpacesStore/e5787fce-7583-4b74-8836-8dcc94df4493;1.0


     o    The creation of a new version changes the current version document id.
           Spec compliant!


     o    General advise: Treat the object id as an opaque string.
Questions
CMIS Web Scripts 1/3

•    Alfresco 4.X has the OpenCMIS client embedded
     and available in web scripts

•    Use case examples:

     o    Alfresco Share mashups and federated queries

     o    Synchronize documents between repositories

     o    Publishing scenarios

     o    Simple migration scenarios
CMIS Web Scripts 2/3

•    New JavaScript top level object: cmis
     o     This object manages connections to CMIS servers.

     o     Three connection types:
             •  Current Alfresco server (uses OpenCMIS local binding if possible)
             •  Preconfigured connection
             •  Web script configured connection


          var cmisConnection = cmis.getConnection(myConnectionId);
          var cmisSession    = cmisConnection.getSession();

          model.folder   = cmisSession.getRootFolder();
          model.children = model.folder.getChildren().iterator();
CMIS Web Scripts 3/3
Questions
Performance Tuning 1/4

•    CMIS = XML over HTTP over a network

     o    Whenever you can avoid a call to the CMIS server, avoid it!


     o    Sensible caching is important.


     o    OpenCMIS and DotCMIS have first-level caching build in.
          Make use of it and add your application specific caching.


     o    OpenCMIS and DotCMIS  Operation Context
Performance Tuning 2/4

•    Be careful what you ask for…

     o    Only ask for the properties you need!
          Some properties are more expensive than others.


     o    Never do perform “SELECT * FROM …” queries in production code.


     o    Fetch allowable actions, ACLs, relationships and renditions only
          if you need them!


     o    Select sensible page sizes and depths! Only request the objects you need.
          If you need all, choose a large page size.


     o    OpenCMIS and DotCMIS  Operation Context
Performance Tuning 3/4

•    HTTP Keep-Alive

     o    Many high-level requests consists of a burst of CMIS requests.


     o    Reusing the same connection makes a difference!


     o    Make sure HTTP Keep-Alive is turned on.


     o    Always read content streams to the end and close them!
Performance Tuning 4/4

•    Compression

     o    The CMIS XML compresses very well.


     o    Compressed CMIS response are usually between 85% and 5% of the
          original size.


     o    Whenever network bandwidth is a bottleneck, turn compression on.


     o    http://wiki.alfresco.com/wiki/CMIS#Compression


     o    OpenCMIS and DotCMIS  Session Parameters
Questions
CMIS Browser Binding: CMIS via JSON

•    CMIS 1.1 will introduce a third binding:
     The Browser Binding.

•    Optimized for CMIS application in web browsers.

     o    Data transport format is JSON.

     o    Works JavaScript and without a server-side client component.

     o    Security and authentication designed for web browsers.



•    More efficient than the Web Services and the
     AtomPub binding.
CMIS Browser Binding: CMIS via JSON

•    Apache Chemistry OpenCMIS will provide an
     implementation for CMIS 1.0
     o    Prototype is available.

     o    It will be shipped with Alfresco 4.X but deactivated by default.

     o    Online demo: http://cmis.alfresco.com/
CMIS Web Scripts
Questions

More Related Content

PDF
Herding cats managing ColdFusion servers with commandbox
PDF
Realtime with-websockets-2015
PDF
Using WebSockets with ColdFusion
PPTX
CORS - Enable Alfresco for CORS
PPTX
Alfresco tuning part1
PDF
What Every New Developer Should Know About Alfresco (Jeff Potts)
PDF
PLAT-16 Using Enterprise Content in Grails
PPTX
Alfresco: What every developer should know
Herding cats managing ColdFusion servers with commandbox
Realtime with-websockets-2015
Using WebSockets with ColdFusion
CORS - Enable Alfresco for CORS
Alfresco tuning part1
What Every New Developer Should Know About Alfresco (Jeff Potts)
PLAT-16 Using Enterprise Content in Grails
Alfresco: What every developer should know

Similar to Tech talk live alfresco cmis (20)

PPTX
Getting Started with CMIS
PPT
"Running CF in a Shared Hosting Environment"
PDF
PLAT-1 CMIS in the Real World
PDF
Tech talk-live-alfresco-drupal
PDF
OpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMIS
PPTX
CMIS Spec Uncovered
PPTX
Alfresco CMIS
PDF
Dev Con 2011
PDF
Whats new in alfresco community 3.4
PDF
CBDW2014 - This is ColdBox 4
PPT
0910 cagliari- spring surf and cmis - the dynamic duo
PDF
"It’s not only Lambda! Economics behind Serverless" at JAX Conference in Mai ...
PDF
PLAT-3 CMIS — What’s coming next?
PDF
Devopsdays london: Let’s talk about security
PPTX
PowerPoint Presentation
PDF
Using communication and messaging API in the HTML5 world - GIl Fink, sparXsys
PPTX
AEM - Client Libraries
PPTX
Serverless Kafka Patterns
PPTX
CMIS Introduction
PPT
Alfresco for Salesforce
Getting Started with CMIS
"Running CF in a Shared Hosting Environment"
PLAT-1 CMIS in the Real World
Tech talk-live-alfresco-drupal
OpenCms Days 2012 - OpenCms 8.5: Accessing the VFS repository using CMIS
CMIS Spec Uncovered
Alfresco CMIS
Dev Con 2011
Whats new in alfresco community 3.4
CBDW2014 - This is ColdBox 4
0910 cagliari- spring surf and cmis - the dynamic duo
"It’s not only Lambda! Economics behind Serverless" at JAX Conference in Mai ...
PLAT-3 CMIS — What’s coming next?
Devopsdays london: Let’s talk about security
PowerPoint Presentation
Using communication and messaging API in the HTML5 world - GIl Fink, sparXsys
AEM - Client Libraries
Serverless Kafka Patterns
CMIS Introduction
Alfresco for Salesforce
Ad

More from Alfresco Software (20)

PPTX
Alfresco Day Benelux Inholland studentendossier
PPTX
Alfresco Day Benelux Hogeschool Inholland Records Management application
PPTX
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
PPTX
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
PPTX
Alfresco Day BeNelux: The success of Alfresco
PDF
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
PDF
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
PDF
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
PDF
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
PDF
Alfresco Day Vienna 2016: Alfrescos neue Rest API
PDF
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
PDF
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
PDF
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
PDF
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
PDF
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
PDF
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
PDF
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
PDF
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
PDF
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
PDF
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Ad

Recently uploaded (20)

PPTX
sap open course for s4hana steps from ECC to s4
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Spectroscopy.pptx food analysis technology
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPT
Teaching material agriculture food technology
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
cuic standard and advanced reporting.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Big Data Technologies - Introduction.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
sap open course for s4hana steps from ECC to s4
Per capita expenditure prediction using model stacking based on satellite ima...
Unlocking AI with Model Context Protocol (MCP)
Spectroscopy.pptx food analysis technology
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Diabetes mellitus diagnosis method based random forest with bat algorithm
NewMind AI Weekly Chronicles - August'25 Week I
Teaching material agriculture food technology
Agricultural_Statistics_at_a_Glance_2022_0.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Mobile App Security Testing_ A Comprehensive Guide.pdf
Understanding_Digital_Forensics_Presentation.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Chapter 3 Spatial Domain Image Processing.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
cuic standard and advanced reporting.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Big Data Technologies - Introduction.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx

Tech talk live alfresco cmis

  • 1. Alfresco Florian Müller, Software Architect
  • 2. Agenda •  Prepared topics o  Alfresco CMIS mapping o  CMIS in Alfresco 3.X versus Alfresco 4.X o  CMIS web scripts o  Performance tuning o  CMIS Browser Binding: CMIS via JSON •  Your topics o  Share experiences and ask questions o  What is missing in the CMIS specification? o  Which features should be added to the Alfresco OpenCMIS Extension?
  • 3. Alfresco CMIS mapping 1/4 •  Documents o  All types derived from cm:content o  CMIS type id: “D:<alfresco type>” o  CMIS query name: “<alfresco type>” o  Exception: “cm:content”  “cmis:document” •  Folders o  All types derived from cm:folder o  CMIS type id: “F:<alfresco type>” o  CMIS query name: “<alfresco type>” o  Exception: “cm:folder”  “cmis:folder”
  • 4. Alfresco CMIS mapping 2/4 •  Relationships o  All peer-to-peer relationships o  CMIS type id: “R:<association type>” o  CMIS query name is irrelevant because relationships are not queryable o  CMIS base type “cmis:relationship” has no Alfresco equivalent o  Only relationships with CMIS source and target objects are exposed!
  • 5. Alfresco CMIS mapping 3/4 •  Policies o  All aspect types o  CMIS type id: “P:<alfresco type>” o  CMIS query name: “<alfresco type>” o  CMIS base type “cmis:policy” has no Alfresco equivalent •  Any type outside the cm:content and cm:folder hierarchy is not exposed via the CMIS interface! •  http://wiki.alfresco.com/wiki/CMIS_Model_Mapping
  • 7. CMIS in Alfresco 4.X 1/4 •  New CMIS implementation based on the Apache Chemistry OpenCMIS server framework •  Why has it been re-implemented? o  OpenCMIS is used by several CMIS repositories. Alfresco automatically benefits from all bug fixes and improvements. o  One code base for the AtomPub and the Web Services binding (and the Browser Binding). o  Better CMIS specification compliance. o  Better performance, less memory consumption, handling of big documents.
  • 8. CMIS in Alfresco 4.X 2/4 •  How does this affect CMIS clients? o  New URLs… The old implementation and URLs will be available but are deprecated. o  Specification compliant, generic CMIS clients shouldn’t see a difference. o  Aspects and the Alfresco OpenCMIS Extension work as before. o  If the CMIS Client make any assumptions about the format the object id, it has to change! (See next slides.)
  • 9. CMIS in Alfresco 4.X 3/4 •  Alfresco 3.X Object Ids: o  Current version document id: node ref workspace://SpacesStore/e5787fce-7583-4b74-8836-8dcc94df4493 o  Version document id: current version node ref + “;” + version label workspace://SpacesStore/e5787fce-7583-4b74-8836-8dcc94df4493;1.0 o  The creation of a new version doesn’t change the current version document id.  Not spec compliant! o  A client must not assume that a document id always represents the current version!
  • 10. CMIS in Alfresco 4.X 4/4 •  Alfresco 4.X Object Ids: o  Current version document id: node ref + “;” + version label workspace://SpacesStore/e5787fce-7583-4b74-8836-8dcc94df4493;1.1 o  Version document id: current version node ref + “;” + version label workspace://SpacesStore/e5787fce-7583-4b74-8836-8dcc94df4493;1.0 o  The creation of a new version changes the current version document id.  Spec compliant! o  General advise: Treat the object id as an opaque string.
  • 12. CMIS Web Scripts 1/3 •  Alfresco 4.X has the OpenCMIS client embedded and available in web scripts •  Use case examples: o  Alfresco Share mashups and federated queries o  Synchronize documents between repositories o  Publishing scenarios o  Simple migration scenarios
  • 13. CMIS Web Scripts 2/3 •  New JavaScript top level object: cmis o  This object manages connections to CMIS servers. o  Three connection types: •  Current Alfresco server (uses OpenCMIS local binding if possible) •  Preconfigured connection •  Web script configured connection var cmisConnection = cmis.getConnection(myConnectionId); var cmisSession = cmisConnection.getSession(); model.folder = cmisSession.getRootFolder(); model.children = model.folder.getChildren().iterator();
  • 16. Performance Tuning 1/4 •  CMIS = XML over HTTP over a network o  Whenever you can avoid a call to the CMIS server, avoid it! o  Sensible caching is important. o  OpenCMIS and DotCMIS have first-level caching build in. Make use of it and add your application specific caching. o  OpenCMIS and DotCMIS  Operation Context
  • 17. Performance Tuning 2/4 •  Be careful what you ask for… o  Only ask for the properties you need! Some properties are more expensive than others. o  Never do perform “SELECT * FROM …” queries in production code. o  Fetch allowable actions, ACLs, relationships and renditions only if you need them! o  Select sensible page sizes and depths! Only request the objects you need. If you need all, choose a large page size. o  OpenCMIS and DotCMIS  Operation Context
  • 18. Performance Tuning 3/4 •  HTTP Keep-Alive o  Many high-level requests consists of a burst of CMIS requests. o  Reusing the same connection makes a difference! o  Make sure HTTP Keep-Alive is turned on. o  Always read content streams to the end and close them!
  • 19. Performance Tuning 4/4 •  Compression o  The CMIS XML compresses very well. o  Compressed CMIS response are usually between 85% and 5% of the original size. o  Whenever network bandwidth is a bottleneck, turn compression on. o  http://wiki.alfresco.com/wiki/CMIS#Compression o  OpenCMIS and DotCMIS  Session Parameters
  • 21. CMIS Browser Binding: CMIS via JSON •  CMIS 1.1 will introduce a third binding: The Browser Binding. •  Optimized for CMIS application in web browsers. o  Data transport format is JSON. o  Works JavaScript and without a server-side client component. o  Security and authentication designed for web browsers. •  More efficient than the Web Services and the AtomPub binding.
  • 22. CMIS Browser Binding: CMIS via JSON •  Apache Chemistry OpenCMIS will provide an implementation for CMIS 1.0 o  Prototype is available. o  It will be shipped with Alfresco 4.X but deactivated by default. o  Online demo: http://cmis.alfresco.com/