專利名稱:大幅度提高工作流引擎性能的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種大幅度提高工作流引擎性能的方法,該方法屬于 中間件技術(shù)架構(gòu)領(lǐng)域,特別是在工作流引擎的技術(shù)架構(gòu)領(lǐng)域。
背景技術(shù):
近些年來,隨著信息化建設(shè)的不斷發(fā)展,工作流的應(yīng)用越來越普
及,各業(yè)務(wù)流程系統(tǒng)管理得更加清晰和靈活;同時,業(yè)務(wù)流程系統(tǒng)對 工作流的要求也越來越高,基本應(yīng)用層面已經(jīng)無法滿足業(yè)務(wù)流程系統(tǒng) 的需求,業(yè)務(wù)流程系統(tǒng)對業(yè)務(wù)活動實時監(jiān)控分析、流程數(shù)據(jù)統(tǒng)計分析 等高級應(yīng)用層面需求越來越強烈。
業(yè)務(wù)活動實時監(jiān)控分析要求,業(yè)務(wù)的實時監(jiān)控并優(yōu)化;根據(jù)比較 少的數(shù)據(jù)量,進行實時分析處理,主要用于管理操作。
流程數(shù)據(jù)統(tǒng)計分析要求,歷史數(shù)據(jù)的統(tǒng)計分析;根據(jù)大量數(shù)據(jù), 進行批量分析處理,主要用于規(guī)劃。
目前大部分工作流產(chǎn)品仍然停留在僅滿足業(yè)務(wù)流程系統(tǒng)的基本應(yīng) 用層面上;在此層面上的工作流產(chǎn)品,涉及人工參與的流程時,為了 應(yīng)對意外宕機等突發(fā)事故,以及提供對運行數(shù)據(jù)和歷史數(shù)據(jù)查詢等功 能,流程數(shù)據(jù)需要持久化到數(shù)據(jù)庫中;涉及到數(shù)據(jù)庫持久化,在大訪 問量、高并發(fā)的情況下,經(jīng)常會遇到數(shù)據(jù)庫I/O瓶頸的問題;工作流 產(chǎn)品對數(shù)據(jù)庫1/0瓶頸解決的程度,決定了此工作流產(chǎn)品對業(yè)務(wù)流程 系統(tǒng)的支撐能力。
有些工作流產(chǎn)品已經(jīng)將其產(chǎn)品定位在了高級應(yīng)用層面上,著手滿 足業(yè)務(wù)活動實時監(jiān)控分析、流程數(shù)據(jù)統(tǒng)計分析等功能需求;為了方便 用戶統(tǒng)計分析流程數(shù)據(jù),必然要將所有流程數(shù)據(jù)持久化到數(shù)據(jù)庫中; 實時監(jiān)控分析、大數(shù)據(jù)量統(tǒng)計分析,將給其工作流產(chǎn)品帶來更高的挑 戰(zhàn)。
目前工作流產(chǎn)品都向平臺產(chǎn)品發(fā)展,方便業(yè)務(wù)流程系統(tǒng)管理,這 樣對工作流平臺支持遠程訪問能力的要求越來越高;這就帶來另外一 個現(xiàn)實的問題,網(wǎng)絡(luò)I/0瓶頸;如何解決網(wǎng)絡(luò)I/0瓶頸,也決定工作 流平臺對業(yè)務(wù)流程系統(tǒng)的支撐能力。
以上從本地1/0和網(wǎng)絡(luò)I/O層面上分析了工作流產(chǎn)品遇到的一些 實際問題,當前工作流產(chǎn)品普遍從建立合適的數(shù)據(jù)庫索引、升級硬件、 優(yōu)化邏輯等方面解決各自的不足,來提升對業(yè)務(wù)流程系統(tǒng)的支撐能力還有最直接的方法就是集群,應(yīng)用服務(wù)器集群和數(shù)據(jù)庫集群;當
然這是非常有效的方法,也是面向大訪問量和高并發(fā)的系統(tǒng)必須要做 的。如何在此基礎(chǔ)上進一步提高工作流引擎的性能,也就是此發(fā)明所 描述的重點。
當前工作流產(chǎn)品,無論是基本應(yīng)用層次上的功能,例如待辦任
務(wù)查詢、經(jīng)手任務(wù)查詢、可追回任務(wù)查詢、指定條件查詢等,還是高
級應(yīng)用層面上的功能,例如業(yè)務(wù)活動實時監(jiān)控分析、流程數(shù)據(jù)統(tǒng)計 分析等,都需要頻繁的訪問工作流引擎,同時引擎內(nèi)部需要頻繁地執(zhí) 行大量的數(shù)據(jù)查詢,這些各層面的功能必然會給工作流引擎帶來巨大 的壓力;尤其涉及到人工參與的流程,處理任務(wù)必然要先查詢出來需 要處理的業(yè)務(wù),然后再進行相應(yīng)的業(yè)務(wù)處理,這樣業(yè)務(wù)流程系統(tǒng)對工 作流引擎的調(diào)用和工作流引擎內(nèi)部調(diào)用非常頻繁,直接導(dǎo)致整個工作 流引擎對業(yè)務(wù)流程系統(tǒng)支撐能力很有限;如果工作流引擎再處理一些 實時監(jiān)控和大數(shù)據(jù)量的統(tǒng)計分析,將更加影響工作流引擎對業(yè)務(wù)流程 系統(tǒng)支撐能力。如果仍然僅徘徊在建立合適的數(shù)據(jù)庫索引、升級硬件、 優(yōu)化邏輯和集群技術(shù),必然會大大增加整個業(yè)務(wù)流程系統(tǒng)的資金投入。
發(fā)明內(nèi)容
本發(fā)明的目的就是針對上述的不足,從工作流技術(shù)架構(gòu)上,提升 工作流引擎性能,提供了 一種大幅度提高工作流引擎性能的方法。
本發(fā)明提供的大幅度提高工作流引擎性能的方法,包括如下步
驟
第1步,服務(wù)器端緩存,即在完成同樣的功能基礎(chǔ)上減少對計算 機硬件讀和寫的頻率,將業(yè)務(wù)流程系統(tǒng)對工作引擎頻繁的數(shù)據(jù)查詢進 行優(yōu)化,在工作流引擎外圍包裝一層緩存層,每次訪問直接從緩存中 獲取數(shù)據(jù),減少對數(shù)據(jù)庫I/0操作。
工作流引擎啟動時,將需要緩存數(shù)據(jù)進行初始化;將實時產(chǎn)生的 流程數(shù)據(jù),緩存到內(nèi)存對象中,避免查詢數(shù)據(jù)庫中新產(chǎn)生的流程數(shù)據(jù), 并對內(nèi)存對象進行管理。
第2步,客戶端緩存,即在完成同樣的功能基礎(chǔ)上減少對服務(wù)器 的請求次數(shù),從兩個方向進行緩存流程數(shù)據(jù)緩存和展現(xiàn)層頁面緩存, 減少對工作流引擎服務(wù)的調(diào)用次數(shù),即減少網(wǎng)絡(luò)層I/O。
數(shù)據(jù)緩存對象,重點在于那些經(jīng)常操作和數(shù)據(jù)量大的數(shù)據(jù),例如 流程定義數(shù)據(jù)'即經(jīng)常操作,數(shù)據(jù)量又大;服務(wù)器端和客戶端工作流 數(shù)據(jù)緩存對象同步,服務(wù)器端數(shù)據(jù)變更,通知所有客戶端數(shù)據(jù)緩存對象更新;不同客戶端工作流數(shù)據(jù)緩存對象同步,當前客戶端緩存數(shù)據(jù) 更新時,首先通知工作流引擎服務(wù)器,然后服務(wù)器端再通知其他所有 客戶端數(shù)據(jù)緩存對象更新;展現(xiàn)層構(gòu)件,針對那些很少變化的頁面進 行緩存。
第3步,對象池,利用池化技術(shù),避免對緩存對象頻繁地創(chuàng)建、 封裝、銷毀帶來的系統(tǒng)開銷。
第4步,異步調(diào)用,針對某個時間段的特殊需求,提升批量處理 能力。
第5步,集群支持,大訪問量、高并發(fā)的情況下,集群的工作流
引擎服務(wù)是有效的支撐。
上述第3步、第4步、第5步是常見的現(xiàn)有技術(shù)。 上述服務(wù)器端緩存對象管理過程是這樣的
1-1)工作流引擎服務(wù)啟動時,將需要緩存的數(shù)據(jù)進行初始化添加 到內(nèi)存中;
1-2)工作流引擎服務(wù)新生成流程數(shù)據(jù)時,新緩存對象被創(chuàng)建并增 力口至'j內(nèi)#中;
1-3)工作流引擎服務(wù)已有流程數(shù)據(jù)更新時,內(nèi)存中對應(yīng)的緩存對 象被更新;
1- 4 )工作流引擎服務(wù)刪除已有流程數(shù)據(jù)時,內(nèi)存中刪除對應(yīng)的緩 存對象。
上述客戶端緩存對象管理過程是這樣的
2- 1 )業(yè)務(wù)流程系統(tǒng)啟動時,將工作流引擎服務(wù)中的流程定義加載 到內(nèi)存中,緩存對象初始化;
2 - 2 )業(yè)務(wù)流程系統(tǒng)將新流程定義導(dǎo)入工作流引擎服務(wù)中,工作流 引擎服務(wù)通知客戶端緩存增加新導(dǎo)入流程定義,新導(dǎo)入流程定義緩存 對象被創(chuàng)建并增加到內(nèi)存中;
2 - 3 )業(yè)務(wù)流程系統(tǒng)將已有流程定義更新到工作流引擎服務(wù)中,工 作流引擎服務(wù)通知客戶端緩存更新相應(yīng)流程定義,內(nèi)存中對應(yīng)的流程 定義緩存對象被更新;
2-4 )業(yè)務(wù)流程系統(tǒng)將已有流程定義從工作流引擎服務(wù)中刪除時, 工作流引擎服務(wù)通知客戶端緩存刪除相應(yīng)流程定義,內(nèi)存中刪除對應(yīng) 的流程定義緩存對象。
在服務(wù)器端緩存和客戶端緩存實施過程中需要注意一下問題
1.緩存什么樣的對象?緩存服務(wù)器端經(jīng)常被調(diào)用的一些流程數(shù)據(jù),例如指定人待辦任務(wù)列表;緩存客戶端頻繁訪問服務(wù)器端、數(shù) 據(jù)量大的數(shù)據(jù),例如客戶端的流程定義對象(流程運行時依賴流程 定義模版,需要加載定義信息,尤其在遠程服務(wù)的過程中,流程定義 信息自身就比較大,傳遞這大數(shù)據(jù)量的流程定義信息,必然會造成對 網(wǎng)絡(luò)大量地占用,尤其流程定義數(shù)據(jù)需要頻繁的訪問,必然會導(dǎo)致網(wǎng) 絡(luò)的堵塞,大大降低整個系統(tǒng)的訪問效率,隨著并發(fā)量的加大性能會 直線下降);展現(xiàn)層構(gòu)件,針對那些很少變化的頁面進行緩存。
2. 緩存對象如何管理?將實時產(chǎn)生的流程數(shù)據(jù),緩存到內(nèi)存對象 中,避免查詢該部分數(shù)據(jù)時再從數(shù)據(jù)庫中重新查詢這些新產(chǎn)生的流程 數(shù)據(jù),并對緩存對象的創(chuàng)建、更新、刪除進行管理。
3. 緩存對象什么時候初始化?工作流引擎啟動時,將需要緩存數(shù) 據(jù)進行初始化。
4. 服務(wù)器端數(shù)據(jù)更新,如何同步到客戶端緩存?服務(wù)器端數(shù)據(jù)變 更,通知所有客戶端進行數(shù)據(jù)緩存對象更新。
5. 不同客戶端間的緩存數(shù)據(jù)更新如何同步?當前客戶端緩存數(shù)據(jù)
更新時,首先通知工作流引擎服務(wù)器,然后工作流引擎服務(wù)端再通知 其他所有客戶端進行數(shù)據(jù)緩存對象更新。
這樣,本發(fā)明通過緩存技術(shù)、對象池技術(shù)、異步調(diào)用方式,減少 系統(tǒng)開銷,大幅度提升工作流引擎性能,減少整個業(yè)務(wù)流程系統(tǒng)的資 金投入;支撐同樣的大數(shù)據(jù)量、高并發(fā)訪問的業(yè)務(wù)流程系統(tǒng),達到相
同的性能效果,集群時將會減少一定數(shù)量的集群節(jié)點,或者降低集群 節(jié)點的^5更件配置。
圖1為本發(fā)明實施例中服務(wù)器端緩存對象管理流程圖; 圖2為本發(fā)明實施例中客戶端緩存對象管理流程圖。
具體實施例方式
一種大幅度提高工作流引擎性能的方法,主要包括客戶端和服務(wù) 器端,包括如下步驟
第1步,服務(wù)器端緩存,即在完成同樣的功能基礎(chǔ)上減少對計算 機硬件讀和寫的頻率,將業(yè)務(wù)流程系統(tǒng)對工作引擎頻繁的數(shù)據(jù)查詢進 行優(yōu)化,在工作流引擎外圍包裝一層緩存層,每次訪問直接從緩存中 獲取數(shù)據(jù),減少對數(shù)據(jù)庫I/0操作。
工作流引擎啟動時,將需要緩存數(shù)據(jù)進行初始化;將實時產(chǎn)生的 流程數(shù)據(jù),緩存到內(nèi)存對象中,避免查詢數(shù)據(jù)庫中新產(chǎn)生的流程數(shù)據(jù),并對內(nèi)存對象進行管理。
第2步,客戶端緩存,即在完成同樣的功能基礎(chǔ)上減少對服務(wù)器 的請求次數(shù),從兩個方向進行緩存流程數(shù)據(jù)緩存和展現(xiàn)層頁面緩存, 減少對工作流引擎服務(wù)的調(diào)用次數(shù),即減少網(wǎng)絡(luò)層I/O。
數(shù)據(jù)緩存對象,重點在于那些經(jīng)常操作和數(shù)據(jù)量大的數(shù)據(jù),例如 流程定義數(shù)據(jù),即經(jīng)常操作,數(shù)據(jù)量又大;服務(wù)器端和客戶端工作流 數(shù)據(jù)緩存對象同步,服務(wù)器端數(shù)據(jù)變更,通知所有客戶端數(shù)據(jù)緩存對 象更新;不同客戶端工作流數(shù)據(jù)緩存對象同步,當前客戶端緩存數(shù)據(jù) 更新時,首先通知工作流引擎服務(wù)器,然后服務(wù)器端再通知其他所有 客戶端數(shù)據(jù)緩存對象更新;展現(xiàn)層構(gòu)件,針對那些很少變化的頁面進 行緩存。
第3步,對象池,利用池化技術(shù),避免對緩存對象頻繁地創(chuàng)建、 封裝、銷毀帶來的系統(tǒng)開銷。
第4步,異步調(diào)用,針對某個時間段的特殊需求,提升批量處理 能力。
第5步,集群支持,大訪問量、高并發(fā)的情況下,集群的工作流
引擎服務(wù)是有效的支撐。
如圖1示,上述服務(wù)器端緩存對象管理過程是這樣的
l-l)工作流引擎服務(wù)啟動時,將需要緩存的數(shù)據(jù)進行初始化添加
到內(nèi)存中;
1-2)工作流引擎服務(wù)新生成流程數(shù)據(jù)時,新緩存對象被創(chuàng)建并增 加到內(nèi)存中;
l-3)工作流引擎服務(wù)已有流程數(shù)據(jù)更新時,內(nèi)存中對應(yīng)的緩存對 象被更新;
1- 4 )工作流引擎服務(wù)刪除已有流程數(shù)據(jù)時,內(nèi)存中刪除對應(yīng)的緩 存對象。
如圖2示,上述客戶端緩存對象管理過程是這樣的
2- 1 )業(yè)務(wù)流程系統(tǒng)啟動時,將工作流引擎服務(wù)中的流程定義加載 到內(nèi)存中,緩存對象初始化;
2-2 )業(yè)務(wù)流程系統(tǒng)將新流程定義導(dǎo)入工作流引擎服務(wù)中,工作流 引擎服務(wù)通知客戶端緩存增加新導(dǎo)入流程定義,新導(dǎo)入流程定義緩存 對象被創(chuàng)建并增加到內(nèi)存中;
2 - 3 )業(yè)務(wù)流程系統(tǒng)將已有流程定義更新到工作流引擎服務(wù)中,工 作流引擎服務(wù)通知客戶端緩存更新相應(yīng)流程定義,內(nèi)存中對應(yīng)的流程定義緩存對象被更新;
2-4 )業(yè)務(wù)流程系統(tǒng)將已有流程定義從工作流引擎服務(wù)中刪除時, 工作流引擎服務(wù)通知客戶端緩存刪除相應(yīng)流程定義,內(nèi)存中刪除對應(yīng) 的流程定義緩存對象。
權(quán)利要求
1.一種大幅度提高工作流引擎性能的方法,其特征在于包括如下步驟第1步,服務(wù)器端緩存,即在完成同樣的功能基礎(chǔ)上減少對計算機硬件讀和寫的頻率,將業(yè)務(wù)流程系統(tǒng)對工作引擎頻繁的數(shù)據(jù)查詢進行優(yōu)化,在工作流引擎外圍包裝一層緩存層,每次訪問直接從緩存中獲取數(shù)據(jù),減少對數(shù)據(jù)庫I/O操作;第2步,客戶端緩存,即在完成同樣的功能基礎(chǔ)上減少對服務(wù)器的請求次數(shù),從兩個方向進行緩存流程數(shù)據(jù)緩存和展現(xiàn)層頁面緩存,減少對工作流引擎服務(wù)的調(diào)用次數(shù),即減少網(wǎng)絡(luò)層I/O;第3步,對象池,利用池化技術(shù),避免對緩存對象頻繁地創(chuàng)建、封裝、銷毀帶來的系統(tǒng)開銷;第4步,異步調(diào)用,針對某個時間段的特殊需求,提升批量處理能力;第5步,集群支持,大訪問量、高并發(fā)的情況下,集群的工作流引擎服務(wù)是有效的支撐。
2. 根據(jù)權(quán)利要求1所述的大幅度提高工作流引擎性能的方法,其 特征在于所述服務(wù)器端緩存對象管理過程是這樣的1-1 )工作流引擎服務(wù)啟動時,將需要緩存的數(shù)據(jù)進行初始化添加 到內(nèi)存中;1-2)工作流引擎服務(wù)新生成流程數(shù)據(jù)時,新緩存對象被創(chuàng)建并增 加到內(nèi)存中;1-3 )工作流引擎服務(wù)已有流程數(shù)據(jù)更新時,內(nèi)存中對應(yīng)的緩存對 象被更新;1- 4 )工作流引擎服務(wù)刪除已有流程數(shù)據(jù)時,內(nèi)存中刪除對應(yīng)的緩 存對象。
3. 根據(jù)權(quán)利要求1所述的大幅度提高工作流引擎性能的方法,其 特征在于所述客戶端緩存對象管理過程是這樣的2- 1)業(yè)務(wù)流程系統(tǒng)啟動時,將工作流引擎服務(wù)中的流程定義加載 到內(nèi)存中,緩存對象初始化;2-2 )業(yè)務(wù)流程系統(tǒng)將新流程定義導(dǎo)入工作流引擎服務(wù)中,工作流 引擎服務(wù)通知客戶端緩存增加新導(dǎo)入流程定義,新導(dǎo)入流程定義緩存 對象被創(chuàng)建并增加到內(nèi)存中;2_3)業(yè)務(wù)流程系統(tǒng)將已有流程定義更新到工作流引擎服務(wù)中,工 作流引擎服務(wù)通知客戶端緩存更新相應(yīng)流程定義,內(nèi)存中對應(yīng)的流程定義緩存對象被更新;2-4 )業(yè)務(wù)流程系統(tǒng)將已有流程定義從工作流引擎服務(wù)中刪除時, 工作流引擎服務(wù)通知客戶端緩存刪除相應(yīng)流程定義,內(nèi)存中刪除對應(yīng) 的流程定義緩存對象。
全文摘要
本發(fā)明是一種大幅度提高工作流引擎性能的方法,該方法屬于中間件技術(shù)架構(gòu)領(lǐng)域,特別是在工作流引擎的技術(shù)架構(gòu)領(lǐng)域。它從工作流技術(shù)架構(gòu)上,提升工作流引擎性能,包括服務(wù)器端緩存、客戶端緩存等步驟,本發(fā)明通過緩存技術(shù)、對象池技術(shù)、異步調(diào)用方式,減少系統(tǒng)開銷,大幅度提升工作流引擎性能,減少整個業(yè)務(wù)流程系統(tǒng)的資金投入;支撐同樣的大數(shù)據(jù)量、高并發(fā)訪問的業(yè)務(wù)流程系統(tǒng),達到相同的性能效果,集群時將會減少一定數(shù)量的集群節(jié)點,或者降低集群節(jié)點的硬件配置。
文檔編號G06F9/44GK101551745SQ20091001551
公開日2009年10月7日 申請日期2009年5月13日 優(yōu)先權(quán)日2009年5月13日
發(fā)明者何忠勝, 民 劉, 劉宗福, 健 姜, 戴海宏 申請人:山東中創(chuàng)軟件工程股份有限公司;山東中創(chuàng)軟件商用中間件股份有限公司