Dusting off your toolbox
Looking across both the basic and advanced customizations provides some idea about the extensibility of the platform. A commonly asked question at this point in the architecture discussion is, Does Alfresco have an API? Actually, it has several. Let's look at what APIs are available and where they are used. This should also give you some idea as to the tools and skills you'll need to have in your toolbox as you embark on your own projects.
The following table shows the APIs available and where they are used:
Alfresco API |
Where Used |
Comments |
Foundation API |
Rule actions, behaviors, Java-based web scripts, web client customizations, Activiti, standalone applications that embed the Alfresco repository. |
As the name suggests, this is the core Alfresco API. |
Alfresco One API |
Web and non-web applications that need remote access to the repository. |
The Alfresco One API was introduced with Alfresco 4.x, and is also present in the public cloud version of Alfresco. It provides the main remote API, and is the recommended API for developing remote client applications. |
CMIS API |
Web and non-web applications that need remote access to the repository. |
CMIS provides a standardized set of common services for working with content repositories. Alfresco provides an implementation of CMIS Web service and RESTful bindings. |
FreeMarker API |
Custom views, mail templates, web script view logic. |
FreeMarker is an open source templating engine. |
Web script framework |
Web and non-web applications that need to use REST to interact with the repository. |
More of a framework than an API, web scripts implement a MVC pattern that relies on the JavaScript, FreeMarker, and Foundation APIs. |
As the list of APIs shows, knowing Java will be the key to just about any successful customization effort. FreeMarker and JavaScript are important, but are easily picked up using Alfresco's code and online resources as references.