2014-11-09 2 views
0

У меня есть веб-приложение (grails 2.3.5, плагин для кварца) с несколькими пользователями. Теперь я хочу, чтобы мои пользователи могли планировать задания с помощью кварца. Интересно, какой лучший подход - отделить триггеры от одного пользователя от триггеров от другого пользователя.quartz grails multi-entity окружающая среда

например. предоставить список всех запланированных задач для данного пользователя

Есть ли какие-либо рекомендации, как сделать это дифференцирование?

ответ

1

Реализация какой-либо схемы для обозначения ваших триггеров, вероятно, будет лучшим подходом здесь. Таким образом, вы можете запросить триггеры для задания и отфильтровать их по типу соответствия шаблону.

Это действительно зависит от вас, чтобы решить, как вы хотите управлять видимостью и управлением триггерами. Использование имени триггера, по моему мнению, является наиболее логичным подходом.

В качестве альтернативы вы можете создать фреймворк (например, модель домена), который связывает триггеры с пользователем.

Update

В свете содержания Вашего комментария я хотел бы предложить вам взглянуть на то, как вы можете динамически добавить триггер в существующую работу. Это всего лишь пример, который поможет вам продвинуться дальше по пути достижения поставленной вами цели.

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) 
+0

Когда я смотрю на таблицы из кварца в своей базе данных, я вижу таблицу QUARTZ_CALENDER. Можно ли использовать один календар для пользователя и сделать разделение таким образом? Просто догадка. – user3675091

+0

Вы не должны изменять данные резервного копирования для Quartz напрямую через базу данных. Это внутреннее к кварту. Если да, я не знаю, какие результаты будут. Как правило, вы захотите использовать предоставленные кварцем сервисы и фабрики для добавления/удаления/приостановки/возобновления триггеров, связанных с заданиями, и позволить ему управлять самим хранилищем данных. Я переоценил ваше понимание кварца, и поэтому мой ответ предполагает, что вы уже знали, как управлять динамически запланированными рабочими местами, но искали советы о том, как их сегментировать. –

+0

Я добавил дополнительную информацию в ответ, который может помочь вам в дальнейшем в этом направлении. –

Смежные вопросы