Book Review: Alfresco CMIS

Packt Publishing has released a new book about Alfresco and specifically about how developers can use the CMIS standard with Alfresco, this book is Alfresco CMIS.

The author of this book is Martin Bergljung, Martin is the Principal ECM Architect at Ixxus (UK Alfresco Platinum Partner).

In the first chapter we found a wide introduction to the repositories standards with just a little bit of history that I have really appreciated.

In this way developers can understand what was the starting point of CMIS and which were the problems against that standards. I'm talking about the WebDAV and the JCR standards and the related problems of each one.

Then the book shows the CMIS basics and the motivations of the wide adoption in the market. 

During the first part it describes the functionalities exposed by two bindings: the AtomPub and the Browser binding. This approach allow the readers to understand very well, and at a raw level, the basic operations of the CMIS protocol.

These operations are described in both the bindings showing the result using XML for the AtomPub, and the JSON format for the browser binding. I found this approach too exhaustive, it's similar to a reference documentation but I think that it is effective.

This is the first time that I can see in a detailed way how the browser binding works and it is very useful when you have to build your own JavaScript code to parse a response given by a CMIS server in JSON. Now we have a complete documentation about this.

In the second part of the book readers can learn a lot about how Alfresco implements the CMIS standard and how this implementation has evolved during the different versions of the repository. Here you can find more details about the mapping between the Alfresco content model and the CMIS model, this to understand how types, properties, aspects and so on are exposed by Alfresco.

Another chapter is dedicated to show how implement your CMIS Java client and again here you can find for each operation the related Java code.

A mention must be done for the dedicated section about Alfresco aspects, the book shows you how to work with aspects in both the ways: using CMIS Alfresco extension and using the secondary types supported by the latest version of Alfresco.

I have very appreciated the section about how to use CMIS with Javascript, here developers can try to write their own HTML pages that invoke operations against a CMIS server. Here  many easy examples are included that allow to understand very well the model behind the standard and also in different ways: JavaScript, JQuery, Groovy and Spring Surf.

Finally I can say that the author made a very good job writing this book with a reference style and each developer that work on CMIS should read this book to have a wide knowledge of the CMIS standard in Alfresco.

I would like to thank Packt Publishing for providing me a digital copy of the book.