Pull to refresh

Система управления документами Alfresco

Java *
Sandbox
logoПоиск по Хабру не нашел подробных статей по системе Alfresco. В данной статье попробую убить сразу двух зайцев: рассказать что представляет из себя система Alfresco и как мы используем ее в нашей работе.

Как хранятся документы в небольшой организации? Самое простое — на локальном диске. А если необходима совместная работа — пересылаются по почте, либо, самый популярный вариант, на сетевом диске. Еще прекрасный вариант — Google Docs, но не уверен что он широко используется в Российской практике.

Не знаю, какого размера должна достигнуть организация, чтобы в ней задумались о внедрении системы электронного документооборота, но думаю примерно это цифра в районе 50-100 сотрудников, работающих с документами.

При мысли о системе электронного документооборота первыми на ум приходят дорогие решения от известных вендоров, таких как Microsoft, EMC, 1С и т.д. Но есть и альтернатива закрытым решениям — система управления документами с открытым исходным кодом Alfresco. Или, если по-английски, то Open Source Enterprise Content Management System (ECM, CMS).

Конкуренты Alfresco — это закрытое ПО, такое как EMC Documentum, Open Text, Sharepoint. Сами разработчики Alfresco пишут о своих конкурентах, как о наследии 90-х годов, которое:
  • слишком дорого стоит
  • слишком сложно использовать, разворачивать, масштабировать
  • слишком сложно модифицировать под свои нужды
  • слишком “проприетарно”

Попробую рассказать о системе, а вы уже решайте правы ли были разработчики.

Что же такое Alfresco


Изначально Alfresco задумывался как альтернатива Microsoft Sharepoint с открытым исходным кодом. Но в ходе развития ушел в сторону от этого, и предоставляет ряд уникальных функций, недоступных другим подобным системам. Достаточно сказать, что Alfresco стабильно работает по протоколу Sharepoint через HTTPS.

Именно в открытости системы я вижу ее основное преимущество: нет “lock-in” на какого то производителя, сама система бесплатна. Еще одним преимуществом Alfresco я вижу то, что она построена на современных Java технологиях, таких как Spring, JSF, Hibernate, Lucene; новые версии будут использовать Spring Surf. А я знаю, что большой серьезный бизнес любит системы на Java.

Работа пользователей с системой осуществляется через браузер. Возможно также работать с файлами через проводник Windows, как с обычной сетевой папкой (протокол CIFS) или через FTP. Мы работаем с английской версией, есть русская локализация.

image
Скриншот стандартной страницы Alfresco Document Management

Alfresco предоставляет возможность создавать, хранить, модифицировать документы и многое другое. Есть возможность создать документ прямо в системе, как пустой так и на основе шаблонов своей компании. Система позволяет искать по содержимому документов, поддерживает версионность документов. Хранится вся история изменений, всегда можно посмотреть кто что добавлял или удалял.

Есть система управления документооборотом, возможность изменять схему работы прямо на ходу. Хорошая статья по теме: “Электронный документооборот или чего не стоит делать”.

Подходит ли для ваших задач? Расширяемость


Alfresco полностью готова к использованию, можно скачать бесплатную Community Edition, установить, и уже сегодня начать пользоваться, все очень просто. Существует и платная Enterprise Edition, основное отличие — наличие технической поддержки.

Alfresco ставится как на Windows, так и на *nix совместимую систему, необходим Java Runtime Environment. Поставка включает встроенный OpenOffice, для конвертации между различными типами документов, извлечения текстовых данных для индексации и возможности полнотекстового поиска. Также в комплекте идёт Tomcat, который при желании можно заменить на любой подходящий веб-контейнер.

Alfresco ведет свою собственную базу пользователей. Однако возможно авто-создание пользователей при первом входе или синхронизация с внешним источником: LDAP, Microsoft Active Directory, домен компании и т.д.

Поддерживаются принятые в индустрии ECM стандарты. Так, система хранения данных Alfresco плавно сдвигается от собственной реализации стандарта JSR-170 к доступу к данным через CMIS, снимая последнее ограничение — на использование поставляемого с Alfresco хранилища.

Система работает с документами любых форматов: Microsoft Office, Open Office, pdf и т.д. Если необходимого формата нет в списке поддерживаемых — можно добавить свой модуль конвертации в один из поддерживаемых, и будут построены цепочки конвертации во все необходимые на выходе форматы.

Преимущество Alfresco как открытой системы — полный доступ к исходным кодам, можно поменять любые части системы, при наличии хороших специалистов разумеется. Лицензия позволяет.

Система позволяет расширять свою функциональность с помощью модулей расширений. Модули могут содержать всё что угодно: и бизнес-логику, и стили страниц, и новые страницы, и расширения модели данных, и новые сервисы. Модули расширений могут работать с Alfresco через ряд протоколов, лучше всего поддерживается протокол REST. Пользовательский интерфейс предлагается реализовывать с помощью Spring Surf, на остальное уже нет ограничений, чаще всего используется Java, реже серверный JavaScript, Groovy, JRuby. Главное — чтобы была поддержка CMIS.

Можно полностью отказаться от стандартного веб-интерфейса и реализовать свой. Тогда Alfresco будет использоваться только в качестве хранилища.

Для интеграции с другим ПО, поддерживаются различные типы аутентификации, есть возможность соединять их в цепочки. Например пользователь может попасть в систему с помощью Single sign-on. Если пользователь пришел не авторизованный, то Alfresco попытается его авторизовать (спросит имя пользователя и пароль, или сертификат, в зависимости от того, как настроена система).

В Alfresco очень гибкая модель данных, много возможностей для её расширения, но это тема для отдельной статьи. Если вкратце, то стоит упомянуть что модель поддерживает множественное наследование (с помощью аспектов), причём динамическое, то есть в любой момент можно любому объекту добавить какой-либо аспект, и объект приобретает все свойства данного аспекта.

Доступ к данным и функциональности можно гибко настраивать. Система авторизации оперирует такими понятиями, как: объект данных, разрешение, пользователь, группа, роль. Роли назначаются пользователям и группам во время работы приложения, в том числе можно присваивать роли каскадно, на целое поддерево данных.

Существует большое количество готовых расширений к Alfresco.

Количество пользователей. Масштабируемость


Ввиду открытости и бесплатности Alfresco вы не ограничены количеством клиентских лицензий. Скорее вы ограничены производительностью своих серверов и базы данных, возможностью масштабирования системы.

Исходя из нашего опыта, сервера Intel Core 2 2,4 GHz с 8Gb памяти хватит для обслуживания до тысячи зарегистрированных активных пользователей. При увеличении количества пользователей нужно анализировать какие части системы наиболее нагружены. Система надёжно работает в кластере, обеспечивая целостность и актуальность данных, но нужна грамотная настройка, подробнее будет написано ниже.

Существуют примеры внедрения Alfresco в крупной некоммерческой организации в России с базой в 40 000 пользователей и более. Примеры зарубежных внедрений включают также варианты использования Alfresco с сотнями тысяч активных пользователей. Или с гораздо меньшим количеством пользователей, но при этом много-терабайтным хранилищем.

Наш опыт внедрения Alfresco


Система используется в компании — крупнейшем в Европе производителе ПО. Прикидочное количество внутренних пользователей: 30 тысяч. Ожидаемое количество внешних пользователей: свыше 3-х миллионов.

Alfresco была выбрана, как единственный вариант ECM системы на рынке, с хорошей enterprise поддержкой, реализацией протокола Sharepoint, наличием примеров внедрения с 1000+ пользователей. У Microsoft Sharepoint не было, насколько мне известно, хотя, возможно, она не подошла по другим критериям.
В настоящий момент в репозитории хранится ~2000 документов по 5-10 Мб.

Основные сделанные доработки:
  • Изменение облика системы. Добавлены шапки, логотипы компании там, где было необходимо.
  • Alfresco модифицирована для работы с сервером приложений, базой данных и системой аутентификации, принятых в качестве стандарта внутри компании.
  • Сделана привязка Alfresco к существующим на портале компании метаданным, таким как реестры стран, категории клиентов и т.п.
  • Модуль для создания так называемых “проектов” по шаблонам, создания документов по шаблонам.
  • Система разграничения доступа. По словам представителей Alfresco, это единственное внедрение с таким глубоким использованием системы разграничения доступа Alfresco.
  • Публикация документов, проходящих по этапам документооборота, на другие ресурсы компании. Обратный импорт документов в систему.
  • Существенно изменен стандартный workflow в соответствии со стандартами компании.
  • Внедрена возможность настройки документооборота на ходу, с помощью интерфейса пользователя, включая рассылку уведомлений ответственным за выполнение работы на каждом этапе.
  • Сопряжение со сторонней библиотекой конвертации и извлечения данных из документов.


Система уже вышла “на продакшн”. Есть ряд проблем с которыми пришлось столкнуться, некоторые пока что не решены.

Например, при запуске на локальной машине разработчика система работает достаточно шустро. Однако при запуске у клиента в кластере из 5 серверов приложений, система иногда начинает необоснованно тормозить. Проблему пока не смогли решить, хотя подключали к ней даже самих разработчиков Alfresco.

К сожалению, архитектура нашей системы построена так, что индексы поисковой системы (Lucene) хранятся на сетевом диске. А это серьезно противоречит рекомендациям разработчиков, часто сталкиваемся с тем что индексы рушатся.

Еще одна проблема с OpenOffice при конвертации и извлечении данных из документов. Даже последняя версия OpenOffice в серверном режиме одновременно может конвертировать только один файл. Попытка одновременной конвертации нескольких файлов приводит к непредсказуемому результату. Также OpenOffice имеет неприятное свойство отъедать много памяти с течением времени и переставать отвечать на запросы. Могу порекомендовать несколько способов:
  • использовать JODConverter для запуска и автоматического перезапуска сразу нескольких серверов OpenOffice;
  • использование других библиотек для конвертации и извлечения данных (например Aspose, однако она платная).


Разработчики рекомендуют использовать MySQL/InnoDB в качестве хранилища метаданных, однако можно использовать и другие базы данных, для которых существуют Hibernate/iBatis диалекты.

Есть также ряд рекомендаций, которые позволяют увеличить производительность и повысить надёжность. Среди самых важных:
  • как уже упоминал, не использовать сетевые диски для хранения индексов Lucene;
  • использование файловой системы с современными средствами борьбы с фрагментацией (EXT4).


В настоящий момент наш проект еще в стадии активной разработки. Несмотря на некоторые управленческие и технические ошибки при реализации именно нашего проекта, мне нравится сама система Alfresco, с ней приятно работать, верю в перспективность открытых систем для бизнеса.

Заключение


Alfresco — хорошая база для построения документооборота компании. Думаю в ближайшее время Alfresco может стать заменой многих отживающих своё систем. Конечно остается несколько нерешенных проблем, и весь мир Alfresco вряд ли захватит, но, думаю, существенную часть рынка корпоративного хранения документов и документооборота — вполне сможет.

Есть возможность использовать Alfresco в облаке. Например в Amazon AWS уже есть готовые instances с предустановленной Alfresco.

Гуляет слух, что Oracle положил взгляд на покупку Alfresco. Чем это грозит или светит для Alfresco пока неизвестно, время покажет.

Было бы очень интересно увидеть в комментариях ваши истории внедрения Alfresco.
Tags:
Hubs:
Total votes 76: ↑66 and ↓10 +56
Views 138K
Comments 59
Comments Comments 59