專利名稱:工作流數(shù)據(jù)處理裝置及方法
技術領域:
本發(fā)明涉及一種工作流數(shù)據(jù)處理裝置及方法,尤其是一種對以字符串方式存儲的工作流數(shù)據(jù)進行處理的裝置,以及利用字符串對工作流流程實例數(shù)據(jù)和流程模版數(shù)據(jù)進行簡化存儲并處理的方法。
背景技術:
在信息技術不發(fā)達的時候,在工作中如果需要實現(xiàn)某項業(yè)務,通常的做法是先填寫紙的表格,然后通過該表格在各個部門中不斷地傳遞信息,從而實現(xiàn)了整個業(yè)務的流程。例如早期如果想安裝一部電話,需要先到郵電局填寫一張申請表,然后郵電局的工作人員把填寫好的申請單提交給相關部門審批,然后再把該申請單提交給相關部分進行審批,然后再將該申請單依次傳送給各個相關部門,最后才能夠把該項業(yè)務開通。隨著信息技術的發(fā)展,逐漸出現(xiàn)了以IT為支撐的工作流技術,這種技術是通過計算機或者人機交互的方式完成業(yè)務流程,現(xiàn)在的工作流數(shù)據(jù)主要是通過可擴展標記語言(Extensible Markup Language,簡稱XML)進行承載、存儲和表達,雖然XML具有非常簡明的實現(xiàn)方式,但是其本身的特點決定了這種XML方式作為工作流的承載、存儲和表達方式具有一定的缺陷。
現(xiàn)有的工作流流程是采用XML文檔來存儲工作流數(shù)據(jù),然后將工作流數(shù)據(jù)進行壓縮,并以二進制方式存儲在數(shù)據(jù)庫的大型對象類型中,當用戶查詢或者更新該流程對應的XML文檔時,需要先取出相應的二進制流,通過解壓縮工具進行解壓,然后生成XML進行顯示或者修改,然后再次壓縮,并以二進制的方式存回到數(shù)據(jù)庫中。
業(yè)界在實現(xiàn)上通常采用兩種方法,一種是將流程模版數(shù)據(jù)和流程實例數(shù)據(jù)均采用XML方式存儲,由于XML標簽占有的存儲空間比較大,當流程實例數(shù)量達到上千萬數(shù)量級后,這種存儲方式會耗費數(shù)據(jù)庫中相當大的存儲空間,而且每次訪問該流程實例時,都需要從數(shù)據(jù)庫中解壓縮,尤其是對于并發(fā)量比較大的系統(tǒng),將會占去相當多的內存和CPU資源,將會大大的增加系統(tǒng)符合,降低系統(tǒng)的性能;另一種是只采用XML方式存儲流程模版,流程實例不采用XML方式存儲,這種方法雖然在流程實例數(shù)量大的時候不會造成內存和CPU資源的大量耗費,但是在創(chuàng)建后的修改非常困難。這兩種實現(xiàn)方法均以數(shù)據(jù)庫大對象類型經(jīng)壓縮后入庫,因此無法建立索引,更無法根據(jù)某些特征進行模糊查找,因此難以進行統(tǒng)計分析。
發(fā)明內容
本發(fā)明的第一目的是針對現(xiàn)有的工作流數(shù)據(jù)的承載、存儲和表示方式的缺陷,提出了一種工作流數(shù)據(jù)處理裝置,能夠對工作流數(shù)據(jù)進行分析、判斷和查詢等操作。
本發(fā)明的第二目的是針對現(xiàn)有的工作流數(shù)據(jù)的承載、存儲和表示方式的缺陷,提出了一種工作流數(shù)據(jù)的處理方法,能夠在處理工作流數(shù)據(jù)的同時,節(jié)約系統(tǒng)資源和存儲空間,并且執(zhí)行效率高、便于查找、顯示速度快,方便統(tǒng)計分析。
為實現(xiàn)上述第一目的,本發(fā)明提供了一種工作流數(shù)據(jù)處理裝置,其包括內存池,用于存儲以字符串方式表達的工作流數(shù)據(jù)和字符解析表信息;解析模塊,與所述內存池連接,用于定時更新內存池中的工作流數(shù)據(jù),以及響應外部命令讀取內存池中的工作流數(shù)據(jù)或者將工作流數(shù)據(jù)存儲在內存池中,并且對工作流數(shù)據(jù)進行分析;讀寫模塊,與所述內存池和數(shù)據(jù)庫連接,用于對所述內存池和數(shù)據(jù)庫中的工作流數(shù)據(jù)進行讀寫;偵聽模塊,與所述解析模塊和客戶端連接,用于偵聽客戶端的事件來對工作流的啟動、調整和結束操作進行管理。
在上述技術方案中,可進一步包括監(jiān)控模塊,與所述偵聽模塊、解析模塊、讀寫模塊以及內存池連接,用于對所述偵聽模塊、解析模塊、讀寫模塊以及內存池的異常數(shù)據(jù)或異常事件進行監(jiān)控和告警;或者進一步包括日志模塊,與所述監(jiān)控模塊連接,用于將監(jiān)控模塊監(jiān)測到的異常數(shù)據(jù)或異常事件記錄在日志文件中。
為實現(xiàn)上述第二目的,本發(fā)明還提供了一種工作流數(shù)據(jù)處理方法,其包括以下步驟步驟1,讀寫模塊將以字符串方式表達的工作流數(shù)據(jù)以及對應于所述工作流數(shù)據(jù)的字符解析表從數(shù)據(jù)庫中讀出,并保存在內存池中;步驟2,解析模塊讀取所述內存池中的工作流數(shù)據(jù);步驟3,所述解析模塊讀取所述內存池中的字符解析表,并根據(jù)該字符解析表對所述工作流數(shù)據(jù)進行分析;步驟4,所述解析模塊根據(jù)分析結果調用執(zhí)行所述工作流數(shù)據(jù)對應的動作的執(zhí)行機構。
在上述方法的技術方案中,步驟2可以具體為偵聽模塊接收到客戶端發(fā)送的執(zhí)行工作流的指令,將所述指令轉發(fā)給所述解析模塊,再由所述解析模塊在內存池中讀取相應的工作流數(shù)據(jù);或者偵聽模塊定時讀取所述內存池中的工作流數(shù)據(jù)。
在步驟3中根據(jù)該字符解析表對所述工作流數(shù)據(jù)進行分析的操作具體為根據(jù)對應于所述工作流數(shù)據(jù)的字符解析表分析所述工作流數(shù)據(jù),獲得狀態(tài)數(shù)據(jù)、需要執(zhí)行的事件(ACTION)和執(zhí)行事件所需要的數(shù)據(jù)、流程扭轉條件數(shù)據(jù)以及流程節(jié)點關系數(shù)據(jù)。解析模塊根據(jù)所述狀態(tài)數(shù)據(jù)、事件數(shù)據(jù)、扭轉條件數(shù)據(jù)以及流程節(jié)點關系數(shù)據(jù)。解析模塊調用事件執(zhí)行程序,如果滿足扭轉條件數(shù)據(jù),則執(zhí)行相應的事件,使流程扭轉。
在事件的執(zhí)行過程中,當監(jiān)測模塊監(jiān)測到事件執(zhí)行出錯或者異常時,向所述解析模塊返回修改狀態(tài)的指令,再由解析模塊將工作流數(shù)據(jù)設置為中斷狀態(tài),或者所述監(jiān)控模塊向解析模塊返回所述事件出錯或異常的告警級別。另外,還能夠通過日志模塊將所述事件執(zhí)行出錯或異常信息輸出到日志中。
基于以上的技術方案,本發(fā)明具有以下優(yōu)點本發(fā)明采用字符串以一定的編碼規(guī)則來存儲工作流數(shù)據(jù),可以簡化存儲內容,而且方便修改和查找;并且節(jié)約了存儲空間,對系統(tǒng)的硬件配置要求低,降低了硬件投資。
下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。
圖1為本發(fā)明工作流數(shù)據(jù)處理裝置的實施例一的結構示意圖。
圖2為實施例一中工作流數(shù)據(jù)處理方法的流程示意圖。
圖3為本發(fā)明工作流數(shù)據(jù)處理裝置的實施例二的結構示意圖。
具體實施例方式
本發(fā)明利用一種新型的工作流處理裝置對工作流數(shù)據(jù)進行處理,這種工作流數(shù)據(jù)與以往的XML方式存儲和展示的數(shù)據(jù)不同,是一種通過字符串表達的工作流數(shù)據(jù),其具有簡單、易修改、易查找的特點,對于這種字符串表達的工作流數(shù)據(jù),本發(fā)明提供的處理裝置能夠根據(jù)這些簡化的字符串對應找出工作流的各個事件節(jié)點和扭轉條件,再由系統(tǒng)自動執(zhí)行。
實施例一如圖1所示,為本發(fā)明工作流數(shù)據(jù)處理裝置的實施例一的結構示意圖,工作流數(shù)據(jù)處理裝置1由內存池11、解析模塊12、讀寫模塊13以及偵聽模塊14構成,其中內存池11用來存儲以字符串方式表達的工作流數(shù)據(jù),其使用的是分配給工作流數(shù)據(jù)單獨使用的一段內存區(qū)域,其中也存儲了對應于工作流數(shù)據(jù)的字符解析表,這種字符解析表提供了一種簡化的操作指令,與匯編語言相近似,每一個字符或是代表具體的執(zhí)行動作,或是跳轉指令,或是狀態(tài)標識等,詳細的字符解析表見下文;解析模塊12與內存池11連接,可以對內存池中的工作流數(shù)據(jù)進行解析,通常是響應外部命令讀取內存池中的工作流數(shù)據(jù)或者將修改后的工作流數(shù)據(jù)存儲在內存池中,還能夠定時的更新內存池中的工作流數(shù)據(jù),并使內存池中的工作流數(shù)據(jù)與數(shù)據(jù)庫中的工作流數(shù)據(jù)同步,除此之外,還可以對工作流數(shù)據(jù)進行分析,根據(jù)分析結果對執(zhí)行機構進行驅動;讀寫模塊13與內存池11以及數(shù)據(jù)庫2連接,用于對數(shù)據(jù)庫和內存池中的工作流數(shù)據(jù)進行讀寫;偵聽模塊14與解析模塊和客戶端連接,用于偵聽客戶端的事件來對工作流的啟動、調整和結束操作進行管理。
工作流數(shù)據(jù)處理裝置1在啟動時,就將數(shù)據(jù)庫2中的工作流數(shù)據(jù)和字符解析表讀入到內存池中。本發(fā)明中的工作流數(shù)據(jù)是采用字符串的方式存儲和表示的,每個工作流數(shù)據(jù)(即一個工作流程)由多個流程節(jié)點組成,每個流程節(jié)點用一個字符串的標識符表示,每一個流程節(jié)點都有自己的屬性和動作,屬性表示節(jié)點的一些動態(tài)或靜態(tài)的數(shù)值,例如節(jié)點狀態(tài)、節(jié)點名稱等;動作表示流程到達該流程節(jié)點時需要執(zhí)行的方法,例如執(zhí)行向用戶客戶端發(fā)送一個消息,或者將某事件寫入日志等操作。
還可以進行更詳細的設定,比如流程節(jié)點狀態(tài)可分未激活、激活、執(zhí)行中、中斷、完成等,用一個字符標識,見表1。
表1流程各個節(jié)點的關聯(lián)關系、起始符、結束符采用一組標識符描述,如流程開始標識符用“@”定義,流程結束符用“#”表示,各個節(jié)點之間的關系采用“-”表示,具體見表2。
表2流程模板用字符串表示和存儲,每個流程用一個流程模板表示,每個模板用來創(chuàng)建對應的流程實例,例如電信業(yè)務支撐系統(tǒng)中,可用字符串“@A01-A02-A03-(B01&B02&B03)-B04-C01-C02#”表示普通電話裝機業(yè)務流程如果用文字描述的話,即為從業(yè)務受理環(huán)節(jié)開始,業(yè)務受理環(huán)節(jié)結束后的下一個流程是選號環(huán)節(jié),選號環(huán)節(jié)結束后,是驗單環(huán)節(jié),驗單環(huán)節(jié)結束后是測量環(huán)節(jié)、裝機環(huán)節(jié)、程控環(huán)節(jié),這個三個環(huán)節(jié)是并行執(zhí)行,但是需要每個完成執(zhí)行成功后才能到達該流程的下一個環(huán)節(jié)復測,復測環(huán)節(jié)結束后是復測環(huán)節(jié),整個流程結束。
每個環(huán)節(jié)意味著系統(tǒng)執(zhí)行的動作,那上面的例子來講,包括選號、驗單、測量、裝機、程控、復測、竣工等動作,而這些動作、節(jié)點的狀態(tài)以及扭轉條件等數(shù)據(jù)都是由工作流數(shù)據(jù)處理裝置1對字符串表示的工作流數(shù)據(jù)進行解析獲得的,解析的依據(jù)是存儲在數(shù)據(jù)庫中的字符解析表,由這個字符解析表完成字符串與各種屬性值、動作的對應關系。
這種字符串以一定的編碼規(guī)則來存儲工作流數(shù)據(jù),可以簡化存儲內容,而且方便修改和查找;并且節(jié)約了存儲空間,對系統(tǒng)的硬件配置要求低,降低了硬件投資。
如圖2所示,為圖1實施例中工作流數(shù)據(jù)處理方法的流程示意圖,包括以下步驟步驟101,讀寫模塊將以字符串方式表達的工作流數(shù)據(jù)以及對應于所述工作流數(shù)據(jù)的字符解析表從數(shù)據(jù)庫中讀出,并保存在內存池中;步驟102,解析模塊讀取內存池中的工作流數(shù)據(jù);步驟103,解析模塊讀取內存池中的字符解析表,并根據(jù)該字符解析表對所述工作流數(shù)據(jù)進行分析;步驟104,解析模塊根據(jù)分析結果調用執(zhí)行工作流數(shù)據(jù)對應的動作的執(zhí)行機構。
在工作流數(shù)據(jù)處理裝置啟動時,就將數(shù)據(jù)庫中的以字符串方式表達的工作流取出,然后存儲在內存池中以方便使用,另外還將對應于工作流數(shù)據(jù)的字符解析表也存在內存池中。解析模塊定期的對內存池中的工作流信息進行讀取,然后根據(jù)對應于工作流數(shù)據(jù)的字符解析表對工作流數(shù)據(jù)進行分析,即獲得字符串表示的工作流數(shù)據(jù)的狀態(tài)數(shù)據(jù)、事件數(shù)據(jù)、扭轉條件數(shù)據(jù)以及流程節(jié)點之間的關系數(shù)據(jù)等等,然后再由解析模塊調用事件執(zhí)行程序,如果滿足扭轉條件數(shù)據(jù),則執(zhí)行扭轉。解析模塊除了定期讀取之外,還可以響應偵聽模塊偵聽到的客戶端發(fā)送的執(zhí)行工作流的指令進行讀取。例如偵聽模塊接收到用戶通過客戶端發(fā)送的執(zhí)行某個工作流的指令后,偵聽模塊會將指令轉發(fā)給解析模塊,再由解析模塊在內存池中讀取相應的工作流數(shù)據(jù),再進行分析,以及調用相應的執(zhí)行機構執(zhí)行該工作流。
實施例二如圖3所示,為本發(fā)明工作流數(shù)據(jù)處理裝置的實施例二的結構示意圖,與實施例一相比,工作流數(shù)據(jù)處理裝置1內部增加了監(jiān)控模塊16,監(jiān)控模塊16與其他模塊,諸如內存池11、偵聽模塊14、解析模塊12、讀寫模塊13等連接,用來監(jiān)測異常數(shù)據(jù)或異常事件,當發(fā)生異常時告警。另外還可以加入日志模塊15,與監(jiān)控模塊16連接,用于將監(jiān)控模塊監(jiān)測到的異常數(shù)據(jù)或異常事件記錄在日志文件中。
在對工作流數(shù)據(jù)進行處理的時候,如果監(jiān)控模塊監(jiān)測到事件出錯或者異常的時候,向解析模塊返回修改狀態(tài)的指令,再由解析模塊將所述工作流數(shù)據(jù)設置為中斷狀態(tài),監(jiān)控模塊可以向解析模塊返回事件出錯或者異常的告警級別,并將該次出錯或異常通過日志模塊15記錄在日志文件4中。
與傳統(tǒng)的XML方式不同,字符串方式的工作流數(shù)據(jù)易于查找,而且由于可以通過簡單的字符代表復雜的工作流程,因此無需壓縮存儲在數(shù)據(jù)庫中,大大的節(jié)約了存儲資源,提高了查詢和調用的效率。用戶可以通過客戶端調用某個工作流數(shù)據(jù),并對其中代表事件、狀態(tài)等信息的字符串進行修改,解析模塊都能夠立刻與數(shù)據(jù)庫進行同步更新,而且還定時的對數(shù)據(jù)庫和內存池中的數(shù)據(jù)一致性進行檢查,如果發(fā)現(xiàn)不一致,則將內存中的工作流數(shù)據(jù)同步到數(shù)據(jù)庫中。
字符解析表中包含了很多的標識符,這些標識符在系統(tǒng)中是唯一表示的,可以采用固定長度的編碼,每個編碼都可以通過解析模塊進行解釋,通過增加新的編碼和相應的方法、事件等數(shù)據(jù),可以使本發(fā)明的工作流數(shù)據(jù)處理裝置具備一定的學習能力。
最后應當說明的是以上實施例僅用以說明本發(fā)明的技術方案而非對其限制;盡管參照較佳實施例對本發(fā)明進行了詳細的說明,所屬領域的普通技術人員應當理解依然可以對本發(fā)明的具體實施方式
進行修改或者對部分技術特征進行等同替換;而不脫離本發(fā)明技術方案的精神,其均應涵蓋在本發(fā)明請求保護的技術方案范圍當中。
權利要求
1.一種工作流數(shù)據(jù)處理裝置,其特征在于,包括內存池,用于存儲以字符串方式表達的工作流數(shù)據(jù)和字符解析表信息;解析模塊,與所述內存池連接,用于定時更新內存池中的工作流數(shù)據(jù),響應外部命令讀取內存池中的工作流數(shù)據(jù)或者將工作流數(shù)據(jù)存儲在內存池中,并且對工作流數(shù)據(jù)進行分析;讀寫模塊,與所述內存池和數(shù)據(jù)庫連接,用于對所述內存池和數(shù)據(jù)庫中以字符串方式表達的工作流數(shù)據(jù)進行讀寫;偵聽模塊,與所述解析模塊和客戶端連接,用于偵聽客戶端的事件來對工作流的啟動、調整和結束操作進行控制。
2.根據(jù)權利要求1所述的工作流數(shù)據(jù)處理裝置,其特征在于,還包括監(jiān)控模塊,與所述偵聽模塊、解析模塊、讀寫模塊以及內存池連接,用于對所述偵聽模塊、解析模塊、讀寫模塊以及內存池的異常數(shù)據(jù)或異常事件進行監(jiān)控和告警。
3.根據(jù)權利要求2所述的工作流數(shù)據(jù)處理裝置,其特征在于,還包括日志模塊,與所述監(jiān)控模塊連接,用于將監(jiān)控模塊監(jiān)測到的異常數(shù)據(jù)或異常事件記錄在日志文件中。
4.一種工作流數(shù)據(jù)處理方法,其特征在于,包括以下步驟步驟1,讀寫模塊將以字符串方式表達的工作流數(shù)據(jù)以及對應于所述工作流數(shù)據(jù)的字符解析表從數(shù)據(jù)庫中讀出,并保存在內存池中;步驟2,解析模塊讀取所述內存池中的工作流數(shù)據(jù);步驟3,所述解析模塊讀取所述內存池中的字符解析表,并根據(jù)該字符解析表對所述工作流數(shù)據(jù)進行分析;步驟4,所述解析模塊根據(jù)分析結果調用執(zhí)行所述工作流數(shù)據(jù)對應的動作的執(zhí)行機構。
5.根據(jù)權利要求4所述的工作流數(shù)據(jù)處理方法,其中所述步驟2具體為偵聽模塊接收到客戶端發(fā)送的執(zhí)行工作流的指令,將所述指令轉發(fā)給所述解析模塊,再由所述解析模塊在所述內存池中讀取相應的工作流數(shù)據(jù)。
6.根據(jù)權利要求4所述的工作流數(shù)據(jù)處理方法,其中所述步驟2具體為偵聽模塊定時讀取所述內存池中的工作流數(shù)據(jù)。
7.根據(jù)權利要求4所述的工作流數(shù)據(jù)處理方法,其特征在于,所述步驟3中根據(jù)該字符解析表對所述工作流數(shù)據(jù)進行分析的操作具體為根據(jù)對應于所述工作流數(shù)據(jù)的字符解析表分析所述工作流數(shù)據(jù),獲得狀態(tài)數(shù)據(jù)、事件數(shù)據(jù)、扭轉條件數(shù)據(jù)以及流程節(jié)點關系數(shù)據(jù)。
8.根據(jù)權利要求7所述的工作流數(shù)據(jù)處理方法,其特征在于,所述步驟4具體為所述解析模塊根據(jù)所述狀態(tài)數(shù)據(jù)、事件數(shù)據(jù)、流程扭轉條件數(shù)據(jù)以及流程節(jié)點關系數(shù)據(jù)調用事件執(zhí)行程序,如果滿足扭轉條件數(shù)據(jù),則執(zhí)行扭轉。
9.根據(jù)權利要求8所述的工作流數(shù)據(jù)處理方法,其特征在于,所述步驟4中,當監(jiān)測模塊監(jiān)測到事件執(zhí)行出錯或者異常時,向所述解析模塊返回修改狀態(tài)的指令,再由所述解析模塊將所述工作流數(shù)據(jù)設置為中斷狀態(tài)。
10.根據(jù)權利要求8所述的工作流數(shù)據(jù)處理方法,其特征在于,所述步驟4中,當監(jiān)測模塊監(jiān)測到事件執(zhí)行出錯或者異常時,所述監(jiān)控模塊向解析模塊返回所述事件執(zhí)行出錯或異常的告警級別。
11.根據(jù)權利要求9或10所述的工作流數(shù)據(jù)處理方法,其特征在于,所述步驟4中監(jiān)測模塊監(jiān)測到事件執(zhí)行出錯或者異常時,所述監(jiān)控模塊將所述事件執(zhí)行出錯或異常信息通過日志模塊輸出到日志中。
全文摘要
本發(fā)明涉及一種工作流數(shù)據(jù)處理裝置,其包括內存池,與內存池連接的解析模塊;與內存池和數(shù)據(jù)庫連接的讀寫模塊,與解析模塊和客戶端連接的偵聽模塊。本發(fā)明還涉及一種工作流數(shù)據(jù)處理方法,其包括讀寫模塊將以字符串方式表達的工作流數(shù)據(jù)以及對應于工作流數(shù)據(jù)的字符解析表從數(shù)據(jù)庫中讀出,并保存在內存池中;解析模塊讀取內存池中的工作流數(shù)據(jù)和字符解析表,并根據(jù)該字符解析表對工作流數(shù)據(jù)進行分析;解析模塊根據(jù)分析結果調用執(zhí)行工作流數(shù)據(jù)對應的動作的執(zhí)行機構。本發(fā)明采用字符串以一定的編碼規(guī)則來存儲工作流數(shù)據(jù),簡化存儲內容,而且方便修改和查找;并且節(jié)約了存儲空間,對系統(tǒng)硬件配置的要求低,降低了硬件投資。
文檔編號G06Q10/00GK1983313SQ20061007278
公開日2007年6月20日 申請日期2006年4月7日 優(yōu)先權日2006年4月7日
發(fā)明者李凌志 申請人:華為技術有限公司