web工作流管理系统开发之十九 工作流系统的事务处理
?
????? 工作流系統的每個流程實例,從創建到結束,都有一個較長的過程。流程實例的執行過程可能立即執行,也可能較長時間的等候處理。當處理過程中出現異常或者故障時候,流程需要回滾,并保持流程和業務的同步回滾,不至于業務和流程不同步,或流程本身的軌跡發生紊亂。因此需要在工作流系統中引入事務處理機制。
?
事務的屬性有四種Atomicity, Consistency, Isolation, Durability,簡稱ACID。
Atomicity 原子 要么是所有的事務操作都成功完成,要么是所有的事務操作都沒完成。
Consistency 一致 當事務開始和結束的時候,涉及事務的資源都必須處于合法的狀態。事務不能違返完整性約束或業務規則。
Isolation 獨立 事務內的操作獨立于其他所有操作。事務外的操作都看不到處于中間狀態的數據。
Durability 持久 事務一旦成功完成,影響就是持久的,且無法撤消。
工作流引擎在執行每個流程實例時,通常是將流程分成一個環節一個環節的執行,各環節通過提交動作來完成本環節,并使流程流轉到下一環節,每個環節的一次執行動作的過程就是一個流程的短事務處理過程。一個工作流實例運行的生命周期由多個這樣的短事務組成。多個流程的短事務保證了流程的長事務一致性。
?
無論是流程的短事務還是流程的長事務,都應該具有事務的那4種屬性。
?
在eworkflow工作流系統中,一個流程實例的生命周期中會包含多個短事務,由多個短事務保證流程的長事務。
?
短事務采用了數據庫的事務處理,在每個動作的提交之初,啟動流程的事務,執行流程的動作提交,同時提交涉及的業務數據,待都提交完成后,提交數據庫的事務,將數據持久化入數據庫。在動作執行的過程中,一旦有異常拋出,即回滾數據庫事務,流程數據和業務數據均回滾到動作提交之初,達到事務的原子性一致性。
?
當流程的短事務人為的回滾時,即執行自由流,回退流的時候,流程的長事務通常需要輔助“業務補償類”來達到數據的一致性。
?
?
?
總結
以上是生活随笔為你收集整理的web工作流管理系统开发之十九 工作流系统的事务处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery 陷阱。。。。
- 下一篇: Windows系统帮助中心程序的0day