пʼятниця, 18 червня 2010 р.

Liferay::Plugins

Plugins SDK

кроме Extension Environment Liferay предоставляет готовую для работы среду для разработки плаигнов - Liferay Plugins SDK. среда представляет собой ZIP архив, который содержит структуру каталогов и файлов сборки Ant. после распаковки архива можно сразу начинать работу. с другой стороны, в отличие от Extension Environment, ни один из плагинов не является плотно интегрированным с Liferay и может быть разработан как с помощью Liferay Plugins SDK, так и без нее.
итак, какие же бывают плагины, с точки зрения Liferay?

Portlets

портлеты. спецификации JSR-168 и JSR-286 описывают портлеты чуть более, чем полностью. и я не стану описывать принципы взаимодействия, разработки, жизненный цикл и прочие особенности реализации в рамках данной статьи. единственное, я попытаюсь кратко описать, как это работает вообще.
понятие портлета не отделимо от понятия портала. в общем случае портал есть контейнер для портлетов. каждый портлет является независимым web приложением, которое развертывается внутри портального контейнера и функционирует как обычное независимое приложение с рядом дополнительных возможностей
  1. у каждого приложения есть доступ к настройкам - PortletPreferences. настройки сохраняются внутри портала и доступны каждому портлету как при работе, так и между развертываниями. портал отвечает за хранение PortletPrefereces
  2. каждый портлет может находится в трех состояниях VIEW, EDIT и HELP.
    состояние VIEW - является состоянием по-умолчанию и именно в нем портлет осуществляет большинство своих функций.
    состояние EDIT - обычно используется для изменения настроек портлета. это может быть конфигурация внешних источников, изменение PortletPrefereces и тому подобное
    состояние HELP - говрящее само-по-себе. предосталение информации о том, что делает портлет и как с ним работать
  3. каждое окно портлета внутри портала может находиться в трех состояниях NORMAL, MAXIMIZED и MINIMIZED
  4. Look&Feel портлетов определяется порталом, если не реализовано иное. как правило это означает, что разработчику больше не нужно программировать стили для каждого портлета. достаточно написать их однажды. но это уже Theme
  5. в дополнение к стандардному деплоймент дескриптору portlet.xml, обязтельным явдяется также специфический деплоймент дескриптор liferay-portlet.xml, где можно описать поведение портлета по-умочанию, какие-то конфигурационные вещи, принадлежность портлета и тому подобное. группировка портлетов происходи через изменение деплоймент дескриптора liferay-display.xml, который также можно определить для портлета. и еще можно описать портлет или группу портлетов как hook, через деплоймент дескриптор liferay-hook.xml

Theme

тема представляет собой набор шаблонов, для гернерации страниц портала; набор стилей CSS применимых для всех компонентов и набор картинок, которые будут использованы в портале. тема предоставляет возможность создания нескольких цветовых схем одной и той же темы.
строго говоря, в Liferay версии старше 3, тема представляет собой не столько шаблоны, CSS и картинки, сколько изменения к станадртным темам. но никто не мешает написать свою тему "с нуля". по-умолчанию для описания шаблонов использутеся Apache Velocity. но в Liferay заявлена поддержка практически любого языка шаблонов.
правила развертывания и использования темы описываются деплоймент дескриптором liferay-look-and-feel.xml

Layouts

портал предлагает достаточно большой выбор шаблонов страниц "из коробки". но можно определять свои. как правило это табличная сетка, где определяются области, в которые потом можно будет помещать портлеты. в принципе никто не мешат сделать эту сетку на div'ах

Hooks

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