Esempio n. 1
0
        public XFrmTaskLogViewer(TaskIts tarefa) : this()
        {
            var ctx = Scheduler.Repositorio.SchedulerContext.Instance;

            gridControl1.DataSource = ctx.LogItsDao.Where(l => l.IdTask == tarefa.IdTask).OrderBy(l => l.DataLog);
            lbTask.Caption          = tarefa.DescricaoTarefa + " ID: " + tarefa.IdTask;
            log = tarefa.TaskDetails.ToList();
        }
Esempio n. 2
0
 public FolhaDaoManager(string idTask) : this()
 {
     try
     {
         var ctx = SchedulerContextGeneric <TaskIts> .Instance;
         var ts  = ctx.Dao.Find(idTask);
         this.itsTask = ts;
     }
     catch (Exception ex)
     {
         XMessageIts.ExceptionMessage(ex);
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Cria uma tarefa no banco de dados.
 /// Retorna o guid da tarefa criada
 /// </summary>
 /// <returns>ID Tarefa</returns>
 public string CreateTask(TaskIts task, CancellationTokenSource cts)
 {
     try
     {
         var ctx = SchedulerContextGeneric <TaskIts> .Instance;
         ctx.Dao.Save(task);
         return(task.IdTask);
     }
     catch (SerializationException se)
     {
         XMessageIts.ExceptionMessageDetails(se, "Erro");
         return("Ocorreu um erro!\n" + se.Message);
     }
     catch (Exception ex)
     {
         return("Ocorreu um erro!\n" + ex.Message);
     }
 }
Esempio n. 4
0
        private static void teste()
        {
            TaskIts task = new TaskIts("ITSolution.Scheduler.Forms.Testes", "Insere", "1");

            //Obtem o tipo especifico
            var instance = ReflectionManagerIts.CreateInstance(task.Classe);
            //testando Set por reflexao
            //instance.SetPropertieValue("ID", "275f24e4-0343-4c78-adf9-74ee6ac06240");
            //testando Get por reflexao
            //var value = instance.GetPropertieValue("ID");
            //saida
            //Console.WriteLine(value);
            //testando invocacao de metodo por reflexao
            //instance.InvokeMethod("MetodoTeste");

            //Console.WriteLine();
            //obtendo paramentos do metodo por reflexao
            var x = instance.GetTypesMethodParameters("Insere");


            //args
            var values = new object[] { 1000, "275f24e4-0343-4c78-adf9-74ee6ac06240", new CancellationTokenSource() };

            //setando todos os values
            //instance.SetValues(values);

            instance.InvokeMethod("Insere", values);
            //obtendo os values
            var result = instance.GetValues();

            //saida
            foreach (var item in result)
            {
                Console.WriteLine(item);
            }
        }
Esempio n. 5
0
        public async Task Execute(TaskIts task, CancellationTokenSource cts)
        {
            if (task != null)
            {
                LogIts log;
                try
                {
                    //inicia
                    StartTask(task.IdTask, cts);

                    // Execute the task
                    var typeName = Type.GetType(task.Classe);
                    //var typeName2 = typeof(FolhaDaoManager);

                    object instance = Activator.CreateInstance(typeName, null);

                    var methodInfo = typeName.GetMethod(task.Metodo);
                    var param      = methodInfo.GetParameters();
                    int i          = 0;


                    List <TaskParamIts> parametrosTask = SerializeIts.DeserializeObject <List <TaskParamIts> >(task.Tarefa);
                    dynamic[]           parmOrigs22    = new dynamic[parametrosTask.Count];

                    log = new LogIts(task.IdTask, Thread.CurrentThread.ManagedThreadId.ToString(), "Parâmetros:", "");

                    //insere
                    await InsertLogTask(log);


                    foreach (var item in parametrosTask)
                    {
                        if (item.ParameterValue.ToString() == "System.Threading.CancellationTokenSource")
                        {
                            parmOrigs22[i] = cts;
                        }
                        else
                        {
                            log = new LogIts(task.IdTask, Thread.CurrentThread.ManagedThreadId.ToString(),
                                             item.ParameterName.ToString()
                                             + ": " + item.ParameterValue.ToString(), String.Empty);

                            //insere log
                            await InsertLogTask(log);

                            var stp = item.ParameterType.AssemblyQualifiedName;
                            var tp  = Type.GetType(stp);
                            parmOrigs22[i] = item.ParameterValue;
                            //parmOrigs22[i] = Convert.ChangeType(item.ParameterValue,
                            //     tp);
                        }
                        i++;
                    }
                    //object[] parmOrigs = new object[] { 1000, task.IdTask, cts };
                    try
                    {
                        Task t1 = new Task(() =>
                        {
                            methodInfo.Invoke(instance, parmOrigs22);
                        });

                        await Task.Factory.StartNew(() => t1.Start());

                        Task ok = await Task.WhenAny(t1);

                        if ((ok.IsCompleted && ok.Exception == null) && !cts.IsCancellationRequested)
                        {
                            //Work task
                            await DoWorkTask(task.IdTask);
                        }
                        if (ok.Exception != null)
                        {
                            var msg = ok.Exception.InnerExceptions.First();

                            throw new Exception(msg.InnerException.Message);
                        }

                        if (cts.IsCancellationRequested)
                        {
                            throw new OperationCanceledException("Operação cancelada.");
                        }
                    }
                    catch (OperationCanceledException exCancel)
                    {
                        log = new LogIts(task.IdTask,
                                         Thread.CurrentThread.ManagedThreadId.ToString(),
                                         exCancel.Message
                                         , "Operacao cancelada");
                        await InsertLogTask(log);

                        SuspendTask(task.IdTask);
                    }
                    catch (TargetInvocationException tex)
                    {
                        log = new LogIts(task.IdTask,
                                         Thread.CurrentThread.ManagedThreadId.ToString(),
                                         tex.Message
                                         , tex.Message);
                        await InsertLogTask(log);
                        await StoppedTaskException(task.IdTask);
                    }
                    catch (Exception ex)
                    {
                        log = new LogIts(task.IdTask,
                                         Thread.CurrentThread.ManagedThreadId.ToString(),
                                         ex.Message
                                         , ex.Message);
                        await InsertLogTask(log);
                        await StoppedTaskException(task.IdTask);
                    }
                }//fim try
                catch (Exception ex)
                {
                    log = new LogIts(task.IdTask,
                                     Thread.CurrentThread.ManagedThreadId.ToString(),
                                     ex.Message
                                     , ex.Message);
                    await InsertLogTask(log);
                    await StoppedTaskException(task.IdTask);
                }
            }
        }
Esempio n. 6
0
        private TaskIts indexarTarefa()
        {
            var proccessSelected = cbProcesso.SelectedItem as ProcessIts;

            if (proccessSelected != null)
            {
                memDescProcess.Text = proccessSelected.DescricaoProcesso;

                if (proccessSelected.CodigoProcesso == "INS_TSTE")
                {
                    //List<TaskParamIts> parameters = new List<TaskParamIts>();
                    //var vezes = ParseUtil.ToInt(txtNumVezes.Text);
                    //var schedulerControl = new Scheduler.Manager.SchedulerControl();
                    //var id = Guid.NewGuid().ToString();
                    ////o que será gravado no banco
                    //var className = Type.GetType(proccessSelected.ClassName).FullName;

                    //var methodName = proccessSelected.Metodo;

                    //var arguments = String.Format("{0}, {1}, {2}", vezes, cts, id);

                    //var p = new TaskParamIts(vezes.GetType(), "nVezes", vezes);
                    //var p2 = new TaskParamIts(typeof(String), "taskId", id);
                    //var p1 = new TaskParamIts(typeof(CancellationTokenSource), "cts", cts.ToString());
                    //parameters.Add(p);
                    //parameters.Add(p2);
                    //parameters.Add(p1);

                    //var bytes = SerializeIts.SerializeObject(parameters);

                    //var task = new TaskIts(id, 1, 1, 1, className, methodName,
                    //    proccessSelected.NomeProcesso, proccessSelected.IdProcess, bytes);

                    //schedulerControl.CreateTask(task, cts);
                    //return task;
                }
                else if (proccessSelected.CodigoProcesso == "FEC_FOLHA")
                {
                    try
                    {
                        List <TaskParamIts> parameters = new List <TaskParamIts>();
                        //FillCbGrupoEventos();

                        var periodo   = dtPeriodo.DateTime;
                        var usuario   = UnitWork.Usuario;
                        var n_usuario = new ITE.Entidades.POCO.Usuario();
                        n_usuario.Update(usuario);
                        n_usuario.IdUsuario = usuario.IdUsuario;
                        var tipoFechamento = IndexTipoFechamentoFolha();
                        var grupoEvento    = cbGrupoEvento.SelectedItem as GrupoEvento;
                        var consGrpEvtFunc = chkConsdGrpFunc.Checked;


                        var schedulerControl = new Scheduler.Manager.SchedulerControl();
                        var id = Guid.NewGuid().ToString();
                        //o que será gravado no banco
                        var className = proccessSelected.ClassName;

                        var methodName = proccessSelected.Metodo;

                        var p_periodo   = new TaskParamIts(periodo.GetType(), "periodo", periodo);
                        var p_usuario   = new TaskParamIts(usuario.GetType().BaseType, "usuario", n_usuario);
                        var p_tipoFech  = new TaskParamIts(tipoFechamento.GetType(), "tipoFechamento", tipoFechamento);
                        var p_grpEvento = new TaskParamIts(grupoEvento.GetType(), "grupoEvento", grupoEvento);
                        var p_cnsGf     = new TaskParamIts(consGrpEvtFunc.GetType(), "considerGrpFunc", consGrpEvtFunc);
                        var p_cancel    = new TaskParamIts(typeof(CancellationTokenSource), "cts", cts.ToString());

                        parameters.Add(p_periodo);
                        parameters.Add(p_usuario);
                        parameters.Add(p_tipoFech);
                        parameters.Add(p_grpEvento);
                        parameters.Add(p_cnsGf);
                        parameters.Add(p_cancel);

                        var bytes = SerializeIts.SerializeObject(parameters);

                        var task = new TaskIts(id, 1, 1, 1, className, methodName,
                                               proccessSelected.NomeProcesso, proccessSelected.IdProcess, bytes);

                        schedulerControl.CreateTask(task, cts);
                        return(task);
                    }
                    catch (Exception ex)
                    {
                        XMessageIts.ExceptionMessage(ex);
                    }
                }
                return(null);
            }
            return(null);
        }