配置

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

组件提供两个开箱即用的通知通道:一个是在 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=Warn

站内通道

为了展示站内通道的消息,需要为界面添加一个通知提示,下面是在带有侧边菜单的主界面添加通知提示的示例:

<window xmlns="http://jmix.io/schema/ui/window"
        xmlns:ntf="http://jmix.io/schema/notifications/ui"> (1)
    <layout>
        <cssLayout id="horizontalWrap"
                   stylename="jmix-drawer-layout">
            <drawer id="drawer" expandOnHover="true">
                <!-- ... -->
                <ntf:notificationsIndicator id="ntfIndicator"/> (2)
1 在根元素声明 notifications 命名空间。
2 添加一个可视化组件用于展示未读通知的数量。

邮件通道

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

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

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

此外,也可以创建自己的 Spring bean,实现 UserEmailResolver 接口,用于更复杂的用户电子邮件地址获取逻辑,示例:

@Component("sample_GetEmailService")
public class GetEmailService implements UserEmailResolver {

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

安全角色

如需处理通知,用户需要具有下列角色之一:

  • Notifications: In-app notifications user - 用户可以查看收到的通知。

  • Notifications: administrator - 用户可以查看、创建、并发送通知。