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