СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Обзор Open Source ECM-системы Alfresco
Не секрет, что в любой современной организации даже небольшого размера циркулулирует достаточно большое количество разного рода документов. Год-два, и исполнители без должной организации уже не смогут справляться с их обработкой и будут буквально завалены различного рода инструкциями, отчетами, предписаниями и так далее. Применение свободной ECM-системы Alfresco позволит решить большую часть задач по обработке документации на всех этапах. И это еще не все ее возможности.
Назначение ECM Alfresco
Информационные ресурсы состоят из файлов, разрабатываемых самими пользователями и поступающих извне, имеющих свое назначение, формат, сроки исполнения. Все данные изначально слабо структурированы, и если не принять надлежащих мер по их систематизации, любая попытка заниматься позитивной деятельностью будет сведена на нет необходимостью поиска нужных данных, лица, ответственного за исполнение, и так далее. Попытки упорядочить весь цикл «жизни» документа на всех этапах от создания, согласования, регистрации, рассмотрения, тестирования и исполнения, публикации и архивирования ведется уже давно. В итоге разработано большое количество стандартов, и сегодня доступен ряд готовых решений, задача которых ускорить прохождение документов на всем жизненном цикле, а также улучшить взаимодействие сотрудников, принимающих участие в их создании.
Система, удовлетворяющая современным требованиям, должна как минимум иметь средства контроля версий и взаимосвязей электронных документов, блокировку на время редактирования, позволять работать с метаданными, обеспечивать требуемую безопасность и разграничение доступа, поиск, упрощенную публикацию, преобразование и импорт с бумажных носителей, хранение и архивирование. В международной классификации такие системы относят к классу ECM-систем (Enterprise Content Management systems, системы управления информационными ресурсами предприятия). В Российской терминологии чаще используется термин «системы электронного документооборота» (СЭД). Учитывая большое количество функций, ECM-системы сложны по внутреннему устройству и достаточно дороги. Хотя в использовании они довольно просты.
Самыми известными представителями данного класса являются коммерческие Microsoft Office SharePoint Server 2007 (MOSS) [2] и DIRECTUM [3]. Есть в списке решений и имеющие свободную лицензию, например Alfresco [4], о котором пойдет речь далее в статье, и eZ Publish [5].
Alfresco относительно молодая ECM-система, проект возник в 2005 году. Сообщается, что команда, участвующая в создании Alfresco, имеет более чем 15-летний опыт разработки и эксплуатации подобных систем. Среди них – один из руководителей Documentum – John Newton (Джон Невтон) и Джон Повелл (John Powell), Chief Operating Officer Business Objects. Поэтому они четко представляют, слабые и сильные стороны альтернативных решений и главное, как должен выглядеть конечный результат.
Alfresco построен исключительно на открытых стандартах, в разработке используется принцип свободного ПО, доступен исходный код системы. Модульный дизайн позволяет при необходимости выбирать между нужной функциональностью и производительностью.
Разработчики выделяют пять основных функций своей системы:
- Управление документами (Document Management) – виртуальная файловая система, система поиска, CIFS-синхронизации, защиты и аудита, оповещения об изменениях, преобразования основных форматов офисных пакетов в ODF/PDF (PowerPoint во Flash), контроля версий, одноразовой аутентификации (Single Sign-On) через NTLM или LDAP, jBPM-интеграция;
- Управление веб-содержимым (Web Content Management) – полноценная CMS-система, построенная с применением Spring, Hibernate, Lucene и JSF, которую ставят в один ряд с Drupal/Joomla!. Поддерживается любое количество сайтов, автоматическая кластеризация, виртуализация, поддержка проектов, версий, слоев (изменение в файл, но основа остается постоянной, как в unionfs), развертывание копий сайта и многого другого.
- Управление записями (Records Management) – единый репозиторий для управления всеми форматами контента, поддерживающий стандарт DOD 5015.2, который используется в министерстве обороны США (у нас другой – ГОСТ ИСО 15489-1-2007/ISO 15489:2001). Реализованы автоматическое извлечение и классификация данных, архивирование в ODF/PDF, аудит и управление доступом, упрощенный экспорт, работа в кластере, быстрый поиск, создание разнообразных отчетов.
- Управление изображениями (Image Management) – единый репозиторий для управления всеми форматами документов, в том числе «оцифровка» входящей информации (бумажный носитель, факс, электронная почта и так далее). Доступны автоматический сбор метаданных и классификация, преобразование во многих форматах (TIFF, JPEG, GIF, PNG, MS Office, PDF и Flash), поиск, автоматическое уведомление.
- Хранилище данных (Content Repository) включает функции защиты, разграничения доступа, аудита, поиска, поддерживает множество стандартов (Web Services, JSR 168, JSR 170 Level 2, MyFaces, WebDAV, SQL, RSS, ODF, OpenSearch), доступ ко всем действиям через гиперссылку, доступ по протоколам CIFS, FTP, WebDAV и CMIS, комбинированный поиск по многим параметрам.
Собственно система Alfresco разработана с использованием Java-технологий, и в состав рабочей среды, кроме тех, о которых уже говорилось, входит еще ряд стандартных компонентов: Apache Tomcat, OpenOffice.org (для конвертации документов), Java SE Development Kit (JDK), SWF Tools (утилита pdf2swf необходима для предпросмотра PDF-документов в Flash) и другие.
В качестве сервера приложений вместо Apache Tomcat, который предлагается по умолчанию, может быть использован – JBoss или Weblogic.
Для работы Alfresco потребуется наличие СУБД – Apache Derby, MySQL, PostgreSQL и HSQL. Разработчики рекомендуют использовать Derby (он предлагается во время установки по умолчанию) в основном при тестировании Alfresco. В рабочей среде лучше выбрать MySQL или PostgreSQL. Об этом напоминает и соответствующая запись журнале, появляющаяся после запуска:
Alfresco is using the Apache Derby default database. Please only use this while evaluating Alfresco, it is NOT recommended for production or deployment!
|
Разработчики Alfresco предлагают два варианта системы: Alfresco Enterprise Edition и Alfresco Labs. В контексте статьи нас интересует бесплатный вариант Alfresco Labs. От коммерческой версии его отличают отсутствие поддержки со стороны разработчиков (только форум проекта), отсутствие сертификации, основу его составляет нестабильный код. Ориентирован Alfresco Labs для использования разработчиками и энтузиастами в некритических областях.
Alfresco может быть установлен в любой операционной системе, для которой существуют все указанные компоненты – Windows, Linux, Solaris и Mac OS X.
Alfresco имеет ряд наград (например InfoWorld: Best of Open Source Applications 2007), поэтому о его плюсах можно рассказывать долго. Но все особенности охватить все равно не получится, здесь как раз тот случай, что лучше один раз увидеть, чем сто раз прочитать.
Есть и минусы. Самый важный в наших условиях – плохая локализация, если точнее, то практически полное ее остутствие в некоторых элементах. По адресу [6] можно найти информацию по самостоятельному переводу интерфейса, процесс достаточно простой, единственная проблема здесь – правильный перевод довольно специфических терминов. Здесь же можно скачать готовый пакет, подготовленный Алексеем Чумаковым, последняя правка которого датирована 2006 годом и относится к версии 1.4. На момент написания этих строк актуальной была версия 3.0, в которой произведено достаточно много изменений, поэтому после его установки в интерфейсе можно найти относительно немного надписей на русском языке.
Установка Alfresco
Для работы Alfresco понадобится установленный Java SE Development Kit (JDK) 5 или 6 версии, сервер приложений, СУБД, OpenOffice.org, SWF Tools. На клиентской системе – веб-браузер с плагином для просмотра Flash. Так, на странице закачки предлагается несколько файлов, и в зависимости от наличия/отсутствия указанных приложений следует выбрать подходящий. Наиболее полная поставка включена в группу пакетов, подписанных как Alfresco-Labs-3Stable. Такой пакет доступен поставке для трех систем – Windows, Linux и Mac OS X. Причем для Windows предложено 2 варианта – полный (Full-Setup), в состав которого входит весь комплект (веб-клиенты Share и Explorer, DM, WCM, Web Studio, Records Management и SharePoint), и OOo-Setup, содержащий только базовый набор, без дополнительных модулей. В состав OOo-Setup уже входит OpenOffice.org, но все остальное, в частности необходимый для работы JDK, следует устанавливать самостоятельно.
Установка Alfresco достаточно проста, в процессе можно выбрать компоненты
Отдельно доступны пакеты с Tomcat и WAR (Web ARchive), файлы с Alfresco (по 2 версии каждого для Windows и UNIX). WAR-пакет предназначен для развертывания ECM-системы на уже работающем сервере приложений.
Кроме этого, на странице закачки можно найти различные модули для расширения возможностей Alfresco – Microsoft Office add-ins, iGoogle, интеграция с MediaWiki, Alfresco Web Service Client (удаленный доступ к репозитарию Alfresco), поддержки Microsoft SharePoint Protocol, SDK и другие. Некоторые из них уже включены в основной пакет, поэтому перед их загрузкой следует ознакомиться с описанием Alfresco-Labs-3Stable.
Далее рассмотрим установку при помощи комплектов Alfresco-Labs-3Stable, содержащих весь набор программ. Процесс для Windows и Linux внешне выглядит одинаково, и отличается лишь размещением файлов по окончании установки.
В качестве дистрибутива Linux был выбран Ubuntu 8.04 LTS, кроме этого, работоспособность Alfresco проверялась и на CentOS 5.2. Скорее всего проблем не будет и с другими дистрибутивами, по крайней мере сами разработчики никаких требований и ограничений по этому поводу не приводят.
В Windows запускаем исполняемый файл обычным образом, а в Linux так:
$ chmod +x Alfresco-Labs-3Stable-Linux-x86-Install
$ sudo Alfresco-Labs-3Stable-Linux-x86-Install
Выбираем язык установки и следуем указаниям мастера установки. В предложенном списке среди прочих языков есть и русский, но при его выборе в Windows и Linux читаемого текста не наблюдаем, поэтому скорее всего придется устанавливать на английском. Благо весь процесс не запутан и, можно сказать, стандартен. По ходу выбираем вариант установки Typical или Custom. В случае с Custom можно отобрать устанавливаемые компоненты.
Интерфейс рабочей области частично переведен
На следующем шаге мастера установки определяем, какую базу данных будем использовать – Apache Derby или MySQL. В случае выбора MySQL далее указываем данные для доступа (пароль root, узел, и название базы данных). Других СУБД – PostgreSQL и HSQL – в списке нет, их необходимо настраивать вручную. После копирования файлов установка собственно и заканчивается.
Запуск Alfresco
Для запуска в Windows выбираем в меню «Пуск» пункт «Alfresco Labs -> Start Alfresco Server» или набираем в командной строке:
> cd c:alfresco
c:alfresco> alf_start
В Linux запускаем скрипт alfresco.sh, находящийся в /opt/alfresco. При установке Alfresco-Labs-3Stable-пакетов при запуске обычно проблем нет. После успешного запуска в файле alfresco.log, который находится в корне каталога, в который установлен Alfresco, должна появиться запись:
Successfully Initialized Web Framework |
Команда netstat должна показать, что на порту 8080 (по умолчанию) открыт сокет. В других случаях, возможно, придется подправить или установить ряд переменных.
Например, если JDK устанавливалась самостоятельно, следует настроить переменную PATH (или JAVA_HOME), чтобы она показывала на каталог с JDK. В Windows это можно сделать стандартным путем («Свойства -> Дополнительно -> Переменные среды»).
Разработчики предлагают bat-скрипт SetPaths.bat, выполняющийся автоматически при запуске Alfresco, строка внутри файла по умолчанию указывает на каталог C:Alfrescojdk. При необходимости просто исправляем запись на нужную.
В Linux для установки PATH используется файл /etc/profile (или /etc/bash.bashrc или файлы в каталоге /etc/profile.d).
export PATH=$PATH:/usr/java/jdk/bin
После чего регистрируемся в системе и проверяем доступность, введя в консоли «java -version». В Ubuntu после запуска Alfresco на тестовой машине в alfresco.log появилась такая запись:
Alfresco JVM - WARNING - maximum heap size 493,063MB is less than recommended 512MB
|
Настройки параметров запуска JVM находятся в alfresco.bat (Windows) и alfresco.sh (Linux).
По умолчанию строка, устанавливающая параметры, выглядит так:
rem Set any default JVM options
set JAVA_OPTS=-Xms128m -Xmx512m -Xss96k -XX:MaxPermSize=128m -server
Где Xms – отвечает за начальный размер кучи (в мегабайтах), а Xmx – устанавливает максимальный. При необходимости изменяем их значения в зависимости от мощности системы и планируемой нагрузки.
В документе Installing and Configuring Alfresco Labs 3 Stable [7] можно найти некоторые рекомендации по установкам JAVA_OPTS. Например, для 50 постоянных пользователей с возможным пиком в 500 рекомендуется размер кучи не менее 1 Гб.
Alfresco полностью готов к работе.
Для вызова Web Client набираем в браузере http://server:8080/alfresco, панель Alfresco Share доступна по адресу – http://server:8080/share, Alfresco WebDAV – http://server:8080/alfresco/webdav и CIFS – serveraalfresco.
Везде используем для регистрации логин и пароль «admin». В названии CIFS-ссылки я не ошибся: именно serveraalfresco (с буквой А в конце), а не serveralfresco. Чтобы не было возможных коллизий с работающим сервисом, в Alfresco просто используют псевдоним.
Файлы настроек Alfresco
Правка конфигурационных файлов, в общем, необязательная задача, но только заглянув внутрь, можно настроить Alfresco в соответствии с системными настройками, отключить ненужную или включить требуемую функциональность, задать альтернативные пункты меню, локализовать интерфейс и многое другое.
Конфигурационные файлы собраны в трех подкаталогах в tomcat/shared/classes/alfresco:
- extension – настройка функциональности Alfresco;
- web-extension – настройка Alfresco Share;
- messages – предназначен для локализации интерфейса.
Большая часть файлов, имеющихся в каталогах extension и web-extension, имеют окончание sample. В том числе есть и дубликаты с подобным именем для уже рабочих файлов. Например, file-servers-custom.xml и file-servers-custom.xml.sample. По структуре часть конфигурационных файлов выполнена в XML-формате, часть (с окончанием .properties) содержат строки вида «параметр значения». Назначение большей части настроек можно узнать из сопутствующих комментариев. Единственное неудобство – большое количество самих файлов, хотя их имена позволяют быстро сориентироваться.
Окно Alfresco Share
Для активации некоторые параметры достаточно расскомментировать или включить/отключить их, установив атрибут true/false. Не забудьте сохранить резервные копии, большое количество настроек изменять не рекомендуется, лучше делать это постепенно, проверяя результат. Практически все файлы, уже находящиеся внутри каталогов, подключены и могут считываться при загрузке, для чего достаточно убрать префикс .sample. При создании новых файлов об их видимости для Alfresco необходимо позаботиться самому. Например, файл custom-repository.properties подключается в custom-repository-context.xml строкой:
<!-- Override basic repository properties -->
<property name="locations">
<list>
…
<value>classpath:alfresco/extension/custom-repository.properties</value>
</list>
</property>
В custom-repository.properties находим путь к некоторым используемым Alfresco файлам и параметры доступа к БД.
# Sample database connection properties
db.name=alfresco
db.username=alfresco
db.password=alfresco
#db.pool.initial=10
#db.pool.max=100
# External locations
ooo.exe=C:/Alfresco/OpenOffice.org/program/soffice
ooo.user=${dir.root}/oouser
img.root=C:/Alfresco/ImageMagick
swf.exe=C:/Alfresco/bin/pdf2swf
# Derby connection
db.driver=org.apache.derby.jdbc.EmbeddedDriver
db.url=jdbc:derby:C:/Alfresco/alf_data/derby_data/alfresco;create=true
# MySQL connection
#mysql#db.driver=org.gjt.mm.mysql.Driver
#mysql#db.url=jdbc:mysql://localhost:3306/alfresco
При необходимости использовать другую СУБД достаточно снять комментарии. Пароль для доступа к БД устанавливается на основании данных, взятых из скрипта db_setup.bat (Windows) или db_setup.sql (Linux), который можно найти в каталоге extrasdatabasesmysql. Чтобы установить другой пароль для доступа к БД при ее создании, следует изменить его в этих файлах или самостоятельно ввести команды, взяв их за образец. Аналогично выглядят и другие файлы, к сожалению, описания, их иерархии в документации нет.
Для локализации интерфейса следует скопировать и распаковать в каталог messages, архив, взятый по ссылке с [4]. Затем в файле extension/web-client-config.xml снимаем xml-комментарии с секции и проверяем наличие строки с русской локалью, например так:
<config evaluator="string-compare" condition="Languages">
<languages>
<language locale="ru_RU">Russian</language>
</languages>
</config>
Строки для остальных языков можно удалить или закомментировать. Можно вместо Russian написать «Русский», только для этого следует использовать редактор с поддержкой UTF-8. По окончании сохраняем результат и перезагружаем Alfresco.
Администрирование Alfresco
Теперь познакомимся с особенностями в администрировании Alfresco чуть ближе. Регистрируемся в Web Client. Интерфейс частично переведен, и в дальнейшем будут использоваться названия категорий в том виде, в котором они доступны после локализации готовыми средствами.
Основой рабочего пространства в Alfresco являются области. Корнем областей является Company Home, которая состоит из пяти подразделов: Data Dictionary, User Homes, Guest Home, Web Project и Sites. Внутри этих пунктов также могут находиться подпункты. В дальнейшем будем рассматривать работу в User Homes.
Пользователи свои данные хранят в домашней области Home space, которые располагаются в User Homes. Для быстрого перехода в свою область пользователю достаточно нажать после регистрации ссылку «Моя начальная область» (My Home). Владелец My Home имеет полные права, он может создавать новые другие области внутри My Home, добавлять и создавать материал и так далее. Все остальные пользователи получают гостевой доступ к чужому Home space. Имя пользовательского Home space по умолчанию созвучно его логину, под которым он регистрируется в системе.
Администрирование областей Alfresco выполняется через «Пульт управления»
Мастер создания нового пользователя одновременно создает и его рабочую область. Право на эту операцию имеет только «Администратор». Вызвать нужного мастера довольно просто. Нажимаем на значок «Пульт управления» (Administration Console), выбираем «Пользователи системы» (Manage System Users) и нажимаем ссылку «Создать пользователя» (Create User), расположенную вверху страницы. Мастер создания пользователей состоит из трех шагов.
На первом вводим сведения о физическом лице (имя, фамилия, адрес электронной почты, имя в Skype/Yahoo, квота). Поля, отмеченные звездочками, обязательны к заполнению.
На втором – реквизиты учетной записи (логин, пароль), опционально можно указать другое место расположения User Homes и имя для области, отличное от логина.
Просматриваем на третьем шаге введенные данные и нажимаем кнопку «Завершить» (Finish).
После создания информация о новом пользователе будет доступна в окне «Пользователи системы», увидеть ее можно, воспользовавшись поиском или нажав кнопку «Показать все» (Show All). При помощи трех кнопок в области «Действия» можно отредактировать свойства выбранного пользователя, установить новый пароль и удалить.
Мастер изменения пользователей (Edit User Wizard), запускающийся после нажатия на кнопку «Изменить», практически ничем не отличается от мастера создания, не активен только пункт изменения пароля. Мастер изменения позволяет установить для пользователя новую начальную область, при этом существующие разрешения на исходную начальную область не удаляются.
Мастер создания пользователей создает также и его рабочую область
Для удобства управления правами пользователи традиционно объединяются в группы, и Alfresco здесь не является исключением. Управление группами производится выбором одноименной ссылки в «Пульт управления».
По умолчанию здесь только две корневые группы: EMAIL_CONTRIBUTORS и ALFRESCO_ADMINISTRATORS. Все пользователи после создания автоматически включаются в группу EVERYONE с гостевыми привилегиями, но в окне «Управление группами» эта группа не показывается.
Чтобы создать новую группу, нажимаем «Создать группу» и вводим ее название, после чего группа появится в списке корневых.
Теперь добавляем пользователей в группу. Для этого нажимаем на значок «Добавить пользователя» и, воспользовавшись окном выбора, заносим пользователей в группу, по окончании нажимаем на кнопку ОК, расположенную справа.
В Alfresco пользователи могут входить в несколько групп, здесь никаких ограничений нет. Группа может состоять из подгрупп, которые создаются аналогично группе нажатием на значок «Создать подгруппу». При выборе корневой группы в окне «Управление группами» в окне будут показаны все его подгруппы и пользователи.
Для удаления группы или пользователя с группы достаточно нажать кнопку «Удалить», расположенную возле соответствующего значка. Удаление корневой группы повлечет и удаление всех связанных подгрупп, пользователи, оставшиеся без групп, все равно будут собраны в EVERYONE.
Настройки User Homes
Следующий пункт «Пульта управления» называется «Управление категориями». Категории являются своего рода виртуальными каталогами или тегами, позволяющими объединить однородную информацию, и используются для классификации контента. При создании объекта пользователь может указать категории, к которым его нужно причислить.
В «Управлении категориями» уже есть несколько готовых категорий, которые при необходимости можно отредактировать, указав имя и свойства, удалить или дополнить новыми. Категории также могут иметь несколько уровней вложенности. Но создать, например, корневую категорию Linux и подкатегорию с таким же именем в другой корневой категории нельзя.
Добавление материала в области пользователя
Следующие пункты «Пульта управления» позволяют экспортировать и импортировать метаданные и материалы из одной или всех областей, просмотреть системную информацию и структуру репозитария (Node Browser). Экспортированные материалы помещаются в ACP-пакет (Alfresco Content Package), который затем можно развернуть на другом сервере Alfresco.
Пользовательская область Home space внешне отличается отсутствием инструментов администрирования, вместо которых доступна настройка параметров (аватар, язык и так далее). Доступ к области указывается в окне, вызываемом выбором ссылки «Другие действия -> Доступ к области». Как вариант можно выбрать ссылку «Показать сведения», в этом случае откроется окно, содержащее все возможные действия: импорт, экспорт, создание закладки, завладение областью, обсуждение, правила для материалов и так далее. Здесь же даются ссылки для доступа к области по различным протоколам.
Предпросмотр документа в DOC-формате
Импортировать любой материал в область можно, выбрав ссылку «Добавить материал» и указав на файл. После этого материал можно редактировать, начать обсуждение и так далее. При выборе «Создать материал» сначала вводим его название и выбираем формат (HTML, XML, Plain Text), затем откроется окно простого редактора текста.
Подводим итог
Возможностей в стандартной поставке Alfresco настолько много, что описать их не хватит и книги среднего размера. Но не следует забывать и о дополнительных модулях, которые расширяют возможности этой системы и довольно просто подключаются (в tomcatsharedclassesalfrescoextension). В целом Alfresco Labs показал себя стабильным приложением, вполне подходящим для использования.
- Ежегодный отчет по ECM-системам – http://www.cmswatch.com/ECM/Report.
- Страница Microsoft Office SharePoint Server – http://office.microsoft.com/sharepointserver.
- Сайт проекта DIRECTUM – http://www.directum.ru.
- Сайт проекта Alfresco – http://alfresco.com.
- Сайт проекта eZ Publish – http://ez.no.
- Информация о локализации системы и языковые пакеты – http://wiki.alfresco.com/wiki/Language_Packs, http://forge.alfresco.com/projects/alf-russian.
- Документ Installing and Configuring Alfresco Labs 3 Final – http://wiki.alfresco.com/w/images/a/a1/Install_Configure_Alfresco_Lab3Final.pdf.