Статьи

Быстрая разработка приложений SEMAT с Apache Isis

TL; DR В этом посте рассказывается о любимом проекте SEMAT, который я создал с помощью Apache Isis и развернул в OpenShift Online здесь http://semat.ofbizian.com

Apache Isis

Как разработчик Java, который работает в основном на бэкэнд-системах, я не люблю создавать пользовательские интерфейсы и работать с Javascript. К счастью, есть проекты Java, такие как JSF (grrr), Apache Wicket, Vaadin, которые могут помочь избежать Javascript в целом и по-прежнему создавать функциональные пользовательские интерфейсы. Но даже с этими проектами разработчик должен думать и активно создавать пользовательский интерфейс из кода Java. Это похоже на написание собственных операторов SQL в эпоху ORM, таких как Hibernate — действие, которое мы выполняем только тогда, когда OOTB ORM недостаточно хорош для варианта использования. И это именно то, что подходит для Apache Isis : учитывая модель предметной области и сопоставления аннотаций, он генерирует полный пользовательский интерфейс во время выполнения. В некотором смысле, Apache Isis является OUIM-структурой для Java.


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

SEMAT Essence Kernel

Чтобы изучить Apache Isis, я решил реализовать модель SEMAT и развернуть ее в OpenShift Online в виде контейнера Docker. Проще говоря, SEMAT (метод и теория разработки программного обеспечения) Essence Kernel — это стандарт OMG, который помогает, помимо прочего, определять структуру для описания состояния программных проектов с разных точек зрения (называемых альфа).

SEMAT Alpa States

Идея состоит в том, что каждый проект может быть описан в общем виде с использованием следующих семи альфа:

Заинтересованные стороны, Возможности, Требования, Система программного обеспечения, Работа, Команда, Способ работы. И каждая Альфа может находиться в одном или нескольких состояниях, например,
Заинтересованными сторонами могут быть: Признано, Представлено, Вовлечено, Соглашено, Удовлетворено и т. Д. Кроме того, у каждого состояния есть определенные пункты, которые должны быть выполнены, прежде чем Альфа может быть переведена в это состояние.

Заинтересованные стороны Alpha’s States

Как видите, это довольно простая модель предметной области с логикой конечного автомата.

Приложение Витрина

Достаточно сказать, чтобы увидеть, сколько Java мне пришлось написать для этого приложения, проверьте модуль dom проекта на github . Весь остальной код скелета генерируется с помощью плагина maven, и код пользовательского интерфейса не требуется. А вот скриншот визуализации экрана объекта домена Project:

Вид проекта как экран Apache Wicket

В дополнение к созданию пользовательского интерфейса Apache Isis также сгенерирует REST API, используя ту же модель домена. Как это круто.

API REST SEMAT, сгенерированный из модели предметной области

И прелесть всего этого в том, что генерация пользовательского интерфейса позволяет вам быстро перебирать модель предметной области, показывать ее владельцам бизнеса для получения обратной связи и продолжения развития модели.

Некоторые функции приложения SEMAT реализованы / включены

  • Мульти аренды
  • Управление несколькими проектами на одного арендатора
  • Управление проектом Альфа-штатов
  • Пользовательский список состояний Essence Alpha для каждого арендатора
  • Пользовательские элементы Essence Checklist для каждого арендатора
  • Альфа-паук / радар
  • Автоматическая генерация пользовательского интерфейса на основе Apache Wicket из модели домена
  • Автоматическая генерация REST API из той же доменной модели
  • Самостоятельная регистрация / регистрация
  • Аудит действий пользователя
  • Запись сеанса
  • интернационализация
  • След крошки
  • закладки

Построить и запустить

Проверьте readme для получения полной информации, но вы можете собрать и запустить приложение локально или в OpenShift, чтобы опробовать его.

1
2
3
mvn clean install
cd webapp
mvn jetty:run
1
2
3
mvn clean install
docker build --rm -t bibryam/semat .
docker run -p 8080:8080 bibryam/semat

Затем перейдите по адресу http: // localhost: 8080 / и войдите в систему: пользователь / пользователь

Развертывание в OpenShift

После того, как вы запустили OpenShift локально или
в сети и с установленным клиентом oc, вы можете развернуть уже созданный образ domat semat с помощью следующих команд:

1
2
3
oc new-project semat
oc new-app bibryam/semat:latest -e CATALINA_OPTS=“-Xmx300m”
oc expose service semat

Если вы не доверяете образам докеров, созданным другими (вы не должны!), То вы можете создать свой собственный образ докера, как показано выше, с вариантами 2 и 3, передать его в собственный реестр докеров и запустить приложение из него:

1
oc new-app your_name/semat:latest -e CATALINA_OPTS=“-Xmx300m”

В качестве альтернативы, вы можете избежать установки и запуска docker все вместе, и исходный код и образ докера будут построены на OpenShift. Это называется OpenShift Source-to-Image
подход Это можно сделать из пользовательского интерфейса OpenShift, используя, например, шаблон «Red Hat JBoss Web Server 3.1 Tomcat 8 1.0» и указывая на репозиторий SEMAT github. Или используйте шаблон, предоставленный в самом проекте:

1
2
oc create -f semat-openshift-template.json
oc process semat

Использование подхода «источник — изображение» позволяет настраивать веб-заезды на github, иметь базовый образ Red Hat, добавлять jolokia, выполнять настройку памяти Java и т. Д.

Живая демоверсия на OpenShift

Смотрите, попробуйте приложение, проверьте живую демоверсию, запущенную на OpenShift Online
http://semat.ofbizian.com

Итак, если у вас есть модель домена, которая часто меняется, и гибкость в изменении логики домена важнее, чем внешний вид пользовательского интерфейса, проверьте Apache Isis. Это невероятно продуктивная и быстрая среда разработки бизнес-приложений.

Смотрите оригинальную статью здесь: Быстрая разработка приложений SEMAT с Apache Isis

Мнения, высказанные участниками Java Code Geeks, являются их собственными.