Iwo Kucharski
Iwo Kucharski

Reputation: 3825

Schedule job using cron expression from class field

I tried to find it, but without results. I'd like to have object having path to bash script and cron expression specifying when to run it. It's SpringBoot project. I see it like this:

public class TestScript {

    private String cronExpression;
    private String pathToFile;

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

Is it possible to do? Please guide me even a little if you can.

Upvotes: 0

Views: 301

Answers (1)

Iwo Kucharski
Iwo Kucharski

Reputation: 3825

Ok, I managed to make my custom service that dynamically creates jobs:

@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 class implements org.quartz.Job and I use quartz library version 2.2.1

Upvotes: 1

Related Questions