Введение в ECMS Alfresco

Система управления контентом уровня предприятия (англ. Enterprise Content Management System, ECM-система) — это стратегическая инфраструктура и техническая архитектура для поддержки единого жизненного цикла неструктурированной информации (контента) различных типов и форматов.

Alfresco — ECM-система для Microsoft Windows и Unix-подобных ОС, которая может использоваться для управления документами, записями, веб-публикацией, групповой работой и бизнес-процессами в организации.

Alfresco является продуктом с открытым исходным кодом, поставляется либо в виде бесплатной версии (Alfresco Community Edition), либо платной Enterprise-версии (Alfesco One). Большинство функций доступны независимо от версии и без необходимости доработки, однако система поддерживает возможность создания расширений, а также позволяет внесение изменений в исходный код в зависимости от нужд потребителя. Так же существует SaaS решение Alfresco in the Cloud.

Технологии

Система Alfresco разработана на стеке Java-технологий с использованием фреймворка Spring Framework для создания модульной архитектуры.

Основой системы Alfresco является репозиторий (content repository), поддерживаемый сервером (content application server), который обеспечивает хранение контента, метаданных, ассоциаций, индексов и т.д. Сервер предоставляет интерфейсы для множества языков и протоколов, позволяющие разработчикам создавать свои решения на базе системы Alfresco.

Два базовых веб-приложения Alfresco – это

  • Alfresco Platform (alfresco.war) – репозиторий Alfresco, интегрированный с Content Application Server. До версии 5.0 данное приложение также включало Alfresco Explorer, ныне устаревшй пользовательский интерфейс на базе технологии JavaServer Faces. С версии 5.0 в данное приложение включен только интерфейс для администрирования конфигурации системы.
  • Alfresco Share (share.war) – улучшенный пользовательский интерфейс для доступа к Alfresco. Реализует концепцию «сайтов», как мест, где группы людей совместно работают над документами.

Application node – сервер приложений, на котором разворачиваются веб-приложения системы Alfresco. Веб-приложения поддерживается контейнером сервлетов (например, Apache Tomcat) и используют средства виртуальной машины Java (JVM) для доступа к различным ресурсам системы (файловой системе, базе данных, сетевому вводу-выводу).

Content Application Server включает в себя репозиторий содержимого и сервисы для доступа к нему. Он определяется стандартами CMIS (Content Management Interoperability Services) и JCR (Java Content Repository / JSR-170/286), предоставляющими спецификации для определения и хранения контента, выдачи контента, версионирования и разрешений. Сервисы Content Application Server предоставляют различные интерфейсы для доступа к нему: Java Foundation API (для доступа компонентов, входящих в состав alfresco.war), HTTP, SOAP, CIFS, FTP, WebDAV, IMAP, Microsoft SharePoint. Использует реляционную базу данных для хранения метаданных (т.е. свойств контента) и файловую систему для хранения непосредственно контента.

Alfresco Explorer является клиентом Alfresco Content Application Server и поставляется вместе с ним в составе веб-приложения alfresco.war. Alfresco Explorer создан с использованием технологии JavaServer Faces (JSF), предоставляет наиболее полный, но не всегда удобный для пользователей, доступ к серверу. Используется прежде всего для выполнения административных задач. Начиная с версии 5.0 клиент Alfresco Explorer более недоступен.

Alfresco Share является более новым клиентом Alfresco. Создан с использованием технологии Spring Surf (разработанный Alfresco веб-ориентированный фреймворк, включает в себя технологию Alfresco Web Scripts для создания REST-интерфейсов). Основная задача данного клиента – предоставить пользователям возможности кооперации с использованием Alfresco. Вводит понятие сайта, как площадки для работы команд над контентом. Хотя наиболее простым решением является развертывание share.war в том же контейнере приложений, что и alfresco.war, это не является необходимым условием, поскольку Share использует REST-интерфейс, предоставляемый Alfresco Content Application Server.

Пользовательский интерфейс веб-приложения Share активно использует клиентский JavaScript и построен с использованием библиотеки YUI (Yahoo! UI Library). Клиентские скрипты Share никогда не обращаются напрямую к Alfresco Content Application Server, а при необходимости такого обращения используют предоставляемый Share proxy веб-скрипт (например, это необходимо для корректной работы аутентификации, а также для предотвращения cross-site запросов в случае с раздельным развертыванием Share и сервера Alfresco).

Для упрощения разработки дополнений в Alfresco существует механизм так называемых Веб-Скриптов (web scripts), позволяющий легко расширять предоставляемый системой программный интерфейс. Веб скрипты следуют концепции Model-View-Controller (MVC). Контроллер веб-скрипта может быть реализован на JavaScript (исполняемом на стороне сервера), либо на Java (так называемые Java-backed Web Script). Представление обычно реализуется с использованием FreeMarker Template. Веб скрипты приложения alfresco.war имеют доступ к сервисам репозитория через Alfresco Java Foundation API, либо через JavaScript API. Веб скрипты приложения share.war обращаются к сервисам репозитория через Remote API, который в свою очередь является набором веб скриптов в составе приложения alfresco.war.

Хотя изменения в возможности системы Alfresco могут быть внесены различными способами (например, редактирование или добавление файлов в уже распакованных сервером веб-архивах), наиболее корректным является создание модуля в виде AMP-файла (Alfresco Module Package) и его последующая установка с помощью Module Management Tool (alfresco-mmt.jar, поставляется вместе с Alfresco, является частью проекта Repository).

Для разработки расширений используется предоставляемый Alfresco SDK. В настоящее время (после выхода Alfresco 4.2) предпочтительным является использование Maven Alfresco SDK, использующего Apache Maven для сборки проекта и управления зависимостями (вместо ant + ivy). Maven Alfresco SDK предоставляет шаблонные проекты для создания AMP-файлов расширений.