Alfresco provides many programmatic ways to access the content management capabilities of the system to support applications that need access to content services. Because Alfresco supports a number of standards-based protocols; applications and application development environments can use existing tools to access, update, and search Alfresco content.
Although Alfresco is built using the Java programming language, the system can be used by applications written in most popular programming languages. You can use the tools that are easiest to get your application developed as quickly as possible. The Alfresco repository takes care of handling metadata, workflow, lifecycles, location, and search access. The tools you use depend on the level of control your application needs over metadata, context, and business processes, as well as the tools your application or your development environment provide for handling content.
The following guidelines list the programming interfaces provided by Alfresco, and the situations in which they could be used.
CMISCMIS (Content Management Interoperability Services) is an OASIS standard designed for the ECM industry. It enables access to any content management repository that implements the CMIS standard, such as Microsoft SharePoint, IBM FileNet, EMC Documentum, and Alfresco. Consider using CMIS if your application needs programmatic access to the content repository, and especially if you intend to port your application to other content management systems.
Web scriptsExisting web scripts in Alfresco provide a great deal of functionality. You can also create your own web scripts to perform an operation in Alfresco that is not covered by an existing web script, or to combine several operations to minimize network communication. This can increase the performance of your application and push the logic down to the Alfresco repository, where it can be reused.
File-based accessIf metadata is not important to your application or processing of content and metadata can be handled with rules and actions, then file-based access can be an easier route to integration with Alfresco. You can use CIFS, WebDAV, NFS, or FTP file to access Alfresco content. File-based access may already be supported by your application through standard file interfaces. File-based applications that create content can store that content in Alfresco where it will be available for other applications to access.
Applications that access files through Open dialogs or through programmatic file interfaces can navigate Alfresco folder hierarchies and content seamlessly. Although the content appears to your application to be a file, it is not directly accessing the content. It uses Alfresco APIs, so all the controls and services are in place. File access is an emulation of a file system access and storage is no different than through APIs directly.
By storing content using file system emulation, logic for processing content (for example, archiving, applying workflows and retention policies, and extracting metadata) can be performed with rules. Applied at the folder or space level, these rules are initiated when the file is stored. This means the application integrating with Alfresco does not need to be modified to use Alfresco. All the business logic is stored in the Alfresco repository.
OpenSearch and feedsSome applications, websites, and portals may use standard web-based technology to access external information using feeds, such as RSS or Atom subscription protocols, or queries using OpenSearch. Alfresco provides out-of-the-box RSS feeds to observe the contents of an individual folder or space, as well as activities related to a user or Share site. The Alfresco system also implements OpenSearch, which is a standard query protocol supported by many web sites, such as Yahoo!, Google, and Amazon.
If an application is designed to use either feeds or OpenSearch, then it can access Alfresco using the feed or search address. The results return descriptive information about the content returned and a URL pointing directly to the content. If more specialized information is required or you would rather point to the properties page in Share or Explorer, you can create new RSS feeds or OpenSearch APIs as fairly simple web scripts. You can use the RSS feed and OpenSearch templates in the Alfresco Data Dictionary as a reference for how to build your own.