一種工作流管理系統中工作流數據的持久化方法
2023-05-26 09:06:51 2
專利名稱:一種工作流管理系統中工作流數據的持久化方法
技術領域:
本發明設計計算機系統數據處理領域,特別涉及到一種工作流管理系統中工作流
數據的持久化處理方法和一種工作流數據的持久化處理裝置。
背景技術:
持久化(Persistence),即把數據(如內存中的對象)保存到可永久保存的存儲設備中(如磁碟)。在實際中,持久化的主要應用是將內存中的數據存儲在關係型的資料庫中,當然也可以存儲在磁碟文件中、XML數據文件中等等。持久化技術封裝了數據訪問細節,為大部分業務邏輯提供面向對象的API。通過持久化技術可以減少訪問資料庫數據次數,增加應用程式執行速度;並且,代碼重用性高,能夠完成大部分資料庫操作;以及,鬆散耦合,使持久化不依賴於底層資料庫和上層業務邏輯實現,更換資料庫時只需修改配置文件而不用修改代碼。由於上述特徵,持久化技術被廣泛應用在各種計算機系統中,如工作流系統等。 計算機系統在運行過程中,通常會產生大量的數據,可以理解的是,數據持久化的處理勢必會對計算機系統帶來較大的性能消耗,這種性能消耗又會直接影響持久化的處理效率,尤其在數據量較大時,持久化處理效率過低的問題更為嚴重。以工作流系統為例,由於工作流系統的運行過程通常都會包括複雜的業務流程,所以在運行過程中會產生大量的工作流數據持久化請求,如流程中多個活動、任務等內部對象的狀態改變等,這種工作流系統的數據持久化過程為普通的資料庫持久化過程,即工作流系統通過自身的數據持久化接口 ,根據相應工作流數據的持久化請求,直接將該工作流數據關聯加載至資料庫中,顯然,這種處理過程將過度佔用系統資源,從而引發持久化低效的問題;在上述過程中如果有多個持久化請求同時對同一個工作流數據進行持久化處理,這時資料庫很可能出現並發衝突(阻塞或死鎖)。對於一個長時間運行的工作流系統,存儲介質中的持久化數據量非常大,如果不採用備份和分區處理,都保存在資料庫的同一張表中,隨著系統的持續運行,系統的數據存取檢索效率必然會越來越低。
發明內容
本發明的目的是提供一種工作流管理系統中工作流數據的持久化方法。 本發明的目的是按以下方式實現的,包括方法、裝置及工作流系統,其中,(一)方
法步驟如下 1)啟動工作流事務;通過工作流實例備份的計劃任務,在系統空閒時備份存儲介
質中已完成狀態的工作流實例數據,備份數據採用分區技術;備份成功後,刪除源存儲介質
中已經備份的工作流數據,所述分區技術不局限於某一種關係型資料庫提供的分區技術; 2)為當前執行的流程實例使用的工作流資源加鎖;通過工作流資源鎖管理器對
需要修改的工作流資源或工作流內部對象加鎖;工作流資源已經被其他請求添了加排他
鎖,等待該資源鎖被釋放後,再添加工作流資源的排他鎖,鎖的優先級、超時時間、隔離級別、粒度,根據工作流管理系統的運行情況進行設置; 3)工作流運行時執行過程中,通過內存緩存進行工作流數據的數據存取訪問;修
改流程實例在當前事務中內存緩存中的工作流數據,並生成緩存數據修改記錄; 4)獲取變更數據;根據內存緩存修改記錄從工作流數據緩存中獲取需要持久化
的工作流修改數據; 5)工作流數據持久化;根據所述工作流修改數據,按照所述所述工作流修改數據發出持久化請求,將數據保存到持久性存儲中;
6)釋放資源鎖;
7)提交工作流事務。
( 二 )工作流管理系統中工作流數據的持久化裝置,包括
啟動單元用於啟動工作流事務; 鎖管理單元用於在持久化處理時對工作流資源添加鎖、以及在持久化處理完成時釋放鎖; 數據緩存管理單元用於根據所述工作流事務中工作流數據的改變記錄,在內存緩存中記錄工作流數據;在所述工作流數據的在當前工作流事務中的所有內存緩存中的工作流數據發生變化時,生成緩存數據修改記錄,並根據內存緩存修改記錄從緩存的工作流數據中獲取需要持久化的工作流修改數據; 持久化請求單元用於根據所述內存緩存數據和緩存數據修改記錄發出持久化提交請求;備份單元用於在系統空閒時備份存儲介質中已完成狀態的工作流實例數據。
在鎖管理單元中,鎖的優先級、超時時間、隔離級別、粒度,根據工作流管理系統的運行情況進行設置。 採用分區技術;備份單元備份成功後,刪除源存儲介質中已經備份的工作流數據。
(三)工作流管理系統中工作流數據的工作流系統,其特徵在於,包括
工作流執行器,用於接收業務請求,並通知工作流事務管理器中的請求單元;
工作流事務管理器,包括啟動單元、執行單元和請求單元所述啟動單元用於啟動工作流事務;所述執行單元用於執行當前工作流事務中工作流數據的修改;所述請求單元用於根據修改數據發出持久化請求; 工作流鎖管理器,用於在持久化處理時對工作流資源添加鎖、以及在持久化處理完成時釋放鎖; 工作流持久化管理器,包括數據緩存管理單元,用於記錄所述工作流事務中工作流數據,工作流數據的在當前工作流事務中的所有內存緩存中的工作流數據發生變化時,生成緩存數據修改記錄,根據所述工作流事務中工作流數據的改變記錄,獲取工作流修改數據; 工作流備份管理器,用於在系統空閒時,通過計劃任務備份存儲介質中已完成狀
態的工作流實例數據;備份成功後,刪除源存儲介質中已經備份的工作流數據。 鎖管理單元,鎖的優先級、超時時間、隔離級別、粒度,根據工作流管理系統的運行
情況進行設置。 備份單元採用分區技術;備份成功後,刪除源存儲介質中已經備份的工作流數據。
本發明的方法與現有技術相比,優異效果是應用本發明,在工作流事務中,當需
5要修改工作流數據時,首先對該資源加鎖,並不直接向發出持久化請求,而是生成工作流數據內存緩存的修改記錄。此時真正的數據化操作並未進行,而是被延遲到工作流事務提交時進行,在工作流事務提交時,根據緩存數據修改記錄獲取內存緩存中修改的工作流數據發出持久化請求,在事務提交時釋放鎖,同時應用本發明,在系統空閒時,通過計劃任務對於已完成狀態的工作流實例數據進行備份,成功備份後,刪除源存儲介質中的上述工作流數據,因此可以有效提高工作流數據持久化的處理效率。應用本發明的鎖管理機制,對於一個工作流內部對象,同時只有一個修改該對象的持久化請求,因此可以有效提高工作流數據持久化的並發處理能力。
圖1是工作流數據的持久化處理方法的流程 圖2是工作流數據的持久化處理裝置的結構框 圖3是工作流系統的結構框圖。
具體實施例方式
本發明的工作流管理系統中工作流數據的持久化方法包括以下步驟
1)啟動工作流事務; 2)為當前執行的流程實例使用的工作流資源加鎖; 3)工作流運行時執行過程中,通過內存緩存進行工作流數據的數據存取訪問; 獲取變更數據; 工作流數據持久化; 釋放資源鎖; 提交工作流事務; 優選的是,該方法還包括 通過工作流實例備份的計劃任務,在系統空閒時備份存儲介質中已完成狀態的工作流實例數據,備份數據採用分區技術;備份成功後,刪除源存儲介質中已經備份的工作流數據,所述分區技術不局限於某一種關係型資料庫提供的分區技術。
優選的是,步驟二還包括 通過工作流資源鎖管理器對需要修改的工作流資源(工作流內部對象)加鎖;如果所述工作流資源已經被其他請求添了加排他鎖,等待該資源鎖被釋放後,再添加工作流資源的排他鎖。鎖的優先級、超時時間、隔離級別、粒度等,可以根據工作流管理系統的運行情況進行設置。 優選的是,步驟三還包括 修改流程實例在當前事務中內存緩存中的工作流數據,並生成緩存數據修改記錄; 優選的是,步驟四還包括 根據內存緩存修改記錄從內存緩存的工作流數據中獲取需要持久化的工作流修改數據。 優選的是,步驟五還包括
6
根據所述工作流修改數據,按照所述所述工作流修改數據發出持久化請求,將數 據保存到持久性存儲中。 本發明實施例還公開了一種工作流數據的持久化處理裝置,包括
啟動單元,用於啟動工作流事務; 鎖管理單元,用於在持久化處理時對工作流資源添加鎖、以及在持久化處理完成 時釋放鎖。 數據緩存管理單元,用於根據所述工作流事務中工作流數據的改變記錄,在內存 緩存中記錄工作流數據;在所述工作流數據的在當前工作流事務中的所有內存緩存中的工 作流數據發生變化時,生成緩存數據修改記錄,並根據內存緩存修改記錄從緩存的工作流 數據中獲取需要持久化的工作流修改數據; 持久化請求單元,用於根據所述內存緩存數據和緩存數據修改記錄發出持久化提 交請求。 備份單元,用於在系統空閒時備份存儲介質中已完成狀態的工作流實例數據。
優選的是,所述鎖管理單元中鎖的優先級、超時時間、隔離級別、粒度等,可以根據 工作流管理系統的運行情況進行設置。 優選的是,所述備份單元採用分區技術;備份成功後,刪除源存儲介質中已經備份 的工作流數據。 本發明實施例還公開了一種工作流系統,包括 工作流執行器,用於接收業務請求,並通知工作流事務管理器中的請求單元。
工作流事務管理器,包括啟動單元、執行單元和請求單元所述啟動單元用於啟動 工作流事務;所述執行單元用於執行當前工作流事務中工作流數據的修改;所述請求單元 用於根據修改數據發出持久化請求; 工作流鎖管理器,用於在持久化處理時對工作流資源添加鎖、以及在持久化處理 完成時釋放鎖。 工作流持久化管理器,包括數據緩存管理單元,用於記錄所述工作流事務中工作 流數據,工作流數據的在當前工作流事務中的所有內存緩存中的工作流數據發生變化時, 生成緩存數據修改記錄,根據所述工作流事務中工作流數據的改變記錄,獲取工作流修改 數據; 工作流備份管理器,用於在系統空閒時,通過計劃任務備份存儲介質中已完成狀
態的工作流實例數據;備份成功後,刪除源存儲介質中已經備份的工作流數據。 優選的是,所述鎖管理單元中鎖的優先級、超時時間、隔離級別、粒度等,可以根據
工作流管理系統的運行情況進行設置。 優選的是,所述備份單元採用分區技術;備份成功後,刪除源存儲介質中已經備份
的工作流數據。 實施例 參照說明書附圖對本發明的作以下詳細地說明。 為使用本發明的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖和具體 實施方式對本發明作進一步詳細的說明。 本發明的核心構思在於,在啟動工作流事務後,首先對該資源加鎖,對於在同一個工作流事務內,工作流內部對象的任何持久化操作都通過修改內存緩存中工作流數據的方 式完成並生成修改記錄,但此時不進行真正的數據持久化操作,而是延遲到工作流事務提 交時進行,即在工作流事務提交時,根據內存緩存修改記錄從緩存的工作流數據中獲取需 要持久化的數據,系統還通過計劃任務進行已完成狀態實例的備份,從而有效提高了工作 流數據持久化的處理效率和並發處理能力。 參考圖l,示出了本發明的一種工作流數據的持久化處理方法實施例的流程圖,具
體可以包括以下步驟 步驟l,啟動工作流事務; 步驟2,為工作流資源加鎖; 步驟3,工作流數據存取,根據所述工作流事務中工作流數據的改變,生成內存緩 存數據的改變記錄; 步驟4,根據所述工作流事務中的內存緩存修改記錄從緩存的工作流數據中獲取 需要持久化的工作流修改數據; 步驟5,根據所述的工作流修改數據發出持久化請求;
步驟6,釋放工作流資源鎖;
步驟7,提交工作流事務。 根據WFMC的定義,工作流(Workflow)就是自動運作的業務過程,表現為參與者對 文件、信息或任務按照規程採取行動,並令其在參與者之間傳遞,簡單地說,工作流就是一 系列相互銜接,自動進行的業務活動或任務。其中,工作流數據是指工作流系統內部對象的 狀態數據,而工作流系統內部對象是指工作流系統在執行流程時產生的內部對象,包括流 程對象、活動對象、任務對象等等,內存緩存是記錄在系統內存中的對象狀態信息的拷貝。 而工作流事務是在資料庫事務基礎上由工作流系統擴展出來的工作流處理事務。而事務是 一個最小的工作單元,不論成功與否事務都作為一個整體進行工作。由於事務通常由幾個 人任務組成的,因此如果一個事務作為一個整體事成的,則事務中的每個人物都必須是成 功的。如果事務中有一部分失敗,則整個事務也必然是失敗的。即事務具有原子性、一致性、 隔離性、持久性的特點。 從上可以得知,本發明實施例所述的工作流事務具有以下特徵 (1)具有明確的事務邊界對於工作流系統來說,事務的發起與結束都是它來控
制,所有知道工作流事務的邊界。
(2)在事務內能夠通過內存的方式管理被持久化對象的生命周期。在工作流事務
中,需要持久化的對象(工作流數據)都是在工作流系統內的,並且由工作流系統來管理它
的生命周期,所有能夠通過"內存緩存修改記錄"的方式對持久化請求進行優化。 在實際中,工作流事務可以根據業務請求而啟動,啟動工作流事務,並準備上下文
信息。應用本實施例中,當改變工作流內部對象狀態並且需要持久化時,先對工作流內部對
象添加資源鎖;然後,觸發當前工作流內部對象狀態數據(即工作流數據)的以內存緩存的
方式進行記錄;改變緩存內存中的該工作流數據,並生成工作流數據改變記錄。 在本實施例中,在工作流事務未提交時,不進行持久化操作,只有在提交工作流事
務時,才通過工作流數據改變記錄獲得工作流修改數據,然後才根據該數據發出持久化請求。
為使本領域技術人員更好地理解本發明,以下通過具體實例對本發明的工作流數 據持久化處理過程進行說明。 以工作流活動實例為例,假設在工作流流程運行中,一個活動實例的生命周期如 下 (1)創建活動實例,並且設置活動狀態為未初始化;
(2)設置活動狀態為未啟動(即活動的初始化狀態); [OOSS] (3)設置活動狀態為運行中(即活動的執行狀態);
(4)設置活動狀態為完成(即活動的結束狀態)。
假設這三個狀態的變化在一個工作流事務中,應用本實施例的處理過程如下
步驟1、啟動工作流事務;
步驟2、在內存中創建活動實例; 工作流數據改變前(活動實例創建前)的內存緩存為無,改變後(活動實例創建 後)的內存緩存為有,且活動實例狀態為未初始化。 步驟3、記錄(2)(設置活動狀態為未啟動)修改內存緩存中的活動實例狀態,並記 錄活動實例狀態被修改; 改變前的內存緩存中的活動實例狀態為未初始化,改變後的內存緩存中的活動實 例狀態為運行中。 步驟4、記錄(3)(設置活動狀態為運行中)修改內存緩存中的活動實例狀態,並記 錄活動實例狀態被修改; 改變前的內存緩存中的活動實例狀態為未啟動,改變後的內存緩存中的活動實例 狀態為運行中。 步驟5、記錄(4)(設置活動狀態為完成)修改內存緩存中的活動實例狀態,並記錄 活動實例狀態被修改; 改變前的內存緩存中的活動實例狀態為運行中,改變後的內存緩存中的活動實例 狀態為完成。 步驟6,根據緩存中工作流數據的修改記錄,發現該活動實例的改變量就是活動實
例狀態的變化量,因此向資料庫發出創建狀態為完成的活動實例的持久化請求。 通過上例可以看出,當採用現有技術的方法,則需要提交四次持久化請求,即插入
數據,第一次更新數據、第二次更新數據和第三次更新數據的請求;當採用本發明實施例,
則只需要提交一次資料庫持久化請求,因而本發明有效提高了工作流數據持久化處理的效率。 參考圖2,示出了本發明的一種工作流數據的持久化處理裝置實施例的結構框圖,
具體可以包括以下單元 啟動單元,用於啟動工作流事務; 鎖管理單元,用於在持久化處理時對工作流資源添加鎖、以及在持久化處理完成 時釋放鎖。 數據緩存管理單元,用於根據所述工作流事務中工作流數據的改變記錄,在內存 緩存中記錄工作流數據;在所述工作流數據的在當前工作流事務中的所有內存緩存中的工 作流數據發生變化時,生成緩存數據修改記錄,並根據內存緩存修改記錄從緩存的工作流
9數據中獲取需要持久化的工作流修改數據; 持久化請求單元,用於根據所述內存緩存數據和緩存數據修改記錄發出持久化提 交請求; 備份單元,用於在系統空閒時備份存儲介質中已完成狀態的工作流實例數據。
對於圖2所示的裝置實施例而言,由於其基本相應於圖1所示的方法實施例,所以 描述比較簡單,相關之處參見方法實施例的部分說明即可。 為使本領域技術人員更好地理解本發明中的鎖管理機制,以下通過舉例對其進行 說明。 假設存在一個狀態為運行中的工作流活動,滿足以下條件
①當規則SwitchToB成立時,活動A狀態修改為完成,流程流轉到後續活動B。
②當規則SwitchToC成立時,活動A狀態修改為完成,流程流轉到後續活動C。
在當前工作流事務中,持久化管理器同時發出兩個持久化請求持久化請求 RequestM修改工作流緩存數據時,規則SwitchToB成立;持久化請求RequestN修改工作流 緩存數據時,規則SwitchToC成立。應用鎖管理器,第一個持久化請求會對當前的工作流資 源添加排他鎖,另外的持久化請求判斷工作流資源已經被其他請求加鎖,則等待資源的釋 放。這樣就避免了流程出現並發並發衝突(阻塞或死鎖)。 優選的是,所述鎖管理單元中鎖的優先級、超時時間、隔離級別、粒度等,可以根據 工作流管理系統的運行情況進行設置。 參考圖3,示出了本發明的一種工作流系統實施例的結果框圖,具體可以包括以下 裝置 工作流執行器,用於接受業務請求,並通知工作流事務管理器的啟動單元; 工作流鎖管理器,用於在持久化處理時對工作流資源添加鎖、以及在持久化處理
完成時釋放鎖。 工作流事務管理器,包括啟動單元、執行單元和請求單元;所述啟動單元用於啟動 工作流事務;所述執行單元用於執行當前工作流事務中工作流數據的修改;所述請求單元 用於根據當前事務中的工作流數據修改記錄發出持久化請求; 工作流持久化管理器,包括數據緩存管理單元,用於記錄所述工作流事務中工作 流數據,工作流數據的在當前工作流事務中的所有內存緩存中的工作流數據發生變化時, 生成緩存數據修改記錄,根據所述工作流事務中工作流數據的改變記錄,獲取工作流修改 數據; 工作流備份管理器,用於在系統空閒時,通過計劃任務備份存儲介質中已完成狀
態的工作流實例數據;備份成功後,刪除源存儲介質中已經備份的工作流數據。 優選的是,所述鎖管理單元中鎖的優先級、超時時間、隔離級別、粒度等,可以根據
工作流管理系統的運行情況進行設置。 優選的是,所述備份單元採用分區技術;備份成功後,刪除源存儲介質中已經備份 的工作流數據。 對於圖3所示的系統實施例而言,由於其基本相應於前述方法和裝置實施例,所 以描述較為簡單,相關之處參見方法實施例的部分說明即可。 以上對本發明所提供的一種工作流管理系統數據的持久化處理方法、一種工作流
10管理系統數據的持久化處理裝置以及一種工作流系統進行了詳細介紹。本文中應用了具體 個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明 的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施 方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
除說明書所述的技術特徵外,均為本專業技術人員的已知技術。
權利要求
一種工作流管理系統中工作流數據的持久化方法,其特徵在於,處理步驟如下1)啟動工作流事務;通過工作流實例備份的計劃任務,在系統空閒時備份存儲介質中已完成狀態的工作流實例數據,備份數據採用分區技術;備份成功後,刪除源存儲介質中已經備份的工作流數據,所述分區技術不局限於某一種關係型資料庫提供的分區技術;2)為當前執行的流程實例使用的工作流資源加鎖;通過工作流資源鎖管理器對需要修改的工作流資源或工作流內部對象加鎖;工作流資源已經被其他請求添了加排他鎖,等待該資源鎖被釋放後,再添加工作流資源的排他鎖,鎖的優先級、超時時間、隔離級別、粒度,根據工作流管理系統的運行情況進行設置;3)工作流運行時執行過程中,通過內存緩存進行工作流數據的數據存取訪問;修改流程實例在當前事務中內存緩存中的工作流數據,並生成緩存數據修改記錄;4)獲取變更數據;根據內存緩存修改記錄從工作流數據緩存中獲取需要持久化的工作流修改數據;5)工作流數據持久化;根據所述工作流修改數據,按照所述所述工作流修改數據發出持久化請求,將數據保存到持久性存儲中;6)釋放資源鎖;7)提交工作流事務。
2. 工作流管理系統中工作流數據的持久化裝置,其特徵在於,包括啟動單元用於啟動工作流事務;鎖管理單元用於在持久化處理時對工作流資源添加鎖、以及在持久化處理完成時釋放鎖;數據緩存管理單元用於根據所述工作流事務中工作流數據的改變記錄,在內存緩存中記錄工作流數據;在所述工作流數據的在當前工作流事務中的所有內存緩存中的工作流數據發生變化時,生成緩存數據修改記錄,並根據內存緩存修改記錄從緩存的工作流數據中獲取需要持久化的工作流修改數據;持久化請求單元用於根據所述內存緩存數據和緩存數據修改記錄發出持久化提交請求;備份單元用於在系統空閒時備份存儲介質中已完成狀態的工作流實例數據。
3. 如權利要求2所述的所述的持久化裝置,其特徵在於,在鎖管理單元中,鎖的優先級、超時時間、隔離級別、粒度,根據工作流管理系統的運行情況進行設置。
4. 如權利要求2所述的持久化裝置,其特徵在於,採用分區技術;備份單元備份成功後,刪除源存儲介質中已經備份的工作流數據。
5. 工作流管理系統中工作流數據的工作流系統,其特徵在於,包括工作流執行器,用於接收業務請求,並通知工作流事務管理器中的請求單元;工作流事務管理器,包括啟動單元、執行單元和請求單元所述啟動單元用於啟動工作流事務;所述執行單元用於執行當前工作流事務中工作流數據的修改;所述請求單元用於根據修改數據發出持久化請求;工作流鎖管理器,用於在持久化處理時對工作流資源添加鎖、以及在持久化處理完成時釋放鎖;工作流持久化管理器,包括數據緩存管理單元,用於記錄所述工作流事務中工作流數據,工作流數據的在當前工作流事務中的所有內存緩存中的工作流數據發生變化時,生成緩存數據修改記錄,根據所述工作流事務中工作流數據的改變記錄,獲取工作流修改數據;工作流備份管理器,用於在系統空閒時,通過計劃任務備份存儲介質中已完成狀態的工作流實例數據;備份成功後,刪除源存儲介質中已經備份的工作流數據。
6. 如權利要求5所述的工作流系統,其特徵在於,鎖管理單元,鎖的優先級、超時時間、隔離級別、粒度,根據工作流管理系統的運行情況進行設置。
7. 如權利要求5所述的工作流系統,其特徵在於,備份單元採用分區技術;備份成功後,刪除源存儲介質中已經備份的工作流數據。
全文摘要
本發明公開了一種工作流管理系統數據的持久化處理方法,處理步驟如下啟動工作流事務後,首先對該資源進行加鎖的設置;工作流內部對象的任何持久化操作都通過修改內存緩存中工作流數據的方式完成,同時生成修改記錄;修改緩存中工作流數據時不進行真正的數據持久化操作,而是延遲到工作流事務提交時進行,即在工作流事務提交時,根據內存緩存修改記錄從工作流數據緩存中獲取需要持久化的數據;提交工作流事務後,釋放資源鎖。系統還通過計劃任務對已完成狀態的實例數據進行備份,從而有效提高了工作流數據持久化的處理效率和並發處理能力。
文檔編號G06F17/30GK101777154SQ20101010338
公開日2010年7月14日 申請日期2010年2月1日 優先權日2010年2月1日
發明者孫立新, 馬超, 高偉 申請人:浪潮集團山東通用軟體有限公司