配置

扩展组件安装完成后,需要创建通知类型、配置通知通道以及为用户分配特定角色。

组件提供两个开箱即用的通知通道:一个是在 UI 界面展示通知消息的站内通道,另一个是发送电子邮件的邮件通道。也可以通过创建 bean 实现 NotificationChannel 接口定义自己的通道。

通知类型

扩展组件中默认不带通知类型。可以在应用程序初始化的时候创建一组 NotificationType 的实例并通过 NotificationTypesRepository 注册。下面的代码可以添加至应用程序中的任何一个 bean 内,比如添加至带 @SpringBootApplication 注解的主应用程序类中:

@PostConstruct
public void postConstruct() {
    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

需要为主视图的 navigationBar 组件添加 notificationIndicator

<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 添加一个可视化组件展示未读通知的数量。

邮件通道

如需通过邮件发送通知,需要在应用程序中添加 电子邮件 扩展组件。然后,可以在 通知编辑 界面选择邮件通道。

收件人邮件地址从 User 对象的属性某个获取。默认情况下,扩展组件会尝试从 email 属性获取。如需使用其他属性,可以在 application.properties 中定义属性名,示例:

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

此外,也可以创建自己的 Spring bean,实现 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 - 发送和阅读角色的组合。