2010-10-11 4 views
1

Je voudrais exécuter des tâches cron basées sur une entité, Appelons cette entité TaskEntityPlanification des tâches avec le printemps avec des données Cron stockées dans des entités

Le TaskEntity peut avoir des infos sur ce qui doit être fait (domaine spécifique) et quand. La lorsqu'une partie peut être spécifiée de manière à base de Cron

Dans un premier temps je pensais que de regarder en quartz, mais je ne pouvais pas trouver des exemples clairs

Je ne sais pas comment procéder d'ici. Je veux juste donner à l'utilisateur final la possibilité d'ajouter autant de tâches qu'il le souhaite à l'exécution. Si l'utilisateur final modifie une tâche (c'est-à-dire la désactive, la supprime ou change l'heure), il doit se comporter en conséquence.

+0

Ne faites pas de «vraies» questions wiki communautaire. Cela empêchera les gens de répondre aux questions, car ils n'obtiennent pas le score total pour leurs réponses. –

Répondre

0

Je pense que la solution la plus simple consiste à utiliser un planificateur.

Au démarrage, lisez toutes vos entités et calculez l'heure de début d'une tâche.

Lorsque ce délai est atteint, déclenchez la tâche, calculez l'heure de départ suivante et mettez-vous en veille. Vous devez écouter les mises à jour de vos entités pour recalculer l'heure de début suivante et réinitialiser le planificateur si nécessaire.

Vous pouvez utiliser org.quartz.Scheduler pour cela. Consultez la documentation pour plus de détails: http://www.quartz-scheduler.org/docs/index.html

Cela ressemblera à quelque chose comme ceci. (Votre travail doit implémenter l'interface org.quartz.Job)

Trigger trigger = new SimpleTrigger("jobname", "scheduler group name", dateTime); 
scheduler.scheduleJob(jobDetail, trigger); 
Questions connexes