\r
IJobStep createJobStep(String stepUnitName) throws Exception;\r
\r
- ScheduledJob createScheduledJob(BasicDBObject jobJSON);\r
+ ScheduledJob createScheduledJob(BasicDBObject jobJSON, IJobEngine jobEngine);\r
\r
Map<String, IJobStepExecutor> getExecutors();\r
\r
Map<String, IProgram> getPrograms();\r
\r
- List<BasicDBObject> getScheduleDescriptors();\r
-\r
- Map<String, ScheduledJob> getSchedules();\r
+ Map<String, BasicDBObject> getSchedules();\r
\r
List<JobTemplate> getTemplates();\r
\r
import org.apache.logging.log4j.Logger;
import com.ibm.nosql.json.api.BasicDBList;
+import com.ibm.nosql.json.api.BasicDBObject;
import user.commons.Job;
import user.commons.JobStatus;
@Override
public ScheduledJob getScheduledJob(String template) {
- Map<String, ScheduledJob> schedules = jobEngineConfiguration.getSchedules();
- ScheduledJob scheduledJob = schedules.get(template);
- if (scheduledJob == null)
- throw new NullPointerException("Missing template: " + template);
- return scheduledJob;
+ Map<String, BasicDBObject> schedules = jobEngineConfiguration.getSchedules();
+ BasicDBObject schedule = schedules.get(template);
+ if (schedule == null)
+ return null;
+ return jobEngineConfiguration.createScheduledJob(schedule, this);
}
@Override
private static IConfiguration systemConfig;\r
private final Map<String, IJobStepExecutor> executors = new LinkedHashMap<String, IJobStepExecutor>();\r
private final Map<String, IProgram> programs = new LinkedHashMap<String, IProgram>();\r
- private final Map<String, ScheduledJob> schedules = new LinkedHashMap<String, ScheduledJob>();\r
private final List<JobTemplate> templates = Collections.synchronizedList(new ArrayList<JobTemplate>());\r
- private final List<BasicDBObject> scheduleDescriptors = Collections.synchronizedList(new ArrayList<BasicDBObject>());\r
+ private final Map<String, BasicDBObject> schedules = new LinkedHashMap<String, BasicDBObject>();\r
\r
private URLClassLoader stepsClassLoader = null;\r
\r
}\r
\r
@Override\r
- public ScheduledJob createScheduledJob(BasicDBObject jobJSON) {\r
+ public ScheduledJob createScheduledJob(BasicDBObject jobJSON, IJobEngine jobEngine) {\r
ScheduledJob sj = new ScheduledJob();\r
String name = jobJSON.getString("name");\r
String template = jobJSON.getString("template");\r
}\r
\r
@Override\r
- public List<BasicDBObject> getScheduleDescriptors() {\r
- return scheduleDescriptors;\r
- }\r
-\r
- @Override\r
- public Map<String, ScheduledJob> getSchedules() {\r
+ public Map<String, BasicDBObject> getSchedules() {\r
return schedules;\r
}\r
\r
\r
@Override\r
public void loadSchedules() throws Exception {\r
- getSchedules().clear();\r
- getScheduleDescriptors().clear();\r
+ schedules.clear();\r
String configFilePath = systemConfig.getConfig(JobEngineConfiguration.CONF_SCHEDULES);\r
logger.info("Loading scheduler configuration file {}", configFilePath);\r
String jsonConfig = new String(Files.readAllBytes(Paths.get(configFilePath)));\r
BasicDBObject dbo = (BasicDBObject) JSONUtil.jsonToDbObject(jsonConfig);\r
- BasicDBList scheduleJobs = (BasicDBList) dbo.get("joblist");\r
- for (int c = 0; c < scheduleJobs.size(); c++) {\r
- BasicDBObject sjob = (BasicDBObject) scheduleJobs.get(c);\r
- ScheduledJob sj = null;\r
- try {\r
- sj = createScheduledJob(sjob);\r
- getScheduleDescriptors().add(sjob);\r
- } catch (Exception e) {\r
- logger.error("Error creating job: {}", sjob);\r
- }\r
- //skip inactive jobs\r
- if (sj.isActive())\r
- getSchedules().put(sj.getTemplateName(), sj);\r
-\r
- }\r
+ BasicDBList scheduleJobs = NoSQLUtils.asDBList(dbo, "joblist");\r
+ scheduleJobs.forEach(o -> {\r
+ BasicDBObject j = (BasicDBObject) o;\r
+ schedules.put(j.getString("template"), j);\r
+ });\r
}\r
\r
private void loadTemplate(Path config) {\r
import org.quartz.impl.StdSchedulerFactory;\r
import org.quartz.impl.matchers.KeyMatcher;\r
\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobEngineConfiguration;\r
\r
}\r
}\r
\r
+ private void scheduleJobs() {\r
+ IJobEngineConfiguration jobEngineConfiguration = jobEngine.getJobEngineConfiguration();\r
+ Map<String, BasicDBObject> schedules = jobEngineConfiguration.getSchedules();\r
+ for (BasicDBObject job : schedules.values()) {\r
+ ScheduledJob scheduledJob = null;\r
+ try {\r
+ scheduledJob = jobEngineConfiguration.createScheduledJob(job, jobEngine);\r
+ if (scheduledJob.isActive())\r
+ schedule(scheduledJob);\r
+ } catch (Exception e) {\r
+ logger.error("Error creating job: {}", job.getString("template"));\r
+ }\r
+ }\r
+ }\r
+\r
public void shutdown() {\r
List<JobExecutionContext> jobs;\r
try {\r
public void startup() throws Exception {\r
scheduler = StdSchedulerFactory.getDefaultScheduler();\r
scheduler.start();\r
- IJobEngineConfiguration jobEngineConfiguration = jobEngine.getJobEngineConfiguration();\r
- Map<String, ScheduledJob> schedules = jobEngineConfiguration.getSchedules();\r
- for (ScheduledJob job : schedules.values())\r
- schedule(job);\r
+ scheduleJobs();\r
}\r
\r
public void unregisterJob(ScheduledJob job) throws SchedulerException {\r
parameters.put(TARGETSTORENAME, stores.getSelection().iterator().next().getName());\r
parameters.put(RECIPIENT, email);\r
parameters.put(BASKET, new ArrayList<ArchivedMedia>(getBasketItems()));\r
- jobEngine.submit(JOBTEMPLATE, RESTORE, parameters);\r
+\r
+ scheduledJob.doManualJob();\r
\r
menuModel.clearBasket();\r
wndRetrieveBatch.detach();\r
public void execute() {\r
if (selectedJob == null)\r
return;\r
-\r
- ScheduledJob scheduledJob = jobEngine.getScheduledJob(selectedJob.getString("template"));\r
- scheduledJob.setJobEngine(jobEngine);\r
+ String template = selectedJob.getString("template");\r
+ ScheduledJob scheduledJob = jobEngine.getScheduledJob(template);\r
try {\r
scheduledJob.doManualJob();\r
} catch (Exception e) {\r
@Init\r
public void init() {\r
this.jobEngine = (IJobEngine) Executions.getCurrent().getArg().get("jobEngine");\r
- jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getScheduleDescriptors());\r
+ jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getSchedules().values());\r
}\r
\r
@Command\r
SchedulerService scheduler = jobEngine.getScheduler();\r
try {\r
scheduler.restart();\r
- jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getScheduleDescriptors());\r
+ jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getSchedules().values());\r
} catch (Exception e) {\r
logger.info("Scheduler reload error. System message: {}", e.getMessage());\r
}\r