Example #1
0
        /// <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);
        }
Example #2
0
        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();
                }
            }
        }
Example #3
0
        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();
                }
            }
        }
Example #4
0
        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();
                }
            }
        }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        /// <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();
        }
Example #7
0
        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);
            }
        }