Book Review – Learning Alfresco Web Scripts

Learning Alfresco Web Scripts

This is a review of the book – Learning Alfresco Web Scripts, written by Ramesh Chauhan and published by PACKT. I did not receive any compensation for writing this review. I did receive an electronic copy for reviewing.


Alfresco web scripts are used to integrate clients with Alfresco via RESTful web services. They are an alternative to CMIS and SOAP and provide tighter integration and extra features.

I found the book easy to follow and an easy read in general. It is suggested for new alfresco developers and offers depth for experienced developers. Some chapters could be used as a reference as well.

The book is structured as follows. It starts with an overview of Alfresco web scripts. Then it gets hands-on right away with a simple web script. It gradually adds detail to the implementation before diving into the details of the architecture and implementation. Then it moves to more practical concerns such as deployment, troubleshooting, and configuration management using Maven. It ends with guidance on extending the framework.

In technical books, I always look for tips and information that comes from experience. Reference material alone doesn’t cut it as much of it may be available online, and the printed material becomes outdated quickly. This book does have tips on when and where to use specific choices, best practice recommendations for various options, and troubleshooting tips for various errors. It also has provides some general tips such as dealing with client limitations.

The approach to the technical material is in a form somewhat similar to a tutorial. It shows code samples, discusses the related concepts, and provides steps for trying it out.

I did notice some naive statements though the intent of the author is obvious in such situations. I could only smile at the statements to the effect that “every question has an answer” and “production servers cannot be restarted”.

On a more serious note, it would have been nice to use a single scenario throughout the book to tie all the examples together into one solution at the end. This was a feedback that I got on my first book, and it made a huge improvement in its second edition.

Overall, I feel that this book a good resource for anyone integrating systems with Alfresco as a back-end system.

Book Review: Alfresco 3 Web Services

Alfresco 3 Web Services book This is a review of the book – Alfresco 3 Web Services by Ugo Cei and Piergiorgio Lucidi. Click on the cover image to see the publisher’s page for the book. The book is published by PACKT Publishing – an active supporter of open-source projects.

Disclaimers / Disclosures

  1. This review represents my independent opinion.
  2. I have not been paid for this review.
  3. The publisher has provided me with a free copy of the book for writing this review.

Approach

This review does not attempt to provide information about Alfresco or web services outside the context of the book. The review focuses on what the book offers, what it does well, and where it could have done better. Content outline and information about the authors is present on the publisher’s page for the book.

Review

I browsed through the book as soon as I received my review copy to get a feel for its contents. It appeared to a be a handy reference for building applications or integrations with Alfresco using its web service interfaces. While this impression held well as I went through the text, I made some additional observations.

At a high level, this book is organized into three parts – SOAP-based access to Alfresco, REST-based access to Alfresco, and CMIS. I would have loved to see this organization made explicit as Parts 1, 2, and 3. Currently, the description of this organization is hidden in a small paragraph in the preface, which many readers may miss. An introductory chapter relating the high-level concepts and introducing Alfresco would have made the book significantly more reader-friendly. I felt that the book assumes certain knowledge of content management concepts and of Alfresco, but this assumption is not made explicit in “Who this book is for”.

The book does well when it comes to getting into the details of features and capabilities. These details are made accessible to the reader using examples and real products as diverse as Alfresco SDK, FreeMarker, Apache Chemistry, Google Web Toolkit, and MyLyn WikiText parser. The book uses a Book Shop model for a large number of examples, but it also refers to other smaller examples depending on the context.

It also does a good job of introducing the concepts and standards related to SOAP, REST, web scripts, FreeMarker templating, Atom, AtomPub, and CMIS. CMIS deservedly gets a lion’s share in the text as it is a standard means of interaction with any content repository implementing this interface. As many of the content management heavyweights have backed CMIS, it is likely to be supported widely. The discussion on CMIS includes AtomPub and Web Services bindings, CMIS query language, and an example of building a complete CMIS  client application.

The bookshop example is used as a key example in the book. The details of the example appear somewhat contrived to enable explanation of the relevant concepts. There is nothing wrong with an example being contrived in this manner; actually, it serves well to illustrate how to accomplish the desired effects. I just expect the text to make it clear that the example is a contrived one. The book, however, refers to it as a “real case”. I am wondering why I would implement a bookshop web site on Alfresco in real life. There could be a plausible reason but it was not explained. In my mind, I would need some content management requirements to use Alfresco, and I would probably limit the role of Alfresco to that extent in the commercial web site. Further, the example was mostly focused on metadata, and I kept wondering why I wouldn’t just use a database rather than a content repository.

I am not belaboring the bookshop example for its own sake as I admitted that it does well to illustrate the interface details. In my mind, it represents a missed opportunity for the book. In general, the book could have provided more advice on when to do something in addition to how to do it.

Conclusion

Overall, I found the book to be a handy resource for anyone working with Alfresco or content management web services. If you know the specific things that you need to do it can be an excellent resource showing you how to do it. If you need to make choices before implementation, you may need to utilize additional resources. If you are new to Alfresco and content management, you may want to look at additional resources first.