【发布时间】:2015-01-05 19:32:41
【问题描述】:
我有一个有多个用户的网络应用程序(grails 2.3.5,quartz 插件)。现在我希望我的用户可以使用石英安排工作。我想知道最好的方法是将来自一个用户的触发器与来自另一个用户的触发器分开。
例如提供给定用户的所有计划任务列表
是否有任何建议如何进行这种区分?
【问题讨论】:
标签: grails quartz-scheduler grails-plugin
我有一个有多个用户的网络应用程序(grails 2.3.5,quartz 插件)。现在我希望我的用户可以使用石英安排工作。我想知道最好的方法是将来自一个用户的触发器与来自另一个用户的触发器分开。
例如提供给定用户的所有计划任务列表
是否有任何建议如何进行这种区分?
【问题讨论】:
标签: grails quartz-scheduler grails-plugin
实施一些命名触发器的方案可能是这里最好的方法。这样您就可以查询作业的触发器并通过某种匹配模式对其进行过滤。
您可以自行决定如何管理触发器的可见性和管理。在我看来,使用触发器名称似乎是最合乎逻辑的方法。
或者,您可以构建一个将触发器与用户相关联的框架(例如域模型)。
更新
根据您评论的内容,我想向您介绍如何为现有工作动态添加触发器。这只是一个示例,可帮助您在实现目标的道路上走得更远。
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)
【讨论】: