public void runAdHoc(Long id, String windowStartIsoString, String windowEndIsoString) throws Exception { synchronized (sync) { AnomalyFunctionSpec spec = specDAO.findById(id); if (spec == null) { throw new IllegalArgumentException("No function with id " + id); } AnomalyFunction anomalyFunction = anomalyFunctionFactory.fromSpec(spec); String triggerKey = String.format("ad_hoc_anomaly_function_trigger_%d", spec.getId()); Trigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).startNow().build(); String jobKey = String.format("ad_hoc_anomaly_function_job_%d", spec.getId()); buildAndScheduleJob( jobKey, trigger, anomalyFunction, spec, windowStartIsoString, windowEndIsoString); } }
public void start(Long id) throws Exception { synchronized (sync) { AnomalyFunctionSpec spec = specDAO.findById(id); if (spec == null) { throw new IllegalArgumentException("No function with id " + id); } AnomalyFunction anomalyFunction = anomalyFunctionFactory.fromSpec(spec); String triggerKey = String.format("scheduled_anomaly_function_trigger_%d", spec.getId()); CronTrigger trigger = TriggerBuilder.newTrigger() .withIdentity(triggerKey) .withSchedule(CronScheduleBuilder.cronSchedule(spec.getCron())) .build(); String jobKey = String.format("scheduled_anomaly_function_job_%d", spec.getId()); scheduledJobKeys.put(id, jobKey); buildAndScheduleJob(jobKey, trigger, anomalyFunction, spec, null, null); // use schedule time // to determine // start/end } }