Book Image

Alfresco Developer Guide

Book Image

Alfresco Developer Guide

Overview of this book

Table of Contents (17 chapters)
Alfresco Developer Guide
Credits
About the Author
About the Reviewers
Preface
Index

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, jBPM, standalone applications that embed the Alfresco repository.

As the name suggests, this is the core Alfresco API. Most of the work with this API involves writing Java in Plain Old Java Objects (POJOs) that are "wired in" to Alfresco via Spring- or JSF-managed beans.

Web Services API

Web and non-web applications that need remote access to the repository.

Alfresco ships client-side classes for Java and PHP, but any language that can use SOAP-based web services can use this API to do almost everything the Foundation API can do.

JCR API

Web and non-web applications. Can be used remotely via the JCR-RMI bridge.

JCR is a standard (JSR-170) Java API for interacting with content repositories. The JCR API does not have the full functionality of the Foundation API.

FreeMarker API

Custom views, mail templates, web script view logic, WCM presentation transformations.

FreeMarker is an open source templating engine.

AVMRemote API

WCM presentation transformations, web applications.

This API is specific to working with content stored in Alfresco WCM web projects.

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 Model-View-Controller (MVC) pattern that relies on the JavaScript, FreeMarker, and Foundation APIs.

Flex API

Web scripts, Flash components.

Built on the web script framework, the Flex API is really a set of hooks that make it easier to use Adobe's Flex tools to build Rich Internet Applications (RIAs) on top of Alfresco.

Facebook API

Web scripts, social networking applications.

Similar to the Flex API, the Facebook API is a set of web scripts that make it easier for Alfresco-based web scripts to make calls to the Facebook API.

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.

What about Adobe Flex?

Alfresco has a vision for a web client with a much richer interface. At one point, the plan was to build the web client entirely with Adobe Flex. Alfresco has since backed off that approach. It is more likely that Flash components will be added where it makes sense.

From a skills standpoint, it is still uncertain how deep Flex skills will need to be to customize Alfresco as it evolves into a richer interface. Hopefully, Alfresco will abstract the configuration and customization of the Flex-based components such that clients can get it without Flex skills. If that doesn't happen, it should be fairly easy for anyone with knowledge of JavaScript and XML to pick up Flex skills.