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(); }
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); } }
/// <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); } }
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); } }
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); } } }
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); }