Настройка

После установки дополнения в вашем приложении создайте типы уведомлений, настройте каналы уведомлений и назначьте роли пользователям.

Дополнение предоставляет два канала уведомлений из коробки: встроенный канал показывает уведомления в пользовательском интерфейсе приложения, а email-канал отправляет электронные письма. Вы можете определить собственные каналы, создавая бины, реализующие интерфейс NotificationChannel.

Типы уведомлений

Дополнение не предоставляет типы уведомлений по умолчанию. Вам следует создать набор экземпляров NotificationType и зарегистрировать их через NotificationTypesRepository при инициализации приложения. Следующий код можно добавить в любой бин приложения, например, в главный класс приложения, аннотированный @SpringBootApplication:

@Autowired
private NotificationTypesRepository notificationTypesRepository;

@EventListener
public void onApplicationContextRefreshed(final ContextRefreshedEvent event) {
    notificationTypesRepository.registerTypes(
            new NotificationType("info", "INFO_CIRCLE"), (1)
            new NotificationType("warn", "WARNING")
    );
}
1 Создает тип уведомления с уникальным именем info и иконкой INFO_CIRCLE.

Локализованные сообщения для типов уведомлений можно добавить по следующему шаблону:

io.jmix.notifications/NotificationType.<name>=<value>

В случае примера выше:

io.jmix.notifications/NotificationType.info=Info
io.jmix.notifications/NotificationType.warn=Warning

Встроенный канал

Чтобы показывать уведомления, отправленные через встроенный канал, добавьте компонент индикатора уведомлений. Например, вы можете разместить его в правом верхнем углу:

ntf indicator

Для этого добавьте notificationIndicator внутри компонента navigationBar главного экрана:

<mainView xmlns="http://jmix.io/schema/flowui/main-view" xmlns:ntf="http://jmix.io/schema/notifications/ui"
          title="msg://MainView.title"> (1)
    <!-- ... -->
    <appLayout>
        <navigationBar>
            <!-- ... -->
            <ntf:notificationsIndicator id="ntfIndicator" classNames="me-m"/> (2)
        </navigationBar>
1 Объявляет пространство имен notifications в корневом элементе.
2 Добавляет визуальный компонент с счетчиком непрочитанных уведомлений.

Email-канал

Чтобы отправлять уведомления по электронной почте, добавьте в приложение дополнение Email. После этого вы сможете выбирать email-канал в окне редактора уведомлений.

Адрес электронной почты получателя берется из свойства объекта пользователя. По умолчанию дополнение предполагает, что email хранится в свойстве email. Если вы хотите использовать другое свойство, определите его имя в файле application.properties, например:

jmix.notifications.user-email-property-name=emailAddress

Кроме того, вы можете создать Spring-бин, реализующий интерфейс UserEmailResolver, чтобы определить более сложную логику получения адреса электронной почты пользователя, например:

@Component
public class GetEmailService implements UserEmailResolver {

    @Nullable
    @Override
    public String resolveEmail(UserDetails user) {
        return user.getUsername()+"company.com";
    }
}

Роли безопасности

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

  • Notifications: administrator – пользователь с полным доступом к уведомлениям.

  • Notifications: In-app notifications reader – пользователь, который получает уведомления, отправленные через встроенный канал, и может читать их в специальном диалоге.

  • Notifications: sender – пользователь может создавать и отправлять уведомления.

  • Notifications: combines sender and reader – объединяет роли отправителя и читателя.