import java.util.List;\r
import java.util.Map;\r
\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
import user.jobengine.server.ast.JobTemplate;\r
import user.jobengine.server.scheduler.ScheduledJob;\r
import user.jobengine.server.steps.IJobStep;\r
\r
IJobStep createJobStep(String stepUnitName) throws Exception;\r
\r
+ ScheduledJob createScheduledJob(BasicDBObject jobJSON);\r
+\r
Map<String, IJobStepExecutor> getExecutors();\r
\r
Map<String, IProgram> getPrograms();\r
\r
+ List<BasicDBObject> getScheduleDescriptors();\r
+\r
Map<String, ScheduledJob> getSchedules();\r
\r
List<JobTemplate> getTemplates();\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
\r
private URLClassLoader stepsClassLoader = null;\r
\r
return result;\r
}\r
\r
- private ScheduledJob createScheduledJob(BasicDBObject jobJSON) {\r
+ @Override\r
+ public ScheduledJob createScheduledJob(BasicDBObject jobJSON) {\r
ScheduledJob sj = new ScheduledJob();\r
String name = jobJSON.getString("name");\r
String template = jobJSON.getString("template");\r
return programs;\r
}\r
\r
+ @Override\r
+ public List<BasicDBObject> getScheduleDescriptors() {\r
+ return scheduleDescriptors;\r
+ }\r
+\r
@Override\r
public Map<String, ScheduledJob> getSchedules() {\r
return schedules;\r
@Override\r
public void loadSchedules() throws Exception {\r
getSchedules().clear();\r
+ getScheduleDescriptors().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
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
import org.quartz.impl.StdSchedulerFactory;\r
import org.quartz.impl.matchers.KeyMatcher;\r
\r
-import com.ibm.nosql.json.api.BasicDBList;\r
-\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobEngineConfiguration;\r
\r
\r
private Scheduler scheduler = null;\r
private IJobEngine jobEngine = null;\r
- private BasicDBList scheduleJobs;\r
\r
public SchedulerService(IJobEngine jobEngine) {\r
// http://www.quartz-scheduler.org/documentation/quartz-2.2.x/configuration/\r
return result;\r
}\r
\r
- public BasicDBList getScheduleJobs() {\r
- return scheduleJobs;\r
- }\r
-\r
private void interruptJobs(List<JobExecutionContext> jobs) throws UnableToInterruptJobException {\r
for (JobExecutionContext context : jobs) {\r
String instanceID = context.getFireInstanceId();\r
\r
import com.ibm.nosql.json.api.BasicDBObject;\r
\r
-import user.commons.nosql.NoSQLUtils;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.scheduler.ScheduledJob;\r
import user.jobengine.server.scheduler.SchedulerService;\r
if (selectedJob == null)\r
return;\r
\r
- ScheduledJob scheduledJob = jobEngine.getScheduledJob("");\r
+ ScheduledJob scheduledJob = jobEngine.getScheduledJob(selectedJob.getString("template"));\r
scheduledJob.setJobEngine(jobEngine);\r
try {\r
scheduledJob.doManualJob();\r
@Init\r
public void init() {\r
this.jobEngine = (IJobEngine) Executions.getCurrent().getArg().get("jobEngine");\r
- jobs = new ListModelList<>(NoSQLUtils.asList(jobEngine.getScheduler().getScheduleJobs()));\r
+ jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getScheduleDescriptors());\r
}\r
\r
@Command\r
SchedulerService scheduler = jobEngine.getScheduler();\r
try {\r
scheduler.restart();\r
- jobs = new ListModelList<>(NoSQLUtils.asList(scheduler.getScheduleJobs()));\r
+ jobs = new ListModelList<>(jobEngine.getJobEngineConfiguration().getScheduleDescriptors());\r
} catch (Exception e) {\r
logger.info("Scheduler reload error. System message: {}", e.getMessage());\r
}\r