Beispiel #1
0
        public void TaskComplete(string TaskId)
        {
            lock (_taskServiceLock)
            {
                Log.Info("Задача " + TaskId + ", получено сообщение о завершении");

                const int ATTEMPTS_MAX = 3;
                bool      success      = false;
                var       rnd          = new Random();

                for (int i = 0; i < ATTEMPTS_MAX && !success; i++)
                {
                    try
                    {
                        Task task = Task.Load(TaskId);
                        Log.Stats("T_clust_fin", task.SequenceId, task.TaskId, DateTime.Now);

                        task.Complete();
                        success = true;
                        task.Save();

                        Log.Stats("T_task_fin", task.SequenceId, task.TaskId, DateTime.Now);

                        if (task.SequenceId > 0)
                        {
                            var sequenceService = new SequenceService();
                            sequenceService.StepFinishedCallback(task.SequenceId);
                        }
                    }
                    catch (Exception e)
                    {
                        Log.Error(String.Format(
                                      "Задача {2}, возникло исключение при завершении\n{0}\n{1}", e.Message, e.StackTrace, TaskId
                                      ));
                    }


                    Thread.Sleep(rnd.Next(2 * 1000), 10 * 1000);
                }

                if (!success)
                {
                    TaskFail(TaskId);
                }
            }
        }
Beispiel #2
0
        public void TaskFail(string TaskId)
        {
            lock (_taskServiceLock)
            {
                try
                {
                    Task task = Task.Load(TaskId);
                    task.Fail();
                    task.Save();

                    var sequenceService = new SequenceService();
                    sequenceService.StepFinishedCallback(task.SequenceId);
                }
                catch (Exception e)
                {
                    Log.Error(String.Format(
                                  "Задача {2}, возникло исключение при завершении со статусом Fail\n{0}\n{1}", e.Message, e.StackTrace, TaskId
                                  ));
                }
            }
        }
Beispiel #3
0
        public void TaskAbort(string TaskId)
        {
            lock (_taskServiceLock)
            {
                try
                {
                    Task task = Task.Load(TaskId);
                    task.Abort();
                    task.Save();

                    var sequenceService = new SequenceService();
                    sequenceService.StepFinishedCallback(task.SequenceId);
                }
                catch (Exception e)
                {
                    Log.Error(String.Format(
                                  "Задача {2}, возникло исключение при попытке принудительного завершения\n{0}\n{1}", e.Message, e.StackTrace, TaskId
                                  ));
                }
            }
        }
Beispiel #4
0
        public void TaskAbort(string TaskId)
        {
            lock (_taskServiceLock)
            {
                try
                {
                    Task task = Task.Load(TaskId);
                    task.Abort();
                    task.Save();

                    var sequenceService = new SequenceService();
                    sequenceService.StepFinishedCallback(task.SequenceId);
                }
                catch (Exception e)
                {
                    Log.Error(String.Format(
                        "Задача {2}, возникло исключение при попытке принудительного завершения\n{0}\n{1}", e.Message, e.StackTrace, TaskId
                    ));
                }
            }
        }
Beispiel #5
0
        public void TaskComplete(string TaskId)
        {
            lock (_taskServiceLock)
            {
                Log.Info("Задача " + TaskId + ", получено сообщение о завершении");

                const int ATTEMPTS_MAX = 3;
                bool success = false;
                var rnd = new Random();

                for (int i = 0; i < ATTEMPTS_MAX && !success; i++)
                {
                    try
                    {
                        Task task = Task.Load(TaskId);
                        Log.Stats("T_clust_fin", task.SequenceId, task.TaskId, DateTime.Now);

                        task.Complete();
                        success = true;
                        task.Save();

                        Log.Stats("T_task_fin", task.SequenceId, task.TaskId, DateTime.Now);

                        if (task.SequenceId > 0)
                        {
                            var sequenceService = new SequenceService();
                            sequenceService.StepFinishedCallback(task.SequenceId);
                        }
                    }
                    catch (Exception e)
                    {
                        Log.Error(String.Format(
                            "Задача {2}, возникло исключение при завершении\n{0}\n{1}", e.Message, e.StackTrace, TaskId
                        ));
                    }

                    Thread.Sleep(rnd.Next(2*1000), 10*1000);
                }

                if (!success)
                    TaskFail(TaskId);
            }
        }
Beispiel #6
0
        public void TaskFail(string TaskId)
        {
            lock (_taskServiceLock)
            {
                try
                {
                    Task task = Task.Load(TaskId);
                    task.Fail();
                    task.Save();

                    var sequenceService = new SequenceService();
                    sequenceService.StepFinishedCallback(task.SequenceId);
                }
                catch (Exception e)
                {
                    Log.Error(String.Format(
                        "Задача {2}, возникло исключение при завершении со статусом Fail\n{0}\n{1}", e.Message, e.StackTrace, TaskId
                    ));
                }
            }
        }