public PersistentTaskAgent(IPersistentTask task, HealthMonitoringSettings settings, ILogger logger, ISubscriptionRepository repository) { _task = task; _settings = settings; _logger = logger; _repository = repository; }
//Fin Cristian tarea 0000051 void InitEvents() { ITask mainTask = (ITask)_process.MainTask.TaskInstance; mainTask.ObjectHasChanged += new EventHandler(ListenerTaskChangesEvent); mainTask.OnTaskAfterExecute += new EventHandler(ListenerAfterExecuteDependentTask); mainTask.OnTaskBeforeExecute += new EventHandler(ListenerBeforeExecuteDependentTask); /*Por ahora se cuelga solo del evento OnTaskAfterPrevious*/ mainTask.OnTaskAfterPrevious += new EventHandler(ListenerAfterPreviousDependentTask); if (_process.MainTask.TaskInstance is IPersistentTask) { IPersistentTask persistentTask = (IPersistentTask)_process.MainTask.TaskInstance; persistentTask.OnTaskAfterFlush += new EventHandler(ListenerTaskAfterFlush); persistentTask.OnTaskBeforeFlush += new EventHandler(ListenerTaskBeforeFlush); } foreach (TaskDynamicInfo secondaryTaskInfo in _process.SecondaryTasks) { ITask secondaryTaskInstance = (ITask)secondaryTaskInfo.TaskInstance; secondaryTaskInstance.ObjectHasChanged += new EventHandler(ListenerTaskChangesEvent); secondaryTaskInstance.OnTaskAfterExecute += new EventHandler(ListenerAfterExecuteDependentTask); secondaryTaskInstance.OnTaskBeforeExecute += new EventHandler(ListenerBeforeExecuteDependentTask); /*Por ahora se cuelga solo del evento OnTaskAfterPrevious*/ secondaryTaskInstance.OnTaskAfterPrevious += new EventHandler(ListenerAfterPreviousDependentTask); if (secondaryTaskInfo.TaskInstance is IPersistentTask) { IPersistentTask secondaryTask = (IPersistentTask)secondaryTaskInfo.TaskInstance; secondaryTask.OnTaskAfterFlush += new EventHandler(ListenerTaskAfterFlush); secondaryTask.OnTaskBeforeFlush += new EventHandler(ListenerTaskBeforeFlush); } } }
public void Commit() { ArrayList sortedTask = SortTasks(TaskStaticInfo.SortOrder.OrderDA); ProcessCollectionData processCollectionData = new ProcessCollectionData(); foreach (TaskDynamicInfo taskInfo in sortedTask) { if (taskInfo.TaskInstance is IPersistentTask) { IPersistentTask taskInstance = (IPersistentTask)taskInfo.TaskInstance; taskInstance.PutExtraDataOnCommit(processCollectionData); taskInstance.Commit(); processCollectionData.Add(taskInstance.GetData()); } } }
public IPersistentTaskAgent BuildAgentFor(IPersistentTask task) { return new PersistentTaskAgent(task, _settings, _logger, _repository); }
/// <summary> /// Ordena las tareas segun lo definido para en el modelo de datos /// Inicia una transacción para toda la grabación del proceso /// Genero la sentencia de replicacion para todo el proceso /// Armo una coleccion para ir almacenando los datos del proceso mientras se va guardando /// Guardo informacion acerca del proceso por si alguna tarea debe realizar una lógica distinta /// Itero segun el orden de grabación definido para el proceso /// Ofrezco a la tarea antes de almacenarse los datos del proceso que se han ido guardando /// Guardo el dataset /// Agrego a la coleccion de datos almacenados del proceso /// Cierra la transaccion o realiza el roolback /// </summary> public bool Flush() { bool state = false; //Ordena las tareas ArrayList sortedTask = SortTasks(TaskStaticInfo.SortOrder.OrderDA); //mz.erp.commontypes.SentenciasReplicacion _replication = null; //Inicia una transaccion string IdTransaction = dataaccess.PoolTransaction.BeginTransaction(); //German 2009108 ProcessCollectionData _processCollectionData = new ProcessCollectionData(); //Fin German 2009108 try { //Genero la sentencia de replicacion para todo el proceso mz.erp.commontypes.SentenciasReplicacion _sentences = new SentenciasReplicacion(); mz.erp.commontypes.SentenciasReplicacion _mainsentence = new SentenciasReplicacion(); //Armo una coleccion para ir almacenando los datos del proceso mientras se va guardando //German 2009108 //ProcessCollectionData _processCollectionData = new ProcessCollectionData(); //Fin German 2009108 //Guardo informacion acerca del proceso por si alguna tarea debe realizar una lógica distinta _processCollectionData.ProcessId = this._process.IdProcess; //Itero segun el orden de grabación definido para el proceso foreach (TaskDynamicInfo taskInfo in sortedTask) { if (taskInfo.TaskInstance is IPersistentTask) { IPersistentTask _taskInstance = (IPersistentTask)taskInfo.TaskInstance; //Ofrezco a la tarea antes de almacenarse los datos del proceso que se han ido guardando _taskInstance.PutExtraData(_processCollectionData); //Guardo el dataset _taskInstance.Flush(IdTransaction); //_taskInstance.Flush( IdTransaction ); if (taskInfo.Order == 1) //Tarea Principal { _mainsentence = _taskInstance.GetSentenceReplication(); } else { SentenciasReplicacion replication = _taskInstance.GetSentenceReplication(); if (replication != null) { System.Text.StringBuilder _sentencia = replication.Sentence; if (_sentencia != null) { _sentences.Sentence.Append(_sentencia); } } } //Agrego a la coleccion de datos almacenados del proceso _processCollectionData.Add(_taskInstance.GetData()); } } //throw new Exception("Excepcion explicita para probar Tarea del SP 15"); //Almaceno el conjunto de sentencias de replicacion //German 20110301 - Tarea 0000079 /* * if (_mainsentence != null && _mainsentence.IdTipoDeSentencia != null) * { * _mainsentence.Sentence.Append ( _sentences.Sentence ); * _mainsentence.Update(); * mz.erp.businessrules.transactionmanager.SentenciasReplicacion.Flush(IdTransaction, _mainsentence); * } */ //Fin German 20110301 - Tarea 0000079 //Almaceno datos dataaccess.PoolTransaction.Commit(IdTransaction); state = true; } catch (Exception e) { System.Console.WriteLine(e.ToString()); dataaccess.PoolTransaction.RollBack(IdTransaction); state = false; _errorMessage = e.Message; } comprobantes.GuardarSaldoCuentaCorriente.GetInstance().ClearDataSet(this._process); return(state); }
public IPersistentTaskAgent BuildAgentFor(IPersistentTask task) { return(new PersistentTaskAgent(task, _settings, _logger, _repository)); }
public IPersistentTaskAgent BuildAgentFor(IPersistentTask task) { return(new PersistentTaskAgent(task, settings, theLogger, theSubscriptions)); }