6 minute read
ScoutГлава 13. Разработка приложений на основе платформы
ГЛАВА 13
Разработка приложений на основе платформы Scout
Платформа Eclipse Scout (http://www.eclipse.org/scout/) упрощает разработку распределенных приложений уровня предприятия. Платформа Scout позволяет создавать клиент-серверные приложения, отдельные настольные приложения и основанные на OSGi серверные приложения. Платформа Scout предоставляет среду выполнения Scout Runtime, основанную на Equinox-платформе и обеспечивающую коммуникацию между клиентской и серверной частями приложения. Для создания клиентской стороны Scout-платформа предлагает большой набор GUI-компонентов, основанных на графических системах SWT и Swing. Для создания серверной стороны Scout-платформа предоставляет набор базовых сервисов — SQL, SMTP, Bookmark Storage и Calendar. Содержимое страниц и форм Scout-приложения обеспечивается OSGi-сервисами, которые могут быть реализованы как на серверной стороне, так и в клиентском приложении. В Scout-приложении компоненты клиентской и серверной сторон используют общий набор плагинов, содержащих интерфейсы сервисов и объекты DTO (data transfer object), которые представляют данные приложения и обеспечивают связь с Persistence-уровнем приложения. Интерфейсы сервисов реализуются на серверной стороне и потребляются на клиентской стороне, используя Proxyобъекты. Взаимодействие между клиентской и серверной частями приложения обеспечивается Service-туннелем, использующим HTTP/HTTPS-протокол. Каждый клиентский запрос упаковывается в HTTP POST SOAP-сообщение, пересылаемое серверной части, которая представляет собой Equinox Web-приложение, развернутое в Webконтейнере сервера приложений. Входящее HTTP-сообщение распаковывается Service-туннелем и передается реализации сервиса. Возврат результата клиенту производится с помощью обратной последовательности действий. Таким образом, клиентская часть Scout-приложения основывается на плагинах SWT, Swing, Net и Scout Client, развернутых на Eclipse-платформе, работающей в среде выполнения OSGi/Equinox, а серверная часть Scout-приложения основывается на плагине Scout Server и наборе базовых сервисов, развернутых на Eclipseплатформе, работающей в среде выполнения OSGi/Equinox в Web-контейнере сервера приложений.
Разработка Scout-приложений в среде Eclipse обеспечивается набором плагинов Scout SDK платформы Scout, расширяющих Eclipse PDE и Eclipse JDT. Набор Scout SDK добавляет в среду Eclipse перспективу Scout, открывающую представления Scout Explorer и Scout Object Properties. Представление Scout Explorer обеспечивает отображение структуры Scoutприложения, а также упрощает добавление в клиентское приложение таких GUIкомпонентов, как формы, меню, поля, панели структуры приложения, при выборе элемента которой в отдельной части окна приложения открывается соответствующая страница приложения, в серверную часть приложения — сервисов. Представление Scout Object Properties обеспечивает конфигурирование компонентов приложения — форм, полей, обработчиков и др. Для разработки Scout-приложений можно воспользоваться продуктом Eclipse for Scout Developers (http://www.eclipse.org/downloads/) или же инсталлировать набор плагинов Scout Runtime и Scout SDK с помощью команды Install New Software меню Help, в поле Work with набрав адрес http://download.eclipse.org/scout/ nightly/update/. Для создания Scout-приложения откроем среду Eclipse c поддержкой платформы Scout и в окне Scout Explorer перспективы Scout щелкнем правой кнопкой мыши на узле Scout Projects и в контекстном меню выберем команду New Scout Project. В окне мастера создания проекта Scout-приложения в поле Project Name введем префикс имен Eclipse-проектов, а в поле Project Postfix — постфикс имен Eclipseпроектов, составляющих проект Scout-приложения (рис. 13.1).
Нажмем кнопку Next и выберем опцию Application with a single form создания Scout-приложения, GUI-интерфейс которого при запуске отображает единственную форму. Завершим создание Scout-проекта нажатием кнопки Finish. В результате в Workspace-пространстве будет сгенерирован набор проектов Eclipseплагинов, составляющих проект Scout-приложения. Компонентная модель платформы Scout разделяет UI- и GUI-интерфейсы приложения для отделения бизнес-логики UI-интерфейса от его специфической GUIреализации. Поэтому клиентская часть Scout-приложения представлена двумя плагинами — .client. и .ui.swing. (или .ui.swt.). Плагин .client. основывается на плагине org.eclipse.scout.rt.client (UI-плагин) Scout-платформы, а плагины .ui.swing. и .ui.swt. базируются на плагинах org.eclipse.scout.rt.ui.swt и org.eclipse.scout.rt.ui.swing (GUI-плагины) Scout-платформы. Сгенерированный Eclipse-плагин .server. Scout-проекта представляет серверную часть приложения, а плагин .shared. проекта содержит общие для клиентской и серверной частей ресурсы. Для запуска Scout-приложения из среды Eclipse в перспективе Scout в окне Scout Explorer щелкнем на узле server-плагина и в окне Scout Object Properties нажмем кнопку Start product (рис. 13.2).
Рис. 13.2. Запуск серверной части Scout-приложения из среды Eclipse
Для запуска клиентской части Scout-приложения с SWT GUI-интерфейсом в перспективе Scout в окне Scout Explorer щелкнем на узле ui.swt-плагина и в окне Scout Object Properties нажмем кнопку Start product. В результате откроется окно клиентского приложения с формой (рис. 13.3). Для запуска клиентской части Scout-приложения с Swing GUI-интерфейсом в перспективе Scout в окне Scout Explorer щелкнем на узле ui.swing-плагина и в окне Scout Object Properties нажмем кнопку Start product. В результате откроется окно клиентского Swing-приложения (рис. 13.4). Сгенерированный shared-плагин Scout-проекта содержит классы DesktopFormData, а также интерфейс IDesktopProcessService.
Рис. 13.3. SWT GUI-интерфейс Scout-клиента
Рис. 13.4. Swing GUI-интерфейс Scout-клиента
Класс Text обеспечивает локализацию текстовых строк GUI-интерфейса приложения, класс Icons — Java-доступ к значкам приложения. Для добавления значка к форме приложения перейдем в перспективу Java среды Eclipse и в client-плагине в папку resources/icons добавим файл изображения my.png. В классе Icons shared-плагина добавим строку:
public static final String myIcon = "my";
а в класс DesktopForm client-плагина метод:
@Override protected String getConfiguredIconId() { return Icons.myIcon; }
Теперь при запуске клиентского SWT-приложения в заголовок формы добавится значок (рис. 13.5).
Рис. 13.5. Форма Scout-приложения со значком
Класс DesktopFormData shared-плагина Scout-проекта представляет DTO-данные формы, передаваемые ей сервисом server-плагина Scout-приложения. Интерфейс IDesktopProcessService shared-плагина Scout-проекта является интерфейсом сервиса server-плагина Scout-приложения. В окне Scout Explorer перспективы Scout среды Eclipse узлы Enumerations, Permissions и Lookup Calls shared-плагина с помощью контекстного меню упрощают создание CodeType-структур, представляющих деревья пар "ключ — код", Permission-ограничений доступа к ресурсам приложения и LookupCall-сервисов поиска пар "ключ — текст". Сгенерированный client-плагин Scout-проекта содержит классы ClientSession, Desktop и DesktopForm. Класс ClientSession является точкой входа для создания сессии клиент-серверного взаимодействия. Класс Desktop представляет точку входа в клиентское Scout-приложение и служит корневым контейнером для GUI-компонентов приложения. Класс DesktopForm представляет View-окно, диалоговое окно
или страницу мастера и содержит MainBox-контейнер GUI-компонентов и ViewHandler-обработчик запуска формы. Сгенерированный ui.swing-плагин Scout-проекта содержит Product-конфигурационные файлы разработки и релиза клиентского Scout-приложения, а также классы SwingApplication и SwingEnvironment Swing-реализации GUI-интерфейса приложения. Сгенерированный ui.swt-плагин Scout-проекта содержит Product-конфигурационные файлы разработки и релиза клиентского Scout-приложения, а также классы SWT/RCP реализации GUI-интерфейса приложения. Сгенерированный server-плагин Scout-проекта содержит Product-конфигурационные файлы разработки и релиза серверной части Scout-приложения, а также клас- сы ServerSession, ServerApplication, AccessControlService и DesktopProcessService. Класс ServerSession обеспечивает создание сессии клиент-серверного взаимодействия. Класс ServerApplication является точкой входа и обеспечивает управление конфигурацией серверной части Scout-приложения. Класс AccessControlService обеспечивает загрузку ограничений доступа к ресурсам серверного Scoutприложения. Класс DesktopProcessService представляет сервис данных для DesktopForm-формы клиентского Scout-приложения. Для того чтобы в клиентском Scout-приложении воспользоваться сервисом DesktopProcessService в перспективе Scout среды Eclipse, в окне Scout Explorer щелкнем правой кнопкой мыши на узле Forms | DesktopForm | MainBox clientплагина Scout-проекта и выберем команду New Form Field. В окне мастера выберем тип поля String Field и нажмем кнопку Next (рис. 13.6). В поле Name введем текстовую метку поля, при этом с помощью опции New translated text можно добавить локализацию метки, и нажмем кнопку Finish. В окне Scout Explorer щелкнем на узле Process Services | DesktopProcessService server-плагина Scout-проекта и в редакторе кода дополним класс DesktopProcessService:
package com.sample.server.scout.services.process; import org.eclipse.scout.commons.exception.ProcessingException; import org.eclipse.scout.service.AbstractService; import com.sample.shared.scout.services.process.DesktopFormData; import com.sample.shared.scout.services.process.IDesktopProcessService;
public class DesktopProcessService extends AbstractService implements IDesktopProcessService { @Override public DesktopFormData load(DesktopFormData formData) throws ProcessingException {
formData.getMessage().setValue("Hello World");
return formData; }}
Рис. 13.6. Выбор типа GUI-компонента формы клиентского Scout-приложения
Сохраним изменения и запустим серверную и клиентскую части Scout-приложения с помощью кнопки Start product окна Scout Object Properties. В результате откроется окно приложения с заполненным текстовым полем (рис. 13.7).
Для создания готового к развертыванию Scout-приложения в окне Scout Explorer щелкнем на узле ui.swt-плагина и в окне Scout Object Properties нажмем на ссылку open ... product. В окне PDE-редактора Product-файла на вкладке Overview нажмем на ссылку Eclipse Product export wizard и произведем экспорт клиентской части Scout-приложения в Eclipse-продукт. Для сборки серверной части Scout-приложения в готовый для развертывания на сервере приложений WAR-файл в окне Scout Explorer щелкнем правой кнопкой мыши на узле server-плагина и в контекстном меню выберем команду Export as WAR file. Поместим созданный WARфайл в папку webapps каталога Tomcat-сервера и запустим сервер с помощью инструмента startup.bat папки bin. Запустим клиентское приложение, щелкнув на EXEфайле Eclipse-продукта. В результате откроется окно Scout-клиента с полем, заполненным данными, полученными от Scout-сервиса.