Example #1
0
 protected virtual void Executed(IDictionary <string, IStorageContext> storageContexts)
 {
     foreach (KeyValuePair <string, IStorageContext> context in storageContexts)
     {
         if (context.Value.Storage.Transactional)
         {
             context.Value.Transaction.Commit();
         }
         _state = TransactionClusterState.Commiting;
     }
 }
Example #2
0
        /// <summary>
        /// 自动执行事务,并且提交或者回滚
        /// </summary>
        /// <param name="task"></param>
        public virtual bool Execute(ITask task)
        {
            bool isSuccess = false;
            IDictionary <string, IStorageContext> contexts = task.Context;

            _state = TransactionClusterState.NoStarted;
            try
            {
                _state = TransactionClusterState.Opening;

                PreLoadExecute(contexts);

                _state = TransactionClusterState.OpenedAndRuning;

                ExecuteHandler(contexts);

                _state = TransactionClusterState.Runned;

                Executed(contexts);

                _state    = TransactionClusterState.Commited;
                isSuccess = true;
            }
            catch (Exception exc)
            {
                isSuccess = false;
                if (null != Logger)
                {
                    Logger.ErrorFormat("Execute the cluster transaction scope is error.info:{0}", exc.Message);
                }
                _state = TransactionClusterState.Rollbacking;
                ExceptionHandler(contexts);
                _state = TransactionClusterState.Rollbacked;
            }
            finally
            {
                UnLoadExecute(contexts);
            }
            return(isSuccess);
        }
Example #3
0
        /// <summary>
        /// 自动执行事务,并且提交或者回滚
        /// </summary>
        /// <param name="task"></param>
        public virtual bool Execute(ITask task)
        {
            bool isSuccess = false;
            IDictionary<string, IStorageContext> contexts = task.Context;
            _state = TransactionClusterState.NoStarted;
            try
            {
                _state = TransactionClusterState.Opening;

                PreLoadExecute(contexts);

                _state = TransactionClusterState.OpenedAndRuning;

                ExecuteHandler(contexts);

                _state = TransactionClusterState.Runned;

                Executed(contexts);

                _state = TransactionClusterState.Commited;
                isSuccess = true;
            }
            catch (Exception exc)
            {
                isSuccess = false;
                if (null != Logger)
                {
                    Logger.ErrorFormat("Execute the cluster transaction scope is error.info:{0}", exc.Message);
                }
                _state = TransactionClusterState.Rollbacking;
                ExceptionHandler(contexts);
                _state = TransactionClusterState.Rollbacked;
            }
            finally
            {
                UnLoadExecute(contexts);
            }
            return isSuccess;
        }
Example #4
0
 protected virtual void Executed(IDictionary<string, IStorageContext> storageContexts)
 {
     foreach (KeyValuePair<string, IStorageContext> context in storageContexts)
     {
         if (context.Value.Storage.Transactional)
         {
             context.Value.Transaction.Commit();
         }
         _state = TransactionClusterState.Commiting;
     }
 }