石英粒多实体环境

时间:2014-11-09 11:49:39

标签: grails quartz-scheduler grails-plugin

我有一个包含多个用户的网络应用程序(grails 2.3.5,quartz插件)。现在我希望我的用户可以使用quartz安排作业。我想知道最好的方法是将一个用户的触发器与另一个用户的触发器分开。

e.g。提供给定用户的所有计划任务的列表

是否有任何建议如何区分?

1 个答案:

答案 0 :(得分:1)

实现一些命名触发器的方案可能是最好的方法。这样,您可以查询作业的触发器,并通过某种匹配模式对其进行过滤。

由您决定如何管理触发器的可见性和管理,这取决于您。在我看来,使用触发器名称似乎是最合乎逻辑的方法。

或者,您可以构建一个框架(例如,域模型),将触发器与用户相关联。

<强>更新

根据您评论的内容,我想让您了解如何动态地为现有作业添加触发器。这只是一个例子,可以帮助您进一步完成目标。

import org.quartz.CronScheduleBuilder
import org.quartz.Trigger
import org.quartz.TriggerBuilder
...
def jobManagerService

String cronExpression = ... // whatever the expression is

Trigger trigger = TriggerBuilder.newTrigger()
    .withIdentity("UniqueNameOfYourTriggerHere-UserId")
    .withPriority(6)
    .forJob("com.example.package.JobClassNameJob", "groupName")
    .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
    .build()

// if you need job parameters
trigger.jobDataMap.putAll([param1: 'example'])

jobManagerService.getQuartzScheduler().scheduleJob(trigger)