Alfresco Developer Series
About the Alfresco Developer Series
The “Alfresco Developer” series of articles is aimed at developers new to Alfresco who need an overview of the main customization points. The series uses a single business case as an example that covers many different technical aspects of Alfresco. Each article takes you through hands-on customizations, step-by-step, and includes ready-to-build source code so you can follow along using your own local installation.
Much of the information can be found on Alfresco’s wiki, in the forums, in Jira, and, of course, in the source–my goal was to pull it together into a cohesive, step-by-step story.
New articles may be added to the series over time. The articles currently in the series are shown below in a rough recommended order of progression:
“Working with Custom Content Types”, June, 2007.
“Working with Custom Content Types, 2nd Edition”, January, 2012. Updated for Alfresco Share and CMIS.
This article shows how to extend Alfresco with your own content model and how to work with content that leverages that model. The first edition shows examples using the Web Services API for Java and the Lucene query syntax. The second edition uses the OpenCMIS API and CMIS Query Language.
This article introduces the fictitious “SomeCo” company that is planning on using Alfresco for both document management and web content management. SomeCo is going to use Alfresco to manage the authoring process around whitepapers which are subsequently published to their web site. The goal is for the remaining articles in the series to build on the SomeCo example.
“Developing custom actions”, January, 2007.
“Developing custom actions, 2nd Edition”, January, 2012. Updated for Alfresco Share.
The second edition of this article shows how to create action executer classes in Java and then goes on to show how to configure the Alfresco Share and Alfresco Explorer user interfaces to expose those actions to end users. This article builds on top of the SomeCo content model created for the Content Types tutorial.
“Implementing custom behaviors”, September, 2007.
This article builds on the custom content types article by adding support to the content model for user-contributed ratings of whitepapers. The custom behavior is used to calculate the average rating for each piece of rated content. The rateable aspect and associated behavior will be leveraged by web scripts called when users on the SomeCo web site click a ratings widget.
“Intro to the Web Script Framework”, October, 2007.
The intent of the article is to walk through some hands-on examples using Alfresco’s Web Script Framework which became available in the 2.1 release of the product. The article shows how to use Web Scripts to create a REST API for creating user-contributed ratings. The SomeCo web site can then wire an AJAX ratings widget to the REST API to allow SomeCo web site visitors to rate whitepapers published on the site.
“Advanced Workflows”, November, 2007. Covers jBPM and Alfresco Explorer
“Advanced Workflows, 2nd Edition”, February, 2012. Covers Activiti and Alfresco Share
The article starts by describing high-level worklfow concepts and steps for implementing advanced workflows in Alfresco and then dives into the details by walking you through an example.
The example extends the “SomeCo Whitepapers” story from earlier articles in the Alfresco Developer series by implementing a business process to enable SomeCo’s engineering team, marketing team, and third-party partners to review whitepapers before being published to the SomeCo web site.
The integration of third-party partners is handled through email–recipients simply click a link to approve or reject the workflow task. The link invokes web scripts to signal the workflow to take the appropriate path in the process.
“Getting Started with CMIS”, November, 2009.
The article first takes you through an overview of the specification. Then, I do several examples. The examples start out using curl to make GET, PUT, POST, and DELETE calls against Alfresco to perform CRUD functions on folders, documents, and relationships in the repository.
Once you’ve felt both the joy and the pain of talking directly to the CMIS AtomPub Binding, I take you through some very short examples using JavaScript and Java. For Java I show Apache Abdera, Apache Chemistry, and the Apache Chemistry TCK.
About the sample code
With the exception of the first edition of the Custom Actions article and the Getting Started with CMIS article, all source code is cumulative. In other words, the custom code accompanying the Advanced Workflow article includes the source code from all previous articles. Links to the source code and directions for building and deploying the source code are included in each article.
License
All of the articles in the series are licensed under the Creative Common Attribution-Share Alike 2.5/3.0 License.
Feedback
Many of you have provided feedback on specific articles or the series as a whole via comments on this blog, in person, or via email. Regardless of the method, feedback is welcome and encouraged.
Alfresco Developer Guide
The response to the Alfresco Developer Series was so positive, I decided to take it one step further. I used several of these tutorials as the starting point for a book which was published in 2008. Most of the material has been re-worked although there is some duplication. The actions and behaviors material changed the most. The book is called Alfresco Developer Guide and is available from Packt Publishing and other book stores. All of my blog posts related to the book are categorized under Alfresco Book. All resources related to the book have been centrally indexed on the Alfresco Developer Guide page.
The second editions of these tutorials were written after the book was published.

