/// <summary> /// Executes workflow the job /// </summary> /// <param name="context">Job context.</param> System.Threading.Tasks.Task IJob.Execute(IJobExecutionContext context) { Workflow workflow = (Workflow)context.JobDetail.JobDataMap.Get("workflow"); workflow.Start(); System.Threading.Tasks.Task task = new System.Threading.Tasks.Task(() => { //workflow.Start(); }); return(task); }
public void StartWorkflow(int workflowId) { Workflow wf = GetWorkflow(workflowId); if (wf == null) { Logger.ErrorFormat("Workflow {0} not found.", workflowId); } else { if (wf.IsEnabled) { wf.Start(); } } }
private void ScheduleWorkflow(Workflow wf) { if (wf.IsEnabled) { if (wf.LaunchType == LaunchType.Startup) { wf.Start(); } else if (wf.LaunchType == LaunchType.Periodic) { Action <object> callback = o => { var workflow = o as Workflow; if (workflow != null && !workflow.IsRunning) { workflow.Start(); } }; var timer = new WexflowTimer(new TimerCallback(callback), wf, wf.Period); if (!_wexflowTimers.ContainsKey(wf.Id)) { _wexflowTimers.Add(wf.Id, new List <WexflowTimer> { timer }); } else { foreach (var wt in _wexflowTimers[wf.Id]) { wt.Stop(); } _wexflowTimers[wf.Id].Add(timer); } timer.Start(); } } }
public void ScheduleWorkflow(Workflow wf) { if (wf.IsEnabled) { if (wf.LaunchType == LaunchType.Startup) { wf.Start(); } else if (wf.LaunchType == LaunchType.Periodic) { Action <object> callback = o => { var workflow = o as Workflow; if (workflow != null && !workflow.IsRunning) { workflow.Start(); } }; var timer = new WexflowTimer(new TimerCallback(callback), wf, wf.Period); timer.Start(); } } }
private void ScheduleWorkflow(Workflow wf) { if (wf.IsEnabled) { if (wf.LaunchType == LaunchType.Startup) { wf.Start(); } else if (wf.LaunchType == LaunchType.Periodic) { IDictionary <string, object> map = new Dictionary <string, object>(); map.Add("workflow", wf); string jobIdentity = "Workflow Job " + wf.Id; IJobDetail jobDetail = JobBuilder.Create <WorkflowJob>() .WithIdentity(jobIdentity) .SetJobData(new JobDataMap(map)) .Build(); ITrigger trigger = TriggerBuilder.Create() .ForJob(jobDetail) .WithSimpleSchedule(x => x.WithInterval(wf.Period).RepeatForever()) .WithIdentity("Workflow Trigger " + wf.Id) .StartNow() .Build(); var jobKey = new JobKey(jobIdentity); if (QuartzScheduler.CheckExists(jobKey)) { QuartzScheduler.DeleteJob(jobKey); } QuartzScheduler.ScheduleJob(jobDetail, trigger); } else if (wf.LaunchType == LaunchType.Cron) { IDictionary <string, object> map = new Dictionary <string, object>(); map.Add("workflow", wf); string jobIdentity = "Workflow Job " + wf.Id; IJobDetail jobDetail = JobBuilder.Create <WorkflowJob>() .WithIdentity(jobIdentity) .SetJobData(new JobDataMap(map)) .Build(); ITrigger trigger = TriggerBuilder.Create() .ForJob(jobDetail) .WithCronSchedule(wf.CronExpression) .WithIdentity("Workflow Trigger " + wf.Id) .StartNow() .Build(); var jobKey = new JobKey(jobIdentity); if (QuartzScheduler.CheckExists(jobKey)) { QuartzScheduler.DeleteJob(jobKey); } QuartzScheduler.ScheduleJob(jobDetail, trigger); } } }
/// <summary> /// Executes workflow the job /// </summary> /// <param name="context">Job context.</param> public void Execute(IJobExecutionContext context) { Workflow workflow = (Workflow)context.JobDetail.JobDataMap.Get("workflow"); workflow.Start(); }
private void ScheduleWorkflow(Workflow wf) { try { if (wf.IsEnabled) { if (wf.LaunchType == LaunchType.Startup) { wf.Start(); } else if (wf.LaunchType == LaunchType.Periodic) { IDictionary <string, object> map = new Dictionary <string, object> { { "workflow", wf } }; string jobIdentity = "Workflow Job " + wf.Id; IJobDetail jobDetail = JobBuilder.Create <WorkflowJob>() .WithIdentity(jobIdentity) .SetJobData(new JobDataMap(map)) .Build(); ITrigger trigger = TriggerBuilder.Create() .ForJob(jobDetail) .WithSimpleSchedule(x => x.WithInterval(wf.Period).RepeatForever()) .WithIdentity("Workflow Trigger " + wf.Id) .StartNow() .Build(); var jobKey = new JobKey(jobIdentity); if (QuartzScheduler.CheckExists(jobKey).Result) { QuartzScheduler.DeleteJob(jobKey); } QuartzScheduler.ScheduleJob(jobDetail, trigger).Wait(); } else if (wf.LaunchType == LaunchType.Cron) { IDictionary <string, object> map = new Dictionary <string, object> { { "workflow", wf } }; string jobIdentity = "Workflow Job " + wf.Id; IJobDetail jobDetail = JobBuilder.Create <WorkflowJob>() .WithIdentity(jobIdentity) .SetJobData(new JobDataMap(map)) .Build(); ITrigger trigger = TriggerBuilder.Create() .ForJob(jobDetail) .WithCronSchedule(wf.CronExpression) .WithIdentity("Workflow Trigger " + wf.Id) .StartNow() .Build(); var jobKey = new JobKey(jobIdentity); if (QuartzScheduler.CheckExists(jobKey).Result) { QuartzScheduler.DeleteJob(jobKey); } QuartzScheduler.ScheduleJob(jobDetail, trigger).Wait(); } } } catch (Exception e) { Logger.ErrorFormat("An error occured while scheduling the workflow {0}: ", e, wf); } }