At Ixxus we've been investigating features new to Alfresco version 3.4, and have started to use them in real world situations. This release contains so many interesting features, that's hard to list them all in detail. Of particular interest to me is the alternative new approach to using Alfresco for WCM applications.

Web Content Management (WCM)

Alfresco already has strong enterprise editorial features with its WCM AVM technology. This 'Advanced Versioning Model' has some clever features such as site-wide snapshots, roll-back, virtually unlimited sandboxes and comprehensive deployment mechanisms. There are drawbacks to this technology however, namely the fact that it is an entirely separate repository store from DM content and is exploitable by only a subset of the alfresco feature-set.

The new WCM services that started to appear in version 3.3 have been strengthened in 3.4 and are all built on the core DM (the 'workspace://SpacesStore' that we know and love, often called the 'ADM'). What's interesting about the new WCM framework is that it mainly uses features that have already existed for quite a while. In some ways the approach is similar to the Ixxus Ofwat WCM implementation which is also built on the ADM.

Whilst the AVM technology provides purely editorial back-end services, the new approach is simpler, easier to understand, and extends further across the WCM 'stack' to provide a better UI experience (thanks to existing Share UI features). This time Alfresco helps build the website for us, whilst previously there was no assistance for web-site construction whatsoever.

I think it's important to emphasise that Alfresco provides a 'toolkit' of services for developers to build a WCM project; it's not really a product in itself. This means you can take whatever approach to WCM you want, and the services will probably be there for you to achieve it. But don't let the 'toolkit' expression alarm you, because the Alfresco WCM 'Quick Start' extension can be downloaded and installed, providing a classic best-practice example of how to go about your WCM project. This provides such a well thought out example, including blogs, news, user-generated-content from blog comments, feedback from contact forms etc, that I'd recommend your first project to simply use the quick-start example and make changes from there.

We have already started our first WCM project on 3.4, and will be publishing a more detailed overview shortly.

The WCM on ADM Approach - Just the Facts:

Management Application Environment:A regular Share site is used to host and manage the content. It'll be great to use the Share environment rather than the old-style JSF, it's friendlier and easier to extend and customise. At its heart there's are two folders: one representing all the content called 'Editorial', some of which may be in a yet-to-published state; and another called 'Live' which is structurally a mirror image of the editorial folder tree but containing all the deployed 'approved' content.

Content Modelling:The quick-start shows how a custom content model is used to model the web content. Although not as flexible as modelling complex content using XML structures, such as the XForms environment found in the older AVM offering, it's well understood and simple to use.

Content Entry:The forms service is used to provide content entry as you navigate through your content folders in your Share site. The same Forms service is used to provide in-context editing so you can browse your site in a staging preview, make editorial changes, and even create new content objects based on a selected type. Recent changes introduced in 3.3 to the forms service means that it can be used to edit file-content as well as just the meta-data - an essential requirement for this WCM approach.

The form controls have been improved too, see http://wiki.alfresco.com/wiki/Forms#What.27s_New for more info.

User Generated Content:Version 3.4 WCM sees Alfresco move to a more coupled WCM architecture (instead of a decoupled architecture seen in the older AVM WCM approach). This brings some advantages, including the obvious availability of a content store for user generated content (UGC) for things such as blog comments, and feedback forms. Interesting, the nifty new Data-lists feature introduced in version 3.3 proves an ideal pattern for this kind of storage, and is used to good effect by the Quick Start.

Workflow:Traditional JBPM workflows are used with a suitable example provided by the Quick Start installation. Combined with the eagerly awaited new UI improvements to workflow task management in 3.4, you'll love this. The workflows can be triggered for content review and approval and subsequent deployment from the editorial areas to a 'live' area, or they can be triggered by website users creating content in the repository (such as blog comments made by the public that may require approval). See http://wiki.alfresco.com/wiki/Custom_Share_Workflow_UI.

In Context Editing:This is a marked departure from previous efforts, since now you can browse the website for the content you want to change, select the content from the screen that you'd like to edit, and go ahead there and then. No more seeing it on your staging website and then having to take another process of trying to find it in your folder structure before you can make a change. This uses a partner Web Application called AWE (Alfresco Web Editor) and the WEF (the Web Editor Framework javascript library).

The Quick Start Website:As mentioned earlier, the scaffolding of a working MVC website has already been made for you. Let me say that again: *You have a working Alfresco WCM website out of the box!* And there'll be more examples in forthcoming releases, including a finance-oriented site, a media/entertainment site, and a government-oriented site.

The chosen framework for building these quick-start websites is Spring Surf, perhaps unsurprisingly. Originally from the loins of the Alfresco team, Surf is intended to be a rapid MVC development framework based heavily on the Alfresco WebScripts pattern using CMIS calls to recover data from the Alfresco repository.

If you fancy using any other kind of web presentation technology such as PHP, then you should find no hindrance using Alfresco WCM services.

Deployment:The recently introduced Transfer service has been a missing part of the puzzle for some time for people using the DM for WCM content. You ideally would always want a separation between editorial 'in progress' content and 'approved' live content. To this end, the transfer service is used to copy the content between the two key folders representing the whole website. In this example, the two folders happen to be on the same box, but the target could well be on a remote box. I think I'd tend to keep the live local target as a 'staging' environment and from there a third target to a remote server the other side of the firewall.

So, that’s WCM. What else is new?

Share - Improved Header:A better designed to the header bar and access to the features contained within, it's more extensible too. See http://wiki.alfresco.com/wiki/Share_Header

Share - User Status:A new 'what-I'm-doing' status next to the profile is a pretty cool little touch.

Share - Advanced Search:Yipee! Finally an advanced search UI. The term 'advanced' is traditional but really means 'fielded search' where you can easily specify particular properties to search within by entering data into the appropriate blank field on the page. The alternative is to use the new FTS feature (which is great) used in the existing simple search box, but would probably require more training for most users. This is customisable to show the fields you're interested in through XML configuration files. See http://wiki.alfresco.com/wiki/Share_Advanced_Search

New Portlets:DocLib portlets expose the repository 'Share-Style' for access by portals such as Liferay, Quickr and Confluence. See http://wiki.alfresco.com/wiki/Doclib_Portlet

Replication Service:Now this is very interesting (perhaps I need to get out more), but this service replicates files and folders within a DM repo or across different Alfresco DM repos (by schedule or on-demand). This is another layer built on top of the Transfer Service API which operates at a lower level. The AVM portion of the alfresco product has had replication for ages, so this is a much needed feature that we've previously had to build ourselves. See http://wiki.alfresco.com/wiki/Replication_Service for more info. Incidentally this what the WCM Quick Start uses for deploying 'Editorial' content to 'Live'.

Rating Service:I haven't looked into this yet. Nothing earth shattering but seems useful. http://wiki.alfresco.com/wiki/Rating_Service