Skip to main content

Release notes 7.21

· 3 min read

Друзья, мы выпустили крупный релиз N2O Framework 7.21.0.

Источники данных#

В N2O 7.21 появился новый элемент <datasource>. Это источник данных страницы.

В версии 7.19 мы уже ввели атрибут datasource у виджетов. Он задавал имя виртуальной модели данных, на которую ссылается виджет. Сейчас же этот атрибут становится ссылкой на источник данных, который создается в элементе <datasources> на странице:

<page xmlns="http://n2oapp.net/framework/config/schema/page-4.0">    <datasources>        <!-- Источники данных страницы -->        <datasource id="persons"                    query-id="persons"/>    </datasources></page>

Это означает, что виджеты больше не отвечают за получение данных. За получение данных отвечают источники данных.

Несколько виджетов могут ссылаться на один источник данных. Это дает следующие преимущества:

  • Получение данных происходит один раз и сразу для всех
  • Если форма меняет свои данные, то эти изменения доступны сразу всем формам с тем же источником данных
  • Данные сохраняются не у формы, а у источника данных, а значит все формы можно сохранить одной кнопкой
  • Валидации собираются со всех форм одного источника данных и проверяются при отправке на сервер

Больше нет ссылок на виджет, таких как widget-id или ref-widget-id, которые на самом деле задавали не виджет, а его модель. Вместо этого используется атрибут datasource. Например:

<button label="Просмотр">    <show-modal page-id="personCard" route="/:person_id/card">        <params>            <path-param name="person_id"                        value="{id}"                        datasorurce="persons"                        model="resolve"/>        </params>    </show-modal></button>

Так же больше нет ссылок на выборку query-id и объект object-id в виджетах. Они перенесены в источники данных.

Это довольно существенные изменения, которые привели к созданию новых мажорных версий XSD схем: page-4.0, region-3.0, widget-5.0, fieldset-5.0, control-3.0, cell-3.0. Обратная совместимость старых версий схем сохранилась, хотя и есть некоторые нарушения.

Мы будем очень рады, если вы попробуете новое api и дадите нам обратную связь!

Stomp и Websocket#

Источники данных появились не только на странице, но и в структуре приложения *.application.xml:

<?xml version='1.0' encoding='UTF-8'?><application xmlns="http://n2oapp.net/framework/config/schema/application-2.0">    <datasources>        <!-- Источники данных приложения -->        <stomp-datasource id="notifCount"                          destination="/badge"/>    </datasources></application>

Источники данных могут работать не только с выборкой, но и через websocket'ы <stomp-datasource>. В качестве протокола взаимодействия с websocket мы используем stomp.

С помощью источников данных приложения можно будет получать данные, которые нужны на любой странице. Эти данные уже сейчас можно применить в меню навигации в качестве счетчиков:

<nav>    <menu-item id="notif"               datasource="notifCount"               icon="fa fa-bell"               badge="{count}"               badge-color="{color}">        <open-page  page-id="test" route="/test"/>    </menu-item></nav>

img.png

Со стороны сервера для передачи stomp сообщений на клиент через websocket необходимо использовать SimpMessagingTemplate:

    @Autowired    private SimpMessagingTemplate messagingTemplate;
    ...
    BadgeMessage message = new BadgeMessage();    message.setCount(1);    message.setColor("danger");    messagingTemplate.convertAndSendToUser(session.getId(), "badge", message);

Подробнее про stomp источники данных можно почитать здесь.

Open-page в новой вкладке#

Открывать страницы с хлебными крошками теперь можно в отдельной вкладке. Для этого достаточно просто указать атрибут target:

<button label="Открыть">    <open-page page-id="page"               target="newWindow"/></button>

Полезные ссылки#