Liferay — Open-Source портал на J2EE
Только вчера закончил свой первый, полнофункциональный портлет для Liferay (SVN/Mercurial/CVS браузер) — и хочу поделится некоторым опытом (пусть и минимальным). К тому же по Liferay вроде на Хабре еще ничего не пробегало. Статья очень поверхностная — но тем не менее, надеюсь, даст некоторое начальное представление
Что такое Liferay
- Microsoft SharePoint
- Joomla/Drupal на PHP
- С определенной натяжкой iGoogle & Google Site
- Полноценная CMS
- Вики
- Блоги
- Форумы
- В последней версии добавилась функциональность социальных сетей: друзья, «стена», сообщения
- И много-много-много чего другого
Как и многие другие технологии в J2EE, API портлетов стандартизовано через JSR (Java Specification Request). За портлеты отвечают JSR-168 (Portlet 1.0) & JSR-268 (Portlet 2.0) а так же ряд других JSR (например JSR-301 — Portlet Bridge Specification for JavaServer Faces)
- Apache JetSpeed
- JBoss Portal
- Exo
Стандарты / не стандарты
Стандарты это хорошо! Это даже очень хорошо! Но, если брать конкретный пример (мой портлет) — то я принял решение разрабатывать портлет именно под Liferay — то есть, не работающий на других порталах. Почему? Ну во-первых, сильно сомневаюсь, мой портлет будет использоваться где-то еще кроме Liferay (если все-таки кто-то захочет — бужу делать общую версию), а заточка портлета именно под Liferay позволяет использовать большой набор дополнительных сервисов и заготовок.
В мое случае мне очень пригодился тэг отрисовки таблиц: формируешь набор данных — и отображаешь его в виде таблицы при помощи этого тега — в результате получаешь таблицу, стилистически оформленную как и все другие таблицы в Liferay, с разбиением данных на «страницы» (pagination), навигацией между страницами, управление количеством элементов на одной странице. Так как таблица у меня присутсвует чуть-ли не на каждой форме — мне это было критично и использование Liferay-специфичной функциональности сильно облегчило мне жизнь
Но, в каждом проекте, я думаю, это должно решаться индивидуально — при возможности — лучше следовать стандартам (и обеспечить переносимость) — но, если переносимость не нужна и решение создается под конкретный портал — можно и использовать специфичные сервисы и функциональность.
- Hibernate
- Spring Framework
- Lucene & Compass для поиска
- JspWiki — для вики
- jBPM — для workflow
Разработка портлетов
- Голый JSP — что я и выбрал пока, так как у меня только отображение данных
- Struts 1.x — используется для написания «родных» портлетов, а потому имеет много «заготовок»
- Struts 2 тоже должен работать
- Spring-MVC
Разработка портлетов по много схожа с разработкой обычных веб-приложений на java — структура проекта во многом та же, тот же web.xml — просто есть ряд дополнительных конфигурационных файлов, и вся программа выполяется немного в другом контексте — вместо Servet-ов и Filter-ов — Portlet-ы и PortletFilter-ы
Трудности при разработке
Основная трудность — очень мало документации 🙁 — все что есть — это набор плохо-структурированных вики на liferay.com, плюс сообщения в форумах. Для меня лучшей документацией стал исходный код самого Liferay и его родных портлетов. Просто когда надо что-то сделать — ищешь портлет с похожей функциональностью, смотришь его исходный код и делаешь аналогично (благо — все в Open-Source и доступно)
Где использовать
Мне Liferay очень понравился — и, если вам необходимо написать CMS на java — подумайте — может не надо изобретать велосипед? Используя Liferay вы получаете сайт с управлением пользователями и ролями, множеством компонент и возможностью разширить его на java — и все это Open-Source и бесплатно.
Поддержка сайта на Liferay
Liferay — это система управления содержимым (CMS), или платформа для веб-приложений. Написана на языке Java и распространяется под двумя видами лицензий: свободной и проприетарной, используя бизнес-модель двойного лицензирования. Еще CMS описывается как Liferay Portal — программный продукт, представляющий собой корпоративный портал, то есть решение, предназначенное для централизованного доступа к нескольким различным корпоративным приложениям в одном месте.
Стоимость техподдержки сайта на Liferay
ТАРИФНЫЙ ПЛАН УРОВЕНЬ СЕРВИСА
14 990 руб/мес 13 990 руб/мес
23 990 руб/мес 21 990 руб/мес
35 990 руб/мес 32 990 руб/мес
Подарок — 3 месяца хостинга
Бесплатный перенос сайтов
Доработки сайта на Liferay
- Наполнение сайта
- Создание сайта или интернет-магазина
- Удаление вирусов, последствий взлома
- Настройка ЧПУ, генерации мета-тегов
- Перенос сайта, замена хостинга
- Выгрузка каталога на Яндекс.Маркет
- Восстановление работоспособности сайта
- SEO оптимизация сайта на Liferay
Liferay — лидер портальных решений в России и в мире
В качестве единой фронтальной системы для объединения и автоматизации бизнес-процессов мы предлагаем использовать корпоративный портал Liferay. Это комплексное решение, позволяющее объединить под одной платформой процессы взаимодействия с партнерами и обслуживания клиентов по всем каналам: веб-браузер, мобильное устройство, телефония.
Преимущества Liferay
Нагрузки Enterprise уровня
Независимость от инфраструктуры
Низкая совокупная стоимость владения
Международные стандарты безопасности
Большой набор готовых модулей
EmDev — первый золотой партнер Liferay в России и СНГ
8 лет работы с Liferay
Многократный призер Liferay Community Awards
Десятки успешных внедрений
Нам доверяют
Что мы делаем
Продажа лицензий Liferay
Приобретая лицензии Liferay только у нас, вы получаете русскоязычную линию поддержки
Внедрение и обучение
Для клиентов мы проводим обучение по индивидуальной программе
Поддержка на русском языке
Соглашение об уровне оказания услуг (SLA) составляется в соответствии с потребностями клиента
Разработка решений на базе портала
Компания EmDev предлагает услуги как расширения, так и глубокой модернизации функционала Liferay
Заявка на консультацию или индивидуальное демо
Заполните первичную информацию и наш специалист свяжется с вами.
Возможна подготовка индивидуального демо-стенда. Мы можем провести как удаленную демонстрацию функционала, так и очный показ в вашем офисе в удобное вам время.
Вы также можете связаться с нами по e-mail или бесплатному телефону горячей линии:
Спасибо, что выбрали EmDev возможным поставщиком портального решения!
Сайт использует файлы cookie. Они позволяют узнавать вас и получать информацию о вашем пользовательском опыте. Это нужно, чтобы улучшать сайт. Посещая страницы сайта и предоставляя свои данные, вы позволяете нам предоставлять их сторонним партнерам. Если вы согласны, продолжайте пользоваться сайтом. Если нет – установите специальные настройки в браузере или обратитесь в техподдержку.
Читать еще OK
Простые решения для сложных B2B-процессов
(с) ООО «ЕМДЕВ», 2005-
Заказать консультацию Заказать консультацию
197022, Санкт-Петербург,
ул. Профессора Попова, д. 23,
литера В, помещение 3Н
+7 (812) 385-57-78
Liferay 7.4 — еще одна No Code платформа?
Компания Liferay выпустила очередную версию своей портальной платформы Liferay CE 7.4.3 и гордо заявила в анонсе что это теперь полноценное No Code решение. Так ли это на самом деле?
Вообще No Code — классная штука! Как человек, отработавший с 95-ого года программистом, а теперь вынужденный продавать ПО я прекрасно вижу как это выглядит
- Смотрите какая у нас классная No Code платформа! Как она классно делает «Hello World»!
- Круто! А сколько она стоит?
- Ну миллион (всего!) за лицензию, плюс миллиард на внедрение, плюс квадрилион чтобы научить ваших менеджеров на ней ваять приложения! Но зато потом вы сможете уволить всех ваших программистов! (А вы видели какие сейчас у программистов зарплаты. )
- Отлично! Продано!
А потом, где-то через полгода они приходят к единственному оставшемуся программисту (тот просто прикинулся сисадмином, когда под гребенку увольняли всех программистов за ненадобностью) со словами:
«У нас тут есть крутая No Code платформа, мы на ней круто сделали «Hello World». Но нам теперь надо сделать «Привет мир!» — а она не умеет. Исправь — «Тыж программист!»
И человек долго и муторно пытается вкорячить в платформу то, что на нормальном стеке делается за полчаса. Применяет все возможные подходы нетрадиционного программирования, через две недели достигает нужного результата, но чувствует себя нетрадиционным программистом. И уходит из компании вслед за остальными.
Так что, если вашему руководству кто-то продал идею No Code — как серебряную пулю для решения ВСЕХ задач — лучше сразу идти обновлять резюме на HH и ХабрКарьере — ничем хорошим эта история не закончится. Это будет не серебряная пуля — а золотой гвоздь, в крышку гроба (или у кого-то есть успешный опыт?).
НО! На самом деле в мире есть место и для Ноу Кода, просто надо правильно применять инструменты. Если вам нужен простой сайт — глупо сажать за него команду программистов на React — в условной Тильде вы и сами сможете накидать его, причем значительно быстрее. No Code хорош там, где надо быстро сделать что-то простое и максимально стандартное.
Чтобы система называлась No Code, в моем понимании в ней должны быть следующие компоненты (как минимум):
- Инструмент для описания объектной модели
- Инструмент для описания поведения (бизнес-логики)
- Инструмент для создания интерфейсов
А как с этими инструментами у Liferay?
Начнем с конца. С интерфейсами у Liferay все более чем хорошо. Это в первую очередь конструктор страниц (а-ля Тильда) с возможностью накидывать страницы из готовых компонент буквально за секунды.
Это и редактор форм, не идеальный, но достаточно мощный инструмент (с гибким layout-ом полей, возможностью разбить на страницы — wizard, с разными типами полей, валидацией, масками и зависимости полей друг от друга). С его помощью можно делать действительно сложные формы.
В целом тут все хорошо, можно при помощи мышки и драг-н-дропа создавать веб-интерфейс.
С поведением чуть хуже. В Liferay есть возможность привязать к тем же формам бизнес-процессы, но встроенная реализация движка бизнес-процессов — Kaleo, как бы это сказать, слишком базовая. У нас в Incomand мы обошли это тем, что вместо Kaleo вшили в портал движок Flowable (многие знают Camunda — так вот Flowable — это его двоюродный брат-близнец — оба форки от Activiti, только Camunda форкнулась на полтора года раньше). С полноценной нотацией BPMN — а на ней можно много чего сделать (кто работал с той же Camunda — не дадут соврать).
Остался вопрос с объектной моделью — и вот тут были проблемы. Дело в том, что те же формы хранили все свои данные в одной таблице в одном поле (в формате JSON). Если тебе надо просто собрать какие-то данные — это норм. Но вот если тебе с ними потом еще как-то работать — это уже большая проблема.
Давно (еще в версии 6.x) в Liferay был разработан механизм динамических объектов (Dynamic Data List) — те же формы, только вид с боку. Но и там все хранилось в одной таблице в одном поле — в формате XML. С аналогичными проблемами.
И вот, в последней версии 7.4 (7.4.3 если быть точным) появились они — Liferay Objects! Это редактор объектной модели, который честно создает под каждый объект отдельную таблицу. Свершилось! Или?
Как только появился тег в гитхаб, я пошел качать и тестировать версию, еще не дожидаясь официального релиза. Даже написал на сайте официальный анонс. НО — официальный сайт — официальным сайтом, а реальность не так хороша как хотелось бы.
С одной стороны — да, все заявленное есть:
- Можно создавать новые объекты;
- Можно задавать для объектов поля разного типа с различными атрибутами (например обязательность);
- Можно создавать связи между объектами (генерируются Foreign Key-и);
- Поддерживается локализация (имена объектов и полей можно задавать на разных языках);
- Поддерживается workflow — при создании объекта можно запустить бизнес-процесс;
- Для объектов генерируется удобное REST API.
В целом можно сказать что необходимый минимум есть (мы с вами помним — что No Code — это все-таки для относительно простых, типовых задач).
Но, самое интересно начинается когда мы переходим на вкладку Layouts — тут можно задать формы для работы с объектом
И тут меня настигло удивление и разочарование. Вместо ожидаемого редактора форм, который Liferay разрабатывает уже несколько лет, и в котором реализовал все что только можно, нас ждет какой-то совсем новый редактор с ООООООЧЕНЬ базовым функционалом. Создать на нем что-то вменяемое, чем смогут пользоваться обычные пользователи — нереально.
Дальнейшее изучение все ставит на свои места. Работа с созданными объектами доступна только из панели управления (при наличии прав). Разместить где-то на странице сайта список созданных объектов — нельзя. Получается что и формы редактирования объектов — это в первую очередь для администрирования (а админам то что, они все стерпят!).
А что для конечных пользователей? Ну так вот же крутое REST API, садитесь, пишите приложение на React/Angular/Vue (выбираем по вкусу), встраивайте в портал — и будет вам счастье.
Разумно? Да, но это уже совсем не No Code платформа.
Итог? Пока печален. По факту в Liferay есть все компоненты для того, чтобы называться No Code платформой. Но, так как они не связаны между собой — получаем ни то ни се.