專利名稱:一種報表設計器智能驗證的算法、方法及裝置的制作方法
技術領域:
本發(fā)明涉及報表計算驗證處理領域,尤其是指一種報表設計器智能驗證的算法、方法及裝置。
背景技術:
報表是企業(yè)管理的基本措施和途徑,是企業(yè)的基本業(yè)務要求,也是實施BI (商業(yè)智能)戰(zhàn)略的基礎。報表可以幫助企業(yè)訪問與格式化數(shù)據(jù),并把數(shù)據(jù)信息以可靠和安全的方式呈現(xiàn)給使用者。深入洞察企業(yè)運營狀況,是企業(yè)發(fā)展的強大驅動力。報表設計器是一套設計報表的可視化操作頁面,通常提供向導和拖放等操作模式來提高開發(fā)效率。通過報表設計器能夠快速的開發(fā)報表。報表設計器提供報表的所有配置以及驗證等操作。在報表設計器中,操作的基礎對象是單元格。我們要設計出一張報表,通常需要在單元格上編寫表達式,通過報表的解析引擎進行后臺計算,最終在展現(xiàn)器中顯示我們要的結果。和普通的表單一樣,為減少報表計算的驗證錯誤信息,同時對服務器后臺運算產生不必要的壓力,所以需要在提交或保存前對所填寫的數(shù)據(jù)進行有效性驗證。在傳統(tǒng)報表工具的驗證算法中普遍存在以下幾個問題1、觸發(fā)報表的驗證方式傳統(tǒng)報表在用戶進行報表設計完成后點擊保存后,再開始對報表的驗證請求進行多個發(fā)送后臺推送并進行驗證,這種方式雖然能到達預期的結果,能對報表進行驗證,可是在效率上卻是一個大問題;如果每次都從前端返回多個驗證到后臺進行驗證的時候,會對后臺服務造成不小的運算壓力;如在同一個時間點多人都進行報表配置后點擊保存時,后臺服務對多人點擊保存發(fā)送的多個請求同時進行運算,這時會對系統(tǒng)后臺服務運算不間斷的重復運行,使系統(tǒng)工作效率降低。所以我們認為一個優(yōu)秀的報表設計器,無論在哪個環(huán)節(jié)都應該是能減少非法的后臺請求,減輕服務器后臺運行的壓力,并及時快速的體現(xiàn)出所設計操作進行驗證的結果。然而以上列舉的傳統(tǒng)報表這種觸發(fā)式驗證方式卻恰恰相反,對提高用戶的工作效率產生較大的影響。2、多數(shù)據(jù)源報表驗證的方法在傳統(tǒng)的報表中都存在無法對動態(tài)的、多數(shù)據(jù)源報表進行有效的驗證;中國式的報表對數(shù)據(jù)的準確性與復雜性要求都很高;同時對數(shù)據(jù)的多源性也是千變萬化,而在傳統(tǒng)的報表中幾乎都沒有對報表數(shù)據(jù)的多源性進行驗證;因此,我們認為一種好的驗證方法,在符合報表的各種基本驗證需求的同時,也需要對數(shù)據(jù)的準確性也能進行更好的校驗處理,并能更高效更快捷的提高用戶對數(shù)據(jù)源準確度的掌握。3、表達式與函數(shù)驗證方法傳統(tǒng)的報表對于表達式與函數(shù)的驗證只能基于一些比較基本的方法進行驗證;如表達式是否為空、簡單的統(tǒng)計函數(shù)等;傳統(tǒng)報表表達式不能支持現(xiàn)在使用最多的JAVASCRIPT的運算符、單元格地址、數(shù)據(jù)集字段等驗證;同時傳統(tǒng)報表的函數(shù)驗證也不支持數(shù)據(jù)集函數(shù)驗證等;如跨數(shù)據(jù)集函數(shù)名稱前綴與參數(shù)驗證等。4、單元格驗證方法傳統(tǒng)的報表的單元格驗證,主要是對單元格的數(shù)據(jù)類型或單元格內的字符進行基本的驗證,如單元格數(shù)據(jù)類型是否為用戶定制的整數(shù)型或者浮點數(shù)等;無法滿足現(xiàn)代單元格由于很多共同點需要進行相互交叉引用與依賴關系功能,而在進行相互交叉引用時如果沒有進行循環(huán)的驗證,很容易導致單元格交叉引用依賴造成的死循環(huán)問題,在傳統(tǒng)的報表中也很多不支持報表的單元格相互交叉引用循環(huán)驗證;5、驗證提示結果展示傳統(tǒng)的報表驗證在驗證不通過時,所有的驗證提示都是由彈出的提示框來進行結果的顯示,這種方式在用戶體驗與友好性上效果不是很好,且在對各種配置驗證問題定位上效率也不是很高;隨著計算機信息化的高速發(fā)展,用戶對驗證問題提示的要求也越來越高,在形成驗證的同時,對問題驗證不通過而存在的問題進行快速定位并提示的要求也越來越普遍。
發(fā)明內容
本發(fā)明的目的在于克服了上述缺陷,提供一種報表設計器智能驗證的算法、方法及裝置。本發(fā)明的目的是這樣實現(xiàn)的一種報表設計器智能驗證的算法,它包括步驟,SI)、表達式預處理,對表達式進行字符的清除、常量的替換及預驗證;S2)、表達式分解,將預處理后的表達式根據(jù)字符類型分解為多個子表達式;S3)、表達式驗證,對分解后個子表達式及預處理后的表達式分別進行語法驗證,對應驗證失敗輸出驗證錯誤信息;S4)、單元格引用驗證,對單元格的依賴關系進行驗證,執(zhí)行包括通過循環(huán)判斷單元格的引用關系是否存在循環(huán)引用,若存在則輸出驗證錯誤信息,否則返回正確標識;上述步驟中SI具體包括步驟,S101)、表達式初判斷,判斷用戶所輸入的內容中是否有表達式字符,如果沒有則直接按普通字符串處理;如果有則去掉上述表達式字符并繼續(xù)步驟;S102)、處理轉義字符,根據(jù)表達式預處理的字符清除規(guī)則,去除轉義字符;S103)、替換字符常量,根據(jù)表達式預處理的常量替換規(guī)則,將所有的常量用O來代替;S104):驗證括號,判斷括號是否成對出現(xiàn),若是則繼續(xù)步驟,否則輸出驗證錯誤信息;上述步驟中S2具體包括,循環(huán)讀取預處理后表達式的每個字符,對每個字符執(zhí)行下述步驟S201到S204的判斷并獲取返回,并將該返回作為一個子表達式;S201)、判斷是否為數(shù)字或字母或下劃線,若是則將字符累加到暫存列表,繼續(xù)讀取下一個字符并循環(huán)本判斷,否則繼續(xù)步驟;S202)、判斷字符是否為“(”,否則繼續(xù)步驟,是則進一步判斷其是否為當前暫存列表中字符串的首字符,是則將”作為運算符返回,否則將”累加到暫存列表,再依次讀取”后的字符累加到暫存列表,直至讀取到“后將“累加到暫存列表停止讀取,將暫存列表中字符串返回;S203)、判斷是否為運算符,是則將當前運算符累加到暫存列表,繼續(xù)循環(huán)讀取下一個字符并循環(huán)本判斷,否則將暫存列表的字符串作為運算符返回。S204)、直接將字符累加到暫存列表;上述步驟中S3具體包括步驟,
S301)、子表達式語法驗證,包括若子表達式為運算符,則將運算符放入棧中;若子表達式為函數(shù),判斷“(”與“)”前的字符串是否為函數(shù)名,“(”與“)”間的為參數(shù),解析參數(shù),以遞歸方式驗證參數(shù)是否有效,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;若子表達式為數(shù)據(jù)集,根據(jù)模板數(shù)據(jù)集定義驗證子表達式的字符串是否屬于數(shù)據(jù)集,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;若子表達式為常量,則將其加入到隊列中;若子表達式為擴展格,判斷子表達式字符串是否符合擴展格格式,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;若子表達式為單元格,判斷是否含有此單元格,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;S302)、預處理后的表達式語法驗證,對預處理后的表達式根據(jù)后綴表達式方式模擬運算,對隊列和棧中的所有對象經過運算符計算都為0,最后判斷是否結果只有一個,并不存在其他對象或運算符,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中若是則驗證通過,否則驗證失敗輸出驗證錯誤信息只錯誤信息列表中;S303)、判斷錯誤信息列表是否為空,否則輸出錯誤信息列表的驗證錯誤信息,是則驗證通過繼續(xù)步驟;上述步驟中S4具體包括步驟,S401 )、清除單兀格原有的依賴關系;S402)、處理依賴,分別讀取出當前單元格的表達式和主格的依賴,記錄到依賴列表中;S403)、遍歷判斷單元格是否存在循環(huán)引用,是則停止驗證輸出引用錯誤信息,否則對下一個單元格執(zhí)行本步驟判斷,直至所有單元格完成判斷后繼續(xù)步驟;S404)、返回正確標識。本發(fā)明還提供了一種報表設計器智能驗證的方法,它包括,A)、用戶觸發(fā)驗證,當用戶對單元格內容編輯完成時觸發(fā)報表設計器智能驗證算法的步驟;B)、執(zhí)行所述權利要求1-5任意一項所述報表設計器智能驗證的算法的步驟;C)、根據(jù)錯誤信息列表向用戶進行驗證錯誤信息和/或引用錯誤信息呈現(xiàn)的步驟。上述步驟C中的呈現(xiàn)方式包括,所述呈現(xiàn)方式包括,對應錯誤信息列表中的驗證錯誤信息進行彈出對話窗的方式顯示,對應引用錯誤信息,將存在循環(huán)引用的兩個單元格之間以圖形方式標注提醒顯示。本發(fā)明另外再涉及一種報表設計器智能驗證的裝置,它包括,表達式預處理模塊,用于對表達式進行字符的清除、常量的替換及預驗證;表達式分解模塊,用于將表達式預處理模塊預處理后的表達式根據(jù)字符類型分解為多個子表達式;表達式驗證模塊,用于對分解后個子表達式及預處理后的表達式分別進行語法驗證,對應驗證失敗輸出驗證錯誤信息;單元格引用驗證模塊,用于對單元格的依賴關系進行驗證,執(zhí)行包括通過循環(huán)判斷單元格的引用關系是否存在循環(huán)引用,若存在則輸出驗證錯誤信息,否則返回正確標識;上述中,所述表達式預處理模塊具體包括,表達式初判斷單元,用于判斷用戶所輸入的內容中是否有表達式字符,如果沒有則直接按普通字符串處理;如果有則去掉上述表達式字符后送到處理轉義字符單元;處理轉義字符單元,用于根據(jù)表達式預處理的字符清除規(guī)則,去除轉義字符;替換字符常量單元,用于接收處理轉義字符單元處理后的表達式并根據(jù)表達式預處理的常量替換規(guī)則,將所有的常量用O來代替;驗證括號單元,用于接收替換字符長臉單元處理后的表達式,并判斷括號是否成對出現(xiàn),若是轉到表達式分解模塊,否則輸出驗證錯誤信息。上述中,所述表達式分解模塊具體用于循環(huán)讀取預處理后表達式的每個字符,對每個字符執(zhí)行數(shù)字或字母或下劃線判斷單元、括號判斷單元、運算符判斷單元及字符累加單元的判斷并獲取返回,并將該返回作為一個子表達式,包括有,數(shù)字或字母或下劃線判斷單元,用于判斷是否為數(shù)字或字母或下劃線,若是則將字符累加到暫存列表,繼續(xù)讀取下一個字符并循環(huán)本判斷,否則轉到括號判斷單元;括號判斷單元,用于判斷字符是否為“(”,否則繼續(xù)步驟,是則進一步判斷其是否為當前暫存列表中字符串的首字符,是則將“(”作為運算符返回,否則將“(”累加到暫存列表,再依次讀取“(”后的字符累加到暫存列表,直至讀取到“后將“累加到暫存列表停止讀取,將暫存列表中字符串返回;運算符判斷單元,用于判斷是否為運算符,是則將當前運算符累加到暫存列表,繼續(xù)循環(huán)讀取下一個字符并循環(huán)本判斷,否則將暫存列表的字符串作為運算符返回。字符累加單元,用于直接將字符累加到暫存列表;上述中,所述表達式驗證模塊具體包括,子表達式語法驗證單元,用于執(zhí)行下述處理,若子表達式為運算符,則將運算符放入棧中;若子表達式為函數(shù),判斷“(”與“)”前的字符串是否為函數(shù)名,“(”與“)”間的為參數(shù),解析參數(shù),以遞歸方式驗證參數(shù)是否有效,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;若子表達式為數(shù)據(jù)集,根據(jù)模板數(shù)據(jù)集定義驗證子表達式的字符串是否屬于數(shù)據(jù)集,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;若子表達式為常量,則將其加入到隊列中;若子表達式為擴展格,判斷子表達式字符串是否符合擴展格格式,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;若子表達式為單元格,判斷是否含有此單元格,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;預處理后的表達式語法驗證單元,用于待子表達式語法驗證單元輸出后對預處理后的表達式根據(jù)后綴表達式方式模擬運算,對隊列和棧中的所有對象經過運算符計算都為O,最后判斷是否結果只有一個,并不存在其他對象或運算符,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中若是則驗證通過,否則驗證失敗輸出驗證錯誤信息只錯誤信息列表中;錯誤信息判斷單元,用于待預處理后的表達式語法驗證單元完成后,判斷錯誤信息列表是否為空,否則輸出錯誤信息列表的驗證錯誤信息,是則驗證通過繼續(xù)。上述中,所述單元格引用驗證模塊具體包括,依賴關系清除單元,用于清除單元格原有的依賴關系;處理依賴單元,用于在依賴關系清除單元清除后分別讀取出當前單元格的表達式和主格的依賴,記錄到依賴列表中;循環(huán)引用判斷單元,用于處理依賴單元執(zhí)行后遍歷判斷單元格是否存在循環(huán)引用,是則停止驗證輸出引用錯誤信息,否則對下一個單元格執(zhí)行本步驟判斷,直至所有單元格完成判斷轉到反饋單元;反饋單元,用于返回正確標識。本發(fā)明的有益效果在于提供了一種報表設計器的智能驗證算法、方法及裝置,通過根據(jù)報表設計器模板規(guī)則中配置的數(shù)據(jù)源、函數(shù)參數(shù)、計算與顯示表達式、統(tǒng)計圖表達式、單元格交叉引用依賴等進行驗證,在對報表設計器完成一項配置后進行自動觸發(fā)驗證是否達到驗證算法的規(guī)范或要求;即當設計表達式或函數(shù)完成后,自動驗證此次的設計表達式或其它函數(shù)等,不需要等到整張報表設計完成后點擊保存時將所有的驗證請求發(fā)送后臺進行一個一個的驗證,并造成不必要的后臺服務壓力,使之達到報表設計驗證的快捷性與友好性。驗證包括數(shù)據(jù)源驗證、表達式驗證、函數(shù)參數(shù)驗證、單元格驗證等多種驗證。
下面結合附圖詳述本發(fā)明的具體結構圖1為本發(fā)明的算法的整體流程示意圖;圖2為本發(fā)明的算法的預處理部分的具體流程示意圖;圖3為本發(fā)明的算法的分解表達式部分的具體流程示意圖;圖4為本發(fā)明的算法的表達式驗證部分的具體流程示意圖;圖5為本發(fā)明的算法的單元格引用部分的具體流程示意圖;圖6為本發(fā)明的驗證方法的整體流程示意圖;圖7為本發(fā)明的驗證錯誤信息呈現(xiàn)示意圖;圖8為本發(fā)明的引用錯誤信息呈現(xiàn)示意圖。
具體實施例方式為詳細說明本發(fā)明的技術內容、構造特征、所實現(xiàn)目的及效果,以下結合實施方式并配合附圖詳予說明。在報表中計算表達式的準確性是非常重要,一個驗證錯誤信息的計算表達式輕則產生驗證錯誤信息的統(tǒng)計結果,重則直接造成計算引擎宕機,影響所有報表的計算。為此本專利提出了一種報表計算表達式智能驗證算法,為動態(tài)報表中的表達式提供智能驗證,通過減少驗證錯誤信息的運算從而提高報表開發(fā)的效率。這種算法主要為解決動態(tài)報表表達式多樣性以及多源性等的問題而引起的一系列諸如環(huán)路、數(shù)據(jù)無窮大等問題。因此引入報表驗證機制。本發(fā)明核心是通過一種報表設計器的智能驗證算法來實現(xiàn)動態(tài)報表的高效驗證,報表設計器的智能驗證算法進行動態(tài)報表驗證的過程主要分為表達式預處理、分解表達式、處理函數(shù)、表達式驗證、單元格引用驗證這幾個步驟。如圖1所示為一種報表設計器智能驗證的算法,它包括步驟SI)、表達式預處理,對表達式進行字符的清除、常量的替換及預驗證。本步驟主要解決表達式一些字符的清除,如\’和\"符號,因為這兩對字符為單引號和雙引號的轉義符號,輸出結果就是單引號和雙引號,不影響計算;替換常量,將所有的常量用O來代替,因為表達在設計器中不參與計算,本驗證只是模擬計算,所以忽略常量本身的值,統(tǒng)一使用O來替換;以及括號的判斷,主要判斷括號是否成對出現(xiàn)。當這部分出現(xiàn)問題的時候,則驗證失敗直接輸出驗證錯誤信息至錯誤信息列表中驗證結束,這樣就能提高驗證的效率,具體參見圖2包括的步驟S101)、表達式初判斷,判斷用戶所輸入的內容中(通常是內容的首位)是否有表達式字符(例如‘=’號),如果沒有則直接按普通字符串處理;如果有說明是表達式,去掉上述表達式字符(如上述為‘=’號)并繼續(xù)步驟;S102)、處理轉義字符,根據(jù)表達式預處理的字符清除規(guī)則,去除轉義字符(例如“V ”和“\" ”符號);S103)、替換字符常量,根據(jù)表達式預處理的常量替換規(guī)則,將所有的常量用O來代替;S104):驗證括號,判斷括號是否成對出現(xiàn),若是則繼續(xù)步驟,輸出驗證錯誤信息至錯誤信息列表中;上述預處理環(huán)節(jié)中對表達式進行了初步的語法驗證,去除了對運算邏輯不產生影響的運算符和操作數(shù),可為報表驗證過程解析表達式提高效率。S2 )、表達式分解,將預處理后的表達式根據(jù)字符類型分解為多個子表達式。本步驟主要對單元格中字符串的字符逐個讀取解析,通過讀取表達式的括號,來判斷表達式是否存在函數(shù),以及運算符的解析,具體如圖3,包括循環(huán)讀取預處理后表達式的每個字符,對每個字符執(zhí)行下述步驟S201到S204的判斷并獲取返回,并將該返回作為一個子表達式。以下所有返回將用于下一步判斷是否是函數(shù)、運算符、數(shù)據(jù)集字段、擴展格、單元格引用。S201)、判斷是否為數(shù)字或字母或下劃線,若是則將字符累加到暫存列表,繼續(xù)讀取下一個字符并循環(huán)本判斷,否則繼續(xù)步驟。這樣可以加速循環(huán),提高驗證的運算效率;S202)、判斷字符是否為“(”,否則繼續(xù)步驟,是則進一步判斷其是否為當前暫存列表中字符串的首字符,是則將”作為運算符返回,否則將”累加到暫存列表,再依次讀取”后的字符累加到暫存列表,直至讀取到“后將“累加到暫存列表停止讀取,將暫存列表中字符串返回;S203)、判斷是否為運算符,是則將當前運算符累加到暫存列表,繼續(xù)循環(huán)讀取下一個字符并循環(huán)本判斷,否則將暫存列表的字符串作為運算符返回。
S204)、直接將字符累加到暫存列表。上述步驟的目的在于,在表達式驗證前,將整個復雜的表達式拆分若干個簡單的、單操作符的表達式。通過表達式分解,使每次驗證變得格外簡單明了,保證了驗證結果的正確性。S3)、表達式驗證,對分解后個子表達式及預處理后的表達式分別進行語法驗證,對應驗證失敗輸出驗證錯誤信息。參見圖4,具體包括S301)、子表達式語法驗證,包括I)、若子表達式為運算符,則將運算符放入棧中;2)、若子表達式為函數(shù),判斷“(”與“)”前的字符串是否為函數(shù)名,“(”與“)”間的為參數(shù),解析參數(shù),以遞歸方式驗證參數(shù)是否有效,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中。本步驟主要通過與系統(tǒng)定義的函數(shù)名及參數(shù)進行匹配,如果存在執(zhí)行該函數(shù)的方法,如果不存在則給出驗證錯誤信息。遞歸方式驗證,如對函數(shù)[=max (to_double (argl))],處理方式為先處理to_double函數(shù),接著處理max函數(shù)。常量就直接入隊列,如=’ 123456’,進入隊列也為123456。3)、若子表達式為數(shù)據(jù)集,根據(jù)模板數(shù)據(jù)集定義驗證子表達式的字符串是否屬于數(shù)據(jù)集,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中。4)、若子表達式為常量,則將其加入到隊列中。5)、若子表達式為擴展格,判斷子表達式的字符串是否符合擴展格格式,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中。上述的擴展格是指一個子表達式字符串為單元格地址加上一對大括號的形式,例如A3 {}代表的就是個A3的擴展格。6)、若子表達式為單元格,判斷是否含有此單元格,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中。如[=All],而實際工作區(qū)域只到A10,說明All是驗證錯誤信息的因此驗證不通過。借由前面進行了表達式的分解,所以在子表達式驗證時,只需要根據(jù)子表達式的返回類型進行驗證,返回驗證結果即可。S302)、預處理后的表達式語法驗證,對預處理后的表達式根據(jù)后綴表達式方式模擬運算,對隊列和棧中的所有對象經過運算符計算都為0,最后判斷是否結果只有一個,并不存在其他對象或運算符,若是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中。S303)、判斷錯誤信息列表是否為空,否則輸出錯誤信息列表的驗證錯誤信息,是則驗證通過則繼續(xù)步驟。S4)、單元格引用驗證,對單元格的依賴關系進行驗證,執(zhí)行包括通過循環(huán)判斷單元格的引用關系是否存在循環(huán)引用,若存在則輸出引用錯誤信息,否則返回正確標識。具體如圖5,S401)、清除單兀格原有的依賴關系。由于上次驗證已將驗證信息保存在單元格依賴數(shù)組中,本次驗證中所涉及到的單元格地址可能存在單元格依賴數(shù)組中,所以需要進行清除的操作來保證不進行重復的驗證以及驗證的結果的正確性。S402)、處理依賴,分別讀取出當前單元格的表達式和主格的依賴,記錄到依賴列表中。S403)、遍歷判斷單元格是否存在循環(huán)引用,是則停止驗證輸出引用錯誤信息,否則對下一個單元格執(zhí)行本步驟判斷,直至所有單元格完成判斷后繼續(xù)步驟。上述判斷方式為從單元格引用列表第二個單元格地址開始,如果讀取到的單元格地址在此之前出現(xiàn)過,那么判定此單元格存在循環(huán)引用。當出現(xiàn)循環(huán)引用時將停止驗證,返回引用錯誤信息。S404)、返回正確標識。此步驟直接返回正確標識是因為如果驗證結果出現(xiàn)了循環(huán)引用,那么在驗證過程中已經返回了結果,并退出了循環(huán)。所以執(zhí)行到此步驟時,說明驗證通過,并未出來循環(huán)引用的情況。上述步驟主要是在表達式語法驗證通過后,對表達式進行單元格引用的驗證。通過此次驗證,解決了單元格交叉引用的可能,保證所填寫的表達式能夠順利的運算和返回正確的結果。綜上可見,上述算法通過在預處理環(huán)節(jié)中就對表達式進行了初步的語法驗證,去除了對運算邏輯不產生影響的運算符和操作數(shù);在驗證時,又將表達式分解成多個子表達式進行驗證,為報表驗證過程解析表達式提高了效率。此外,在表達式驗證通過后,對表達式進行單元格引用的驗證。通過此次驗證,解決了單元格循環(huán)引用的問題,保證所填寫的表達式能夠順利的運算和返回正確的結果。參見圖6,本發(fā)明還涉及一種報表設計器智能驗證的方法,該方法結合上述算法,它包括步驟A)、用戶觸發(fā)驗證,當用戶對單元格內容編輯完成時觸發(fā)報表設計器智能驗證算法。B )、執(zhí)行上述報表設計器智能驗證算法。C)、根據(jù)錯誤信息列表向用戶進行驗證錯誤信息和/或引用錯誤信息呈現(xiàn)。通過以上各環(huán)節(jié)的處理,將表達式進行解析與驗證,及時的反饋給用戶一個友好的展現(xiàn)提示,提高了用戶對報表開發(fā)的準確度與執(zhí)行效率。所述呈現(xiàn)方式包括,對應錯誤信息列表中的驗證錯誤信息進行彈出對話窗的方式顯示,對應引用錯誤信息,將存在循環(huán)引用的兩個單元格之間以圖形方式(例如畫紅線提醒)標注提醒顯示。具體舉例I)、對應表達式驗證過程中出現(xiàn)驗證錯誤信息,使用對話框(提示框)的方式,將涉及到的錯誤內容顯示在設計器中。所述驗證錯誤信息包括有出錯的字符串及出錯的原因。如圖7就是在表達式[=dsl. seI (name)+A3]于驗證過程中會返回一個驗證錯誤信息“dsl. sel :函數(shù)不存在”。2)、對應表達式出現(xiàn)循環(huán)引用的引用錯誤信息,則在出現(xiàn)循環(huán)引用的兩個單元格之間畫出一條紅色的直線。直線的起點為第一個單元格的中心,終點為第二個單元格的中心;若兩個單元格不是相鄰的,這條直線將跨越這兩個單元格進行展現(xiàn)。如圖8就是當Al單元格的表達式為[=B3],B3單元格的表達式為[=Al],這兩個配置在經過單元格引用驗證后,被判定為出現(xiàn)了循環(huán)引用,返回的結果為在Al和B3這兩個單元格之間以Al單元格的中心為起點,B3單元格為終點,畫出一條紅色的直線;由于這兩個單元格不是相鄰的,所以A2單元格和B2單元格的部分區(qū)域也受驗證結果的影響,顯示一部分直線。上述報表設計器的智能驗證方法,通過在用戶編輯完成單元格內容時就觸發(fā)報表設計器智能驗證算法,然后對驗證過程的驗證錯誤信息實時的呈現(xiàn)給客戶,從而大大提高了報表的設計效率。本發(fā)明還提供了一種報表設計器智能驗證的裝置,它包括表達式預處理模塊,用于對表達式進行字符的清除、常量的替換及預驗證;表達式分解模塊,用于將表達式預處理模塊預處理后的表達式根據(jù)字符類型分解為多個子表達式;表達式驗證模塊,用于對分解后個子表達式及預處理后的表達式分別進行語法驗證,對應驗證失敗輸出驗證錯誤信息;單元格引用驗證模塊,用于對單元格的依賴關系進行驗證,執(zhí)行包括通過循環(huán)判斷單元格的引用關系是否存在循環(huán)引用,若存在則輸出驗證錯誤信息,否則返回正確標識。較佳的,上述表達式預處理模塊包括表達式初判斷單元,用于判斷用戶所輸入的內容中是否有表達式字符,如果沒有則直接按普通字符串處理;如果有則去掉上述表達式字符后送到處理轉義字符單元;處理轉義字符單元,用于根據(jù)表達式預處理的字符清除規(guī)則,去除轉義字符;替換字符常量單元,用于接收處理轉義字符單元處理后的表達式并根據(jù)表達式預處理的常量替換規(guī)則,將所有的常量用O來代替;驗證括號單元,用于接收替換字符長臉單元處理后的表達式,并判斷括號是否成對出現(xiàn),若是轉到表達式分解模塊,否則輸出驗證錯誤信息。所述表達式分解模塊具體用于循環(huán)讀取預處理后表達式的每個字符,對每個字符執(zhí)行數(shù)字或字母或下劃線判斷單元、括號判斷單元、運算符判斷單元及字符累加單元的判斷并獲取返回,并將該返回作為一個子表達式,包括有,數(shù)字或字母或下劃線判斷單元,用于判斷是否為數(shù)字或字母或下劃線,若是則將字符累加到暫存列表,繼續(xù)讀取下一個字符并循環(huán)本判斷,否則轉到括號判斷單元;括號判斷單元,用于判斷字符是否為“(”,否則繼續(xù)步驟,是則進一步判斷其是否為當前暫存列表中字符串的首字符,是則將“(”作為運算符返回,否則將“(”累加到暫存列表,再依次讀取“(”后的字符累加到暫存列表,直至讀取到“后將“累加到暫存列表停止讀取,將暫存列表中字符串返回;運算符判斷單元,用于判斷是否為運算符,是則將當前運算符累加到暫存列表,繼續(xù)循環(huán)讀取下一個字符并循環(huán)本判斷,否則將暫存列表的字符串作為運算符返回。字符累加單元,用于直接將字符累加到暫存列表;較佳的,上述表達式驗證模塊包括
子表達式語法驗證單元,用于執(zhí)行下述處理,若子表達式為運算符,則將運算符放入棧中;若子表達式為函數(shù),判斷“(”與“)”前的字符串是否為函數(shù)名,“(”與“)”間的為參數(shù),解析參數(shù),以遞歸方式驗證參數(shù)是否有效,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;若子表達式為數(shù)據(jù)集,根據(jù)模板數(shù)據(jù)集定義驗證子表達式的字符串是否屬于數(shù)據(jù)集,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;若子表達式為常量,則將其加入到隊列中;若子表達式為擴展格,判斷子表達式字符串是否符合擴展格格式,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;若子表達式為單元格,判斷是否含有此單元格,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中;預處理后的表達式語法驗證單元,用于待子表達式語法驗證單元輸出后對預處理后的表達式根據(jù)后綴表達式方式模擬運算,對隊列和棧中的所有對象經過運算符計算都為0,最后判斷是否結果只有一個,并不存在其他對象或運算符,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中若是則驗證通過,否則驗證失敗輸出驗證錯誤信息只錯誤信息列表中;錯誤信息判斷單元,用于待預處理后的表達式語法驗證單元完成后,判斷錯誤信息列表是否為空,否則輸出錯誤信息列表的驗證錯誤信息,是則驗證通過繼續(xù)。較佳的,上述單元格引用驗證模塊包括依賴關系清除單元,用于清除單元格原有的依賴關系;處理依賴單元,用于在依賴關系清除單元清除后分別讀取出當前單元格的表達式和主格的依賴,記錄到依賴列表中;循環(huán)引用判斷單元,用于處理依賴單元執(zhí)行后遍歷判斷單元格是否存在循環(huán)引用,是則停止驗證輸出引用錯誤信息,否則對下一個單元格執(zhí)行本步驟判斷,直至所有單元格完成判斷轉到反饋單元;反饋單元,用于返回正確標識。綜上所述,本發(fā)明方案實在結合智能動態(tài)報表所需所有表達式與對目前主流的動態(tài)報表驗證規(guī)則進行了研究下設計的一種報表設計器中智能驗證的算法。采用這種算法不僅增強了報表設計器工具的健壯性,而且可以確保生成報表規(guī)則文件準確性。不但能減輕對服務器后臺運行產生不必要的壓力,而且能給用戶提供一個智能的驗證驗證錯誤信息的方法,使用戶快捷高效的編寫各種復雜計算表達式與配置信息等,而不用擔心所編寫的表達式是否存在驗證錯誤信息,同時在驗證提示的友好性上也采用了各種友好性提示。如在進行設計報表單元格相互交叉依賴與引用時,如果單元格存在死循環(huán)問題,本發(fā)明技術中的報表設計器采用直線對相互交叉依賴引用的單元格進行用直線連接,快速定位相互引用依賴的單元格進行提示存在環(huán)路問題。具體實施例A)、用戶在單元格內輸入表達式“=3++' G00\' GLE’ +A4+dsl. select (name) ”,輸入完畢后,觸發(fā)報表設計器智能驗證算法動態(tài)對客戶完成的輸入進行驗證。
B)、單元格表達式驗證算法SI)、表達式預處理。S101)、表達式初判斷,用戶輸入的內容首位有“=”號,說明是表達式。去掉“=”號,結果為 “3++,G00\' GLE,+A4+ds1. select (name),,;S102)、處理轉義字符,根據(jù)表達式預處理的字符清除規(guī)則,去除轉義字符\’和\",返回 “3++' GOOGLE,+A4+dsl. select (name) ” ;S103)、替換字符常量,根據(jù)表達式預處理的常量替換規(guī)則,將所有的常量用0來代替,返回 “0++0+A4+dsl. select (name) ” ;S104)、驗證括號,dsl. selectO函數(shù)后面的括號成對出現(xiàn),預處理通過,返回“0++0+A4+dsl. select(name)” ;S2)、表達式分解,根據(jù)上述返回的表達式“0++0+A4+dsL select (name) ”,循環(huán)讀表達式的每個字符,對每個字符執(zhí)行步驟S201到S204的判斷并獲取返回,并將該返回作為一個子表達式從而進行分解。經過分解步驟后,最終在表達式中數(shù)字“O”遇到兩次,“A4”遇到一次,這三個字符或字符串都直接返回,分別作為一個子表達式;在表達式中循環(huán)到dsl. select后的“(”時,繼續(xù)讀取下個字符,直到讀到右括號“)”時,返回 dsl. select (name);表達式中運算符讀取返回一個“++”和兩個“ + ”號。S3)、進行子表達式的語法驗證。S301)、子表達式語法驗證,根據(jù)返回的子表達式進行驗證I)、運算符按子表達式的返回順序將一個“++”和兩個“ + ”依次存放到棧中。2)、函數(shù)子表達式中返回一個函數(shù)“dsl. select (name)”,根據(jù)小數(shù)點”取出函數(shù)名“select”,判斷其是否與系統(tǒng)配置文件里所定義的相同,若函數(shù)未找到直接返回驗證失敗加入錯誤信息列表中。否則判斷函數(shù)參數(shù)“name”是否是數(shù)據(jù)集“dsl”中的一個字段如果出錯也直接返回驗證失敗加入錯誤信息列表中,正確則繼續(xù)循環(huán)判斷下一個子表達式3)、數(shù)據(jù)集根據(jù)小數(shù)點”取出數(shù)據(jù)集名稱“dsl”,根據(jù)模板數(shù)據(jù)集定義驗證子表達式的字符串是否屬于數(shù)據(jù)集,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤息列表中。4)、返回的子表達式的兩個常量“O”直接加入到隊列中。5)、對于擴展格,本例子中返回的子表達式中無擴展格。6)、單元格,讀取到A4單元格,判斷A4單元格是否存在,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中。403)、如果之前的驗證都能通過,根據(jù)后綴表達式模擬運算,對整個預處理后表達式進行運算,對隊列和棧中的所有對象經過運算符計算都為0,最后判斷是否結果只有一個,并不存在其他對象或運算符,若是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中。404)、判斷錯誤信息列表是否為空,否則輸出錯誤信息列表的驗證錯誤信息,是則驗證通過則繼續(xù)步驟。S4)、單元格引用驗證
本例中,用戶的配置為A1單元格的表達式為[=B3],B3單元格的表達式為[=Al]。S401)、清空單元格原有的依賴關系列表。S402)、處理依賴。分別將引用到的單元格存入依賴列表,從Al單元格開始,Al單元格引用B3單元格,所以分別記錄Al和B3 ;再從Al的引用單元格B3開始,B3單元格引用的是Al單元格,所以再將Al記錄到依賴關系列表;沒有出現(xiàn)第三個單元格,依賴處理結束。結果為:A1,B3,A1。S403)、判斷是否出現(xiàn)循環(huán)引用。第二個值B3不等于第一個值Al,繼續(xù)判斷第三個值與第二值、第一個值是否相等,得出的結果是第三個值Al等于第一個值Al,所以這里就出現(xiàn)了單元格的循環(huán)引用。因為出現(xiàn)循環(huán)是在第三個值Al處得出的,所以找到引用Al的單元格B3,在第一個值Al和B3之間畫出一條紅線,用于表示這兩個單元格出現(xiàn)了單元格循環(huán)引用。終止后面的驗證。C)、根據(jù)錯誤信息列表向用戶進行引用錯誤信息呈現(xiàn)。
權利要求
1.一種報表設計器智能驗證的算法,其特征在于它包括步驟, SI)、表達式預處理,對表達式進行字符的清除、常量的替換及預驗證; S2 )、表達式分解,將預處理后的表達式根據(jù)字符類型分解為多個子表達式; 53)、表達式驗證,對分解后個子表達式及預處理后的表達式分別進行語法驗證,對應驗證失敗輸出驗證錯誤信息; 54)、單元格引用驗證,對單元格的依賴關系進行驗證,執(zhí)行包括通過循環(huán)判斷單元格的引用關系是否存在循環(huán)引用,若存在則輸出驗證錯誤信息,否則返回正確標識。
2.如權利要求1所述的報表設計器智能驗證的算法,其特征在于所述步驟SI具體包括步驟, 5101)、表達式初判斷,判斷用戶所輸入的內容中是否有表達式字符,如果沒有則直接按普通字符串處理;如果有則去掉上述表達式字符并繼續(xù)步驟; 5102)、處理轉義字符,根據(jù)表達式預處理的字符清除規(guī)則,去除轉義字符; 5103)、替換字符常量,根據(jù)表達式預處理的常量替換規(guī)則,將所有的常量用O來代替; 5104):驗證括號,判斷括號是否成對出現(xiàn),若是則繼續(xù)步驟,否則輸出驗證錯誤信息。
3.如權利要求1所述的報表設計器智能驗證的算法,其特征在于所述步驟S2具體包括,循環(huán)讀取預處理后表達式的每個字符,對每個字符執(zhí)行下述步驟S201到S204的判斷并獲取返回,并將該返回作為一個子表達式; 5201)、判斷是否為數(shù)字或字母或下劃線,若是則將字符累加到暫存列表,繼續(xù)讀取下一個字符并循環(huán)本判斷,否則繼續(xù)步驟; 5202)、判斷字符是否為“(”,否則繼續(xù)步驟,是則進一步判斷其是否為當前暫存列表中字符串的首字符,是則將”作為運算符返回,否則將”累加到暫存列表,再依次讀取”后的字符累加到暫存列表,直至讀取到“后將“累加到暫存列表停止讀取,將暫存列表中字符串返回; 5203)、判斷是否為運算符,是則將當前運算符累加到暫存列表,繼續(xù)循環(huán)讀取下一個字符并循環(huán)本判斷,否則將暫存列表的字符串作為運算符返回; 5204)、直接將字符累加到暫存列表。
4.如權利要求1所述的報表設計器智能驗證的算法,其特征在于所述步驟S3具體包括步驟, S301)、子表達式語法驗證,包括 若子表達式為運算符,則將運算符放入棧中; 若子表達式為函數(shù),判斷“(”與前的字符串是否為函數(shù)名,“(”與間的為參數(shù),解析參數(shù),以遞歸方式驗證參數(shù)是否有效,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中; 若子表達式為數(shù)據(jù)集,根據(jù)模板數(shù)據(jù)集定義驗證子表達式的字符串是否屬于數(shù)據(jù)集,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中; 若子表達式為常量,則將其加入到隊列中; 若子表達式為擴展格,判斷子表達式字符串是否符合擴展格格式,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中; 若子表達式為單元格,判斷是否含有此單元格,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中; 5302)、預處理后的表達式語法驗證,對預處理后的表達式根據(jù)后綴表達式方式模擬運算,對隊列和棧中的所有對象經過運算符計算都為O,最后判斷是否結果只有一個,并不存在其他對象或運算符,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中若是則驗證通過,否則驗證失敗輸出驗證錯誤信息只錯誤信息列表中; 5303)、判斷錯誤信息列表是否為空,否則輸出錯誤信息列表的驗證錯誤信息,是則驗證通過繼續(xù)步驟。
5.如權利要求1所述的報表設計器智能驗證的算法,其特征在于所述步驟S4具體包括步驟, 5401)、清除單元格原有的依賴關系; 5402)、處理依賴,分別讀取出當前單元格的表達式和主格的依賴,記錄到依賴列表中; 5403)、遍歷判斷單元格是否存在循環(huán)引用,是則停止驗證輸出引用錯誤信息,否則對下一個單元格執(zhí)行本步驟判斷,直至所有單元格完成判斷后繼續(xù)步驟; 5404)、返回正確標識。
6.一種報表設計器智能驗證的方法,其特征在于它包括, A)、用戶觸發(fā)驗證,當用戶對單元格內容編輯完成時觸發(fā)報表設計器智能驗證算法的步驟; B)、執(zhí)行所述權利要求1-5任意一項所述報表設計器智能驗證的算法的步驟; C)、根據(jù)錯誤信息列表向用戶進行驗證錯誤信息和/或引用錯誤信息呈現(xiàn)的步驟。
7.如權利要求6所述的報表設計器智能驗證的方法,其特征在于所述步驟C的呈現(xiàn)方式包括,所述呈現(xiàn)方式包括,對應錯誤信息列表中的驗證錯誤信息進行彈出對話窗的方式顯示,對應引用錯誤信息,將存在循環(huán)引用的兩個單元格之間以圖形方式標注提醒顯示。
8.—種報表設計器智能驗證的裝置,其特征在于它包括, 表達式預處理模塊,用于對表達式進行字符的清除、常量的替換及預驗證; 表達式分解模塊,用于將表達式預處理模塊預處理后的表達式根據(jù)字符類型分解為多個子表達式; 表達式驗證模塊,用于對分解后個子表達式及預處理后的表達式分別進行語法驗證,對應驗證失敗輸出驗證錯誤信息; 單元格引用驗證模塊,用于對單元格的依賴關系進行驗證,執(zhí)行包括通過循環(huán)判斷單元格的引用關系是否存在循環(huán)引用,若存在則輸出驗證錯誤信息,否則返回正確標識。
9.如權利要求1所述的報表設計器智能驗證的算法,其特征在于 所述表達式預處理模塊具體包括, 表達式初判斷單元,用于判斷用戶所輸入的內容中是否有表達式字符,如果沒有則直接按普通字符串處理;如果有則去掉上述表達式字符后送到處理轉義字符單元; 處理轉義字符單元,用于根據(jù)表達式預處理的字符清除規(guī)則,去除轉義字符; 替換字符常量單元,用于接收處理轉義字符單元處理后的表達式并根據(jù)表達式預處理的常量替換規(guī)則,將所有的常量用O來代替; 驗證括號單元,用于接收替換字符長臉單元處理后的表達式,并判斷括號是否成對出現(xiàn),若是轉到表達式分解模塊,否則輸出驗證錯誤信息; 所述表達式分解模塊具體用于循環(huán)讀取預處理后表達式的每個字符,對每個字符執(zhí)行數(shù)字或字母或下劃線判斷單元、括號判斷單元、運算符判斷單元及字符累加單元的判斷并獲取返回,并將該返回作為一個子表達式,包括有, 數(shù)字或字母或下劃線判斷單元,用于判斷是否為數(shù)字或字母或下劃線,若是則將字符累加到暫存列表,繼續(xù)讀取下一個字符并循環(huán)本判斷,否則轉到括號判斷單元; 括號判斷單元,用于判斷字符是否為否則繼續(xù)步驟,是則進一步判斷其是否為當前暫存列表中字符串的首字符,是則將“(”作為運算符返回,否則將“(”累加到暫存列表,再依次讀取“(”后的字符累加到暫存列表,直至讀取到“后將“累加到暫存列表停止讀取,將暫存列表中字符串返回; 運算符判斷單元,用于判斷是否為運算符,是則將當前運算符累加到暫存列表,繼續(xù)循環(huán)讀取下一個字符并循環(huán)本判斷,否則將暫存列表的字符串作為運算符返回; 字符累加單元,用于直接將字符累加到暫存列表; 所述表達式驗證模塊具體包括, 子表達式語法驗證單元,用于執(zhí)行下述處理, 若子表達式為運算符,則將運算符放入棧中; 若子表達式為函數(shù),判斷“(”與前的字符串是否為函數(shù)名,“(”與間的為參數(shù),解析參數(shù),以遞歸方式驗證參數(shù)是否有效,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中; 若子表達式為數(shù)據(jù)集,根據(jù)模板數(shù)據(jù)集定義驗證子表達式的字符串是否屬于數(shù)據(jù)集,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中; 若子表達式為常量,則將其加入到隊列中; 若子表達式為擴展格,判斷子表達式字符串是否符合擴展格格式,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中; 若子表達式為單元格,判斷是否含有此單元格,是則驗證通過,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中; 預處理后的表達式語法驗證單元,用于待子表達式語法驗證單元輸出后對預處理后的表達式根據(jù)后綴表達式方式模擬運算,對隊列和棧中的所有對象經過運算符計算都為O,最后判斷是否結果只有一個,并不存在其他對象或運算符,否則驗證失敗輸出驗證錯誤信息加入至錯誤信息列表中若是則驗證通過,否則驗證失敗輸出驗證錯誤信息只錯誤信息列表中; 錯誤信息判斷單元,用于待預處理后的表達式語法驗 證單元完成后,判斷錯誤信息列表是否為空,否則輸出錯誤信息列表的驗證錯誤信息,是則驗證通過繼續(xù); 所述單元格引用驗證模塊具體包括, 依賴關系清除單元,用于清除單元格原有的依賴關系; 處理依賴單元,用于在依賴關系清除單元清除后分別讀取出當前單元格的表達式和主格的依賴,記錄到依賴列表中; 循環(huán)引用判斷單元,用于處理依賴單元執(zhí)行后遍歷判斷單元格是否存在循環(huán)引用,是則停止驗證輸出引用錯誤信息,否則對下一個單元格執(zhí)行本步驟判斷,直至所有單元格完成判斷轉到反饋單元;反饋單元, 用于返回正確標識。
全文摘要
本發(fā)明涉及一種報表設計器智能驗證的算法、方法及裝置,通過根據(jù)報表設計器模板規(guī)則中配置的數(shù)據(jù)源、函數(shù)參數(shù)、計算與顯示表達式、統(tǒng)計圖表達式、單元格交叉引用依賴等進行驗證,在對報表設計器完成一項配置后進行自動觸發(fā)驗證是否達到驗證算法的規(guī)范或要求;即當設計表達式或函數(shù)完成后,自動驗證此次的設計表達式或其它函數(shù)等,不需要等到整張報表設計完成后點擊保存時將所有的驗證請求發(fā)送后臺進行一個一個的驗證,并造成不必要的后臺服務壓力,使之達到報表設計驗證的快捷性與友好性。驗證包括數(shù)據(jù)源驗證、表達式驗證、函數(shù)參數(shù)驗證、單元格驗證等多種驗證。
文檔編號G06F11/07GK103034553SQ201210560168
公開日2013年4月10日 申請日期2012年12月20日 優(yōu)先權日2012年12月20日
發(fā)明者呂玲, 莊莉, 陳謀坤, 林開雄, 林立, 陳書亮 申請人:廈門億力吉奧信息科技有限公司, 國家電網公司