首页 > 解决方案 > 如何将石英作业分配给用户和类别?

问题描述

我正在使用 Spring Boot 和 Quartz 实现 Web 应用程序,以允许注册用户安排通知。这些通知分为两类:短信和电子邮件。我想选择类别短信或电子邮件,然后按类别列出所有预定通知。用户可以编辑已安排的通知、添加新通知和删除选定通知。任务似乎很简单,但我不知道如何将工作分配给用户和类别,因为当我创建新工作时,只能通过工作 ID 和组名来识别工作。请参阅以下代码片段:

private JobDetail createJob(ScheduleEmailDto scheduleEmailDto) {
        JobDataMap jobDataMap = new JobDataMap();
        jobDataMap.put("email", scheduleEmailDto.getEmail());
        jobDataMap.put("subject", scheduleEmailDto.getSubject());
        jobDataMap.put("body", scheduleEmailDto.getBody());

        Integer userId = scheduleEmailDto.getUserId();
        Integer categoryId = scheduleEmailDto.getCategoryId();   

        JobDetail newJob = JobBuilder.newJob(EmailJob.class)
                .withIdentity(UUID.randomUUID().toString(), "group")
                .usingJobData(jobDataMap)
                .storeDurably()
                .build();
        return newJob;
    }

有谁能够指出我如何将新创建的工作分配给用户和类别?所有建议都会非常有帮助。

标签: springdatabase-designscheduled-taskscrudquartz

解决方案


如果您还没有,您可以配置一个JDBCJobStore,它允许将 job_details、触发器等保存在几个数据库表中并从 DB 处理它们。

有关详细信息,请参阅http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-09.html 。

那时,您可以轻松创建一个附加表,该表可以将用户和类别链接到作业并通过 DB 管理它们。


推荐阅读