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