Tech talk live alfresco cmis

24
Alfresco Florian Müller, Software Architect

description

Slide deck to accompany Tech Talk Live webinar with Florian Müller and Jeff Potts

Transcript of Tech talk live alfresco cmis

Page 1: Tech talk live alfresco cmis

Alfresco Florian Müller, Software Architect

Page 2: Tech talk live alfresco cmis

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?

Page 3: Tech talk live alfresco cmis

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”

Page 4: Tech talk live alfresco cmis

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!

Page 5: Tech talk live alfresco cmis

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

Page 6: Tech talk live alfresco cmis

Questions

Page 7: Tech talk live alfresco cmis

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.

Page 8: Tech talk live alfresco cmis

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.)

Page 9: Tech talk live alfresco cmis

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!

Page 10: Tech talk live alfresco cmis

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.

Page 11: Tech talk live alfresco cmis

Questions

Page 12: Tech talk live alfresco cmis

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

Page 13: Tech talk live alfresco cmis

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();

Page 14: Tech talk live alfresco cmis

CMIS Web Scripts 3/3

Page 15: Tech talk live alfresco cmis

Questions

Page 16: Tech talk live alfresco cmis

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

Page 17: Tech talk live alfresco cmis

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

Page 18: Tech talk live alfresco cmis

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!

Page 19: Tech talk live alfresco cmis

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

Page 20: Tech talk live alfresco cmis

Questions

Page 21: Tech talk live alfresco cmis

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.

Page 22: Tech talk live alfresco cmis

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/

Page 23: Tech talk live alfresco cmis

CMIS Web Scripts

Page 24: Tech talk live alfresco cmis

Questions