2016-07-26 29 views
0

Ich habe versucht, es zu finden, aber ohne Ergebnisse. Ich hätte gerne ein Objekt mit Pfad zum bash-Skript und Cron-Ausdruck, der angibt, wann es ausgeführt werden soll. Es ist SpringBoot-Projekt. Ich sehe es so:Zeitplan Job mit Cron Ausdruck aus Klassenfeld

public class TestScript { 

    private String cronExpression; 
    private String pathToFile; 

    public void execute() { 
     // either it's @Scheduled or execute another way 
    } 
} 

Ist es möglich zu tun? Bitte führe mich auch ein bisschen, wenn du kannst.

Antwort

1

Ok, konnte ich meine benutzerdefinierten Dienst machen, die dynamisch schafft Arbeitsplätze:

@Service 
public class DynamicJob { 

    public void schedule(TestScript testScript) { 
     try { 
      JobDetail job = JobBuilder.newJob(TestScript.class) 
        .withIdentity(testScript.getName(), "default group") 
        .build(); 

      Trigger trigger = TriggerBuilder.newTrigger() 
        .withIdentity(testScript.getName().concat(" trigger"), "groupAll") 
        .withSchedule(CronScheduleBuilder.cronSchedule(testScript.getCronExpression())) 
        .build(); 

      Scheduler scheduler = new StdSchedulerFactory().getScheduler(); 
      scheduler.start(); 
      scheduler.scheduleJob(job, trigger); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 

TestScript Klasse implementiert org.quartz.Job und ich verwende quartz Bibliothek Version 2.2.1