Пример #1
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());
                }
            }
        }
Пример #2
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);
        }