Система электронного документооборота Alfresco на базе FreeBSD
Система электронного документооборота Alfresco на базе FreeBSD
Мне была поставлена задача внедрить систему электронного документооборота для территориально распределенной организации. Программное обеспечение для СЭД должно быть бесплатным, с открытым исходным кодом, кроссплатформенным и предназначенным для крупных предприятий.
На первый взгляд все здорово - автоматизация корпоративного контента, однако это затрагивает всех сотрудников и, как показывает практика внедрения системы учета заявок, волны недовольств и сопротивления учиться новому с их стороны не избежать.
Хочу отметить, что успешность электронного документооборота во многом зависит от налаженности процессов, которые протекают в организации. Другими словами, что имеем на входе, то и получим на выходе, а СЭД позволяет только ускорит этот процесс.
Первым кандидатом на роль системы электронного документооборота стала СЭД Alfresco.
Alfresco (в переводе с итал. Под открытым небом) — open source интегрированная система электронного документооборота и система управления корпоративным контентом (Enterprise Content Management, ECM).
Поддерживается на всех основных платформах: FreeBSD, Microsoft Windows, Linux, Mac OS X и Solaris. Написана на Java.
В октябре 2009 года специализированное издание CMSWire назвало Alfresco лидером среди open source Java/WCMS. В августе 2010 года Infoworld назвал Alfresco одним из 11 победителей в номинации Bossie 2010 Award (Лучшие open source приложения.
Alfresco – открытая платформа ECM
Всю платформу Alfresco можно разделить на несколько основных компонентов:
- Document Management – система управления документами (унифицированное хранилище данных, поддержка бизнес-процессов).
- Records Management – архив данных, построенный на основе репозитория данных Alfresco.
- Web Content Management – система управления веб-контентом (совместная работа над материалами, веб-публикации).
- Share – система совместной работы, позволяющая создать подобие социальной сети внутри организации.
Версии продукта:
- Alfresco Community - распространяются свободно без поддержки.
- Alfresco Enterprise - распространяются с поддержкой от разработчиков.
Для работы Alfresсo необходимо установить:
- /usr/ports/java/jdk16
- /usr/ports/databases/mysql55-server
- /usr/ports/www/tomcat7
- /usr/ports/graphics/ImageMagick
- /usr/ports/print/acroread9
- /usr/ports/editors/openoffice.org-3
- Flash Player
- /usr/ports/graphics/swftools
Java JDK1.6
Установка Java JDK занимает длительное время. На системе с 1,5Гб оперативной памяти и 1,8MHz CPU сборка займет порядка 6 часов. По лицензионным ограничениям каждый компонент для установки придется выкачивать вручную и размещать в папке /usr/ports/distfiles/:
bsd-jdk16-patches-4.tar.bz2
diablo-caffe-freebsd7-i386-1.6.0_07-b02.tar.bz2
jdk-6u3-fcs-bin-b05-jrl-24_sep_2007
jdk-6u3-fcs-mozilla_headers-b05-unix-24_sep_2007
jdk-6u3-fcs-src-b05-jrl-24_sep_2007
tzupdater-1_3_38-2011e
После размещения необходимых пакетов можно приступать с сборке и инсталляции:
# make install clean
Apache Tomcat 7
Tomcat (в старых версиях — Catalina) — программа-контейнер сервлетов, написанная на языке Java и реализующая спецификацию сервлетов и спецификацию JavaServer Pages (JSP), которые являются стандартами для разработки веб-приложений на языке Java.
Сервлет является Java-программой, выполняющейся на стороне сервера и расширяющей функциональные возможности сервера.
# make install clean
# echo 'tomcat7_enable="YES"' >> /etc/rc.conf
# echo 'tomcat7_java_opts="-server"' >> /etc/rc.conf
# echo 'tomcat7_java_home="/usr/local/jdk1.6.0"' >> /etc/rc.conf
# /usr/local/etc/rc.d/tomcat7 start
Опция -server обеспечивает запуск Tomcat с серверной версией JVM, которая отличается более агрессивным сборщиком мусора GC, несколько другой стратегией управления памятью и JIT.
Apache Tomcat запускается и прослушивает входящие соединения на непривилегированных портах. Запуск Tomcat на 80 порту возможен только от имени root'а:
http://192.168.0.1:8080
Alfresco
Скачиваем архив:
http://process.alfresco.com/ccdl/?file=release/community/build-3370/alfresco-community-3.4.d.zip
Кладем web-server/webapps/alfresco.war и web-server/webapps/share.war в директорию на сервере /usr/local/apache-tomcat-7.0/webapps/.
mysql-connector-java-5.1.13-bin.jar размещаем в папке /usr/local/apache-tomcat-7.0/lib.
Копируем web-server/shared в /usr/local/apache-tomcat-7.0/.
Создаем папку /usr/local/apache-tomcat-7.0/shared/lib.
Создаем базу данных для alfresco:
> CREATE DATABASE alfresco default character set "UTF8";
> GRANT ALL ON alfresco.* to alfresco@localhost identified by 'pass';
Создаем и правим конфигурационный файл с глобальными настройками:
# cp /usr/local/apache-tomcat-7.0/webapps/alfresco/WEB-INF/classes/alfresco-global.properties /usr/local/apache-tomcat-7.0/shared/classes/
<classpathRoot>/alfresco-global.properties:
dir.root=/usr/local/apache-tomcat-7.0/webapps/alfresco/alf_data
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://localhost:3306/alfresco?useUnicode=yes&characterEncoding=UTF-8
В файле /usr/local/apache-tomcat-7.0/conf/catalina.properties указываем shared.loader= property to the following: shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar
Правим /usr/local/apache-tomcat-7.0/conf/server.xml. Устанавливаем кодировку UTF-8. По-умолчанию Tomcat использует ISO-8859-1. Это может создать проблемы при создании, загрузке и переименовыванию файлов в интернациональной кодировке.
connectionTimeout="20000"
redirectPort="8443" />
Рестартуем tomcat:
Пробуем зайти http://192.168.0.1:8080/alfresco и облом - куча ошибок в логах (/usr/local/apache-tomcat-7.0/logs/stdout.txt):
...
Failed to load audit model: file:/usr/local/apache-tomcat-7.0/webapps/alfresco/WEB-INF/classes/alfresco/audit/alfresco-audit-cmis.xml
...
JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/usr/local/apache-tomcat-7.0/webapps/alfresco/WEB-INF/lib/jaxb-impl-2.1.7.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)
Alfresco использует JAXB 2.1 API, а в системе установлена JAXB 2.0 API.
The goal of the JAXB project is to develop and evolve the code base for the Reference of JAXB, the Java Architecture for XML Binding
По умолчанию сначала загружается библиотека из java (JAXB 2.0), поэтому нужно переопределить порядок вызова библиотеки. Для этого можно разместить jaxb-api-2.1.jar в директории endorsed:
Нажимая кнопку «Сохранить», я подтверждаю свою дееспособность, согласие на получение информации от NetK, согласие на обработку персональных данных в соответствии с Политикой конфиденциальности и Пользовательским соглашением.