Що нового в CUBA Platform 6.4

CUBA Generic UI templates

Нещодавно ми випустили новий реліз CUBA Platform і CUBA Studio. Якщо у версії 6.3 ми зробили акцент на архітектурних і технічних нововведеннях, то цей реліз додав до платформи багато фіч, з якими процес розробки став швидше і зручніше. Ми додали нові візуальні компоненти універсального інтерфейсу, централізований механізм валідації даних, движок для генерації альтернативного фронт-енду на основі Google Polymer та інші важливі поліпшення. Подробиці під катом.
Disclaimer: стаття в першу чергу адресована розроблювачам, вже знайомим з платформою CUBA.

Studio Templates
Раніше Studio пропонувала вибір з декількох фіксованих екранних шаблонів. Тепер же доступний цілий набір настроюваних і розширюваних шаблонів для створення екранів універсального інтерфейсу і альтернативного інтерфейсу на Polymer.
Список шаблонів Generic UI, як на скріншоті вище, можна відкрити, натиснувши New на вкладці Generic UI навігатора. Інший спосіб ‒ вибрати сутність, клікнути New, потім Generic UI screen. У другому випадку список шаблонів буде відфільтрований і відобразить тільки шаблони екранів перегляду і редагування сутностей.
Ви не можете редагувати шаблони, що поставляються разом з Studio, але ви можете їх копіювати та змінювати як завгодно. Щоб створити кастомный шаблон, виберіть базовий і натисніть Copy template. Тепер ви можете змінити властивості нового шаблону, написати код для XML-дескриптора і контролера екрану і задати локалізовані повідомлення. Вміст шаблону зберігається у проектній папці studio-templates, звідки ви можете закоммитить його в репозиторій з вихідним кодом.
Це відноситься і до шаблонів для Polymer UI, відмінність лише в тому, що шаблон буде містити HTML-файл з компонентом Polymer.
Screen Layout Controls

Засобами візуального дизайнера розмітки ви можете задати розмір полотна або пересунути лінії, що позначають межі компонентів. Якщо задано абсолютний розмір полотна, наприклад, 1600x900, і вміст не вміщається в ньому, на полотні будуть відображені смуги прокручування.
Lookup Type

При створенні посилальних атрибутів тепер можна відразу вказати, як це посилання повинна себе вести в UI. За замовчуванням, посилання відкриваються через lookup-екран, також можна вибрати значення DROPDOWN, щоб посилання відкривалися у вигляді випадаючого списку, і вказати, які дії повинні відображатися в компоненті PickerField. На що впливає цей вибір:
  • Якщо за спосіб відображення обраний DROPDOWN, Studio створить options datasource для випадаючого списку при скаффолдинге екрана редагування. Крім того, компонент Filter дозволить користувачам вибирати параметри фільтрації також з випадаючого списку замість lookup-екрану.
  • Якщо ви зауважили чекбокси Lookup actions, обрані дії будуть використані в компоненті FieldGroup за замовчуванням, і вам не доведеться вручну настроювати дії в коді контролера.
Зверніть увагу, що параметр Lookup type необхідно поставити ДО генерації екрана редагування сутності.
Установки типу перегляду зберігаються в коді за допомогою анотації @LookupType для атрибута сутності.
Value Datasources

Звичайні джерела даних, призначені для роботи з колекцією екземплярів сутності, можуть завантажувати тільки цілі сутності, що і потрібно для CRUD-операцій. Але іноді виникає необхідність відображати довільні дані, що містять одиничні атрибути і агреговані значення. Раніше для цього доводилося створювати неперсистентные суті, писати сервіси для їх наповнення і додавати примірники повертаються в джерело даних контролера екрану. Зараз ви можете використовувати value datasources, щоб виконувати JPQL-запити, повертати скалярні і агрегатні результати і відображати їх у стандартних data-aware компонентах.
Value datasources містять примірники особливої сутності KeyValueEntity, що не має визначеної структури. Структуру визначаєте ви самі відразу в джерелі даних, створюючи атрибути згідно з полями, возвращаемыми у вашому запиті.
Bean validation
Механим bean validation дозволяє додавати до сутностей обмеження, які повинні бути перевірені іншими механізмами платформи, такими як візуальні data-aware компоненти, екрани редагування і REST API. Ви також можете валідувати параметри методів сервісу і повертати їх значення.
Bean validation заснований на специфікації JSR 349 — Bean Validation 1.1 та її референсною імплементації: Hibernate Validator.
Cross-Datastore References

Стало можливим створювати відносини між сутностями з різних сховищ даних. Приміром, якщо сутність Order зберігається в головному датасторе, а Customer ‒ в додатковому, Studio запропонує створити атрибут-асоціацію Order.customer з відношенням many-to-one. Цей атрибут буде неперсистентным, а новий додатковий атрибут первинним ключем Customer'а буде автоматично доданий до сутності Order. Тепер досить включити атрибут customer під views і підключити його до візуальних компонентів і їх джерел даних, і відповідний примірник сутності Customer буде зберігатися і завантажуватися з додаткового датастора.
Transaction Listeners
Листнеры транзакцій дозволяють написати код, який буде виконуватися при завершенні транзакції. Їх можна використовувати замість entity listeners, що відстежують події життєвого циклу примірників сутностей, коли потрібно провести обчислення з використанням сутностей різних типів. У цих випадках зручно об'єднати всю логіку в одному місці для кращої продуктивності.
Side Menu

SideMenu — це візуальний компонент, який можна використовувати в головному вікні програми для відображення бічного меню. Багатий API дозволяє програмно додавати елементи меню, динамічно встановлювати іконки та лейбли.
Щоб використовувати сайд-меню у проекті, створіть екран Generic UI в Studio з допомогою шаблону Side menu main window.
Data Grid
Візуальний компонент DataGrid розроблений як альтернатива компонента Table. Він сильно виграє в продуктивності, особливо при роботі з великими наборами даних, і дозволяє відображати динамічний контент різними способами. DataGrid є обгорткою для компонента Grid від Vaadin. Ми підтримуємо всі його рідні фічі, при цьому забезпечуючи сумісність з механізмами CUBA і додавши відсутню функціональність Table, наприклад, угруповання.
Pivot Table

PivotTable — це візуальний компонент для аналізу даних. Він може відображати набір даних як діаграму або зведену таблицю, а також дозволяє користувачеві змінювати структуру даних за допомогою drag-n-drop. PivotTable заснований на JavaScript-бібліотеки github.com/nicolaskruchten/pivottable, його можна оголосити в XML-дескрипторі екрану і підключити до джерела даних. PivotTable поставляється з преміум-доповненням «Діаграми і карти».
Polymer UI

Polymer UI — це новий спосіб швидкого створення front-end порталів з mobile-first responsive веб-інтерфейсом. Ми рекомендуємо використовувати цю технологію для створення адаптивних інтерфейсів, якими будуть користуватися люди з мобільних пристроїв; або ж кастомних зовнішніх порталів. Адміністративний і бек-офіс інтерфейс пропонується створювати як і перш за допомогою Generic UI платформи, як найбільш швидкий і ефективний спосіб розробки.
Polymer UI базується на фреймворку Google Polymer і працює з середнім шаром CUBA через стандартний REST API. Система складання Polymer повністю інтегрована в систему складання проекту. Для створення порталів з Polymer UI платформа надає набір веб-компонентів для роботи з middleware, а також великий і розширюваний набір шаблонів для генерації компонентів, що працюють з сутностями моделі даних.
Висновок
Як бачите, в цьому релізі дійсно багато нових фіч. Крім них, ми втілили ще й ряд пропозицій і ідей спільноти CUBA, розміщених на нашому форум. Список таких змін можна подивитися баг-трекере платформи.
Повний список змін можна знайти у відповідних release notes (англійською):

platform-6.4-release
studio-6.4-release
На завершення ми хочемо подякувати активних учасників нашої спільноти за внесок в розробку платформи і тестування release candidate версій.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.