public PersistentTaskAgent(IPersistentTask task, HealthMonitoringSettings settings, ILogger logger, ISubscriptionRepository repository)
 {
     _task = task;
     _settings = settings;
     _logger = logger;
     _repository = repository;
 }
Example #2
0
 public PersistentTaskAgent(IPersistentTask task, HealthMonitoringSettings settings, ILogger logger, ISubscriptionRepository repository)
 {
     _task       = task;
     _settings   = settings;
     _logger     = logger;
     _repository = repository;
 }
Example #3
0
        //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);
                }
            }
        }
Example #4
0
        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);
 }
Example #6
0
        /// <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));
 }