I started with Alfresco and its amazing software suite. For people, who don’t know about content repositories, in short its hierarchical, versionable storage (read more). Alfresco is one step ahead of other content repository implementations and it is full content management suite. This means, you have workflow, content repository and a portal which allows you to do lot of standard things e.g. communicating with external world via API, portal, security/authentication etc. From my perspective Alfresco is really great product considering the amount of features it provides and the quality of them.
I am working on a project which involves some bit of alfresco customization to meet the customer needs. This involves configuring alfresco for Windows SSO, allowing users to map their home space in alfresco as network share, knitting a workflow tightly integrated with their business process and writing some dynamic content generation code for reporting, user interaction and for auditing purpose. We could do most of the things straight away and we are quite happy with kind of response alfresco was giving. Everything is clean and configurable. Basically alfresco is built using spring framework; so you can configure custom beans or extend existing beans very easily via some xml files. There are tons of different services and pre-configured beans which might be little overwhelming for the beginners but, as you started to get familiar it doesn’t feel so bad.
We were at a point where we wanted to write some server side logic to create a dynamic (web 2.0) UI which has lot of interaction based on data queries with content repository. So we needed easy approach to query repository, minimal xml configuration, ability to change / update logic easily, faster development cycle to start with. Alfresco provides lot of options to communicate to repository -
- Java API (most raw access to the repository, repository instance is singleton so that will be injected as dependency via spring configuration)
- Web Service - Very standard SOAP and XML RPC based communication
- RMI - Java RMI which is another standard method looks similar to Web Services
I was amazed and surprised by the simplicity but there are few things which I needed to finalize before I decided to make a choice -
- Ease of deployment - Most of the scripts are convention based (naming conventions, location conventions etc) and very standard. Server can identify updated scripts and no server restart required (in development environment thats a needed feature)
- Alfresco Developer series - For basic hands-on tutorials for Alfresco customization and understanding (found here)
Have a great time functional programming! :)