事務儲存
事務有了統一的規範和編碼,下一步就需要考慮具體該怎樣儲存一個事務了。首先,一個操作有它的唯一編碼,通過String類型來儲存ID編碼值。其次需要儲存的就是參數列表,因為每一個操作所需要的參數時不同的,所以考慮用List<String>是首選方案。
具體代碼實現:
/// <summary> /// 儲存一次操作過程的所有方法編號和方法的參數列表 /// </summary> [Serializable()] public class TransactionEntity { public TransactionEntity() { TransactionID = new List<String>(); TransactionParam = new List<object[]>(); Success = new List<bool>(); } /// <summary> /// 清空內部的資訊 /// </summary> public void Clear() { TransactionID.Clear(); TransactionParam.Clear(); Success.Clear(); } //每一個方法編號,相當於hashtable裡面的KEY private List<String> m_TransactionID; public List<String> TransactionID { get; set; } //對應方法編號的參數列表,相當於hashtable裡面的value private List<object[]> m_TransactionParam; public List<object[]> TransactionParam { get; set; } //對應方法是否執行成功 private List<Boolean> m_Success; public List<Boolean> Success { get; set; } }
一個事務的結構實體類
一個事務實體的結構圖
一個事務裡麵包含了很多原子操作,每個原子操作對應自己的參數列表。而且在每一個原子操作後面都有一個是否成功的表示。當一個事務執行完畢後,程式會自動執行檢查其是否每個操作都成功了,如果沒有成功,那麼整個操作將回退,事務執行結束。