專利名稱:非編程方式的二維表格動態(tài)擴展的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于工業(yè)自動化系統(tǒng)實時數(shù)據(jù)庫領(lǐng)域,應(yīng)用在工業(yè)自動化系統(tǒng)實時監(jiān)控系 統(tǒng)中,該方法使用在實時數(shù)據(jù)組態(tài)過程中,是一種通用的二維方式數(shù)據(jù)模型組態(tài)方法。
背景技術(shù):
一個通用的工業(yè)自動化監(jiān)控系統(tǒng)的實時數(shù)據(jù)庫在針對不同的應(yīng)用領(lǐng)域通常會根 據(jù)用戶需求調(diào)整數(shù)據(jù)表結(jié)構(gòu),這意味著一個通用的實時數(shù)據(jù)庫提供用戶自定義數(shù)據(jù)表結(jié)構(gòu) 的功能。針對每一個特定的數(shù)據(jù)表結(jié)構(gòu)定義,各個字段的意義是只有定義該表結(jié)構(gòu)的用戶 知道的,傳統(tǒng)的方式需要針對具體表的定義和字段的意義,單獨開發(fā)對應(yīng)的數(shù)據(jù)表維護工 具,將數(shù)據(jù)表結(jié)構(gòu)、字段的編輯工具、字段之間的關(guān)聯(lián)關(guān)系等硬編碼到應(yīng)用程序中,造成開 發(fā)周期長,程序版本眾多,而且需要不斷隨著用戶對表結(jié)構(gòu)的變更而修改程序。實時數(shù)據(jù)庫提供的字段數(shù)據(jù)類型包括基本數(shù)據(jù)類型和復雜數(shù)據(jù)類型,基本數(shù)據(jù)類 型包含整型、浮點型、雙精度型、字符串型、時間型、標志位型、顏色型、多選一型等。復雜數(shù) 據(jù)類型包括記錄指針、由多個基本數(shù)據(jù)類型構(gòu)成的結(jié)構(gòu)等,同時一個數(shù)據(jù)表中的不同字段 之間可能存在關(guān)聯(lián)關(guān)系,不同數(shù)據(jù)表的字段之間也可能存在關(guān)聯(lián)關(guān)系。實時庫編輯工具作為一個通用的工業(yè)自動化監(jiān)控平臺的一部分,必須以通用工具 的方式實現(xiàn),該工具可根據(jù)用戶自定義的表結(jié)構(gòu)和字段意義進行相應(yīng)的配置即可適用于不 同的應(yīng)用場合,而不是采用硬編碼方式。同時針對復雜數(shù)據(jù)類型,還需要提供可擴展的接 口,保證在二維數(shù)據(jù)表格編輯渲染容器不修改代碼的前提下,可由第三方開發(fā)者單獨開發(fā) 相應(yīng)的編輯器和渲染器,并加載到二維數(shù)據(jù)表格編輯渲染容器中。
發(fā)明內(nèi)容
本方法提出了一種非編程方式的通用二維表格動態(tài)擴展的實現(xiàn)方法,通過該方 法,將用戶定義的數(shù)據(jù)表抽象成一個二維數(shù)據(jù)模型,并通過實時庫結(jié)構(gòu)無關(guān)的接口訪問實 時庫數(shù)據(jù),在該抽象的二維數(shù)據(jù)模型基礎(chǔ)上,提出了面向列的二維數(shù)據(jù)表格編輯渲染容器 的概念,將具體字段的意義抽取出來,并由外部的接口定義文件描述。面向列的二維數(shù)據(jù)表格編輯渲染容器針對二維數(shù)據(jù)模型中每一列,提供了特定的 編輯器和渲染器。二維數(shù)據(jù)模型中每一列都具有特定的意義,在任意一行數(shù)據(jù)中該列都有 統(tǒng)一的編輯行為和渲染行為,面向列的編輯器提供了對任意一行記錄該列的數(shù)據(jù)編輯方 法,同時面向列的渲染器提供了對任意一行記錄該列的數(shù)據(jù)顯示方法。二維數(shù)據(jù)表格編輯 渲染容器對編輯器和渲染器提供了若干接口方法,通過接口方法編輯器可以響應(yīng)容器的開 始編輯和結(jié)束編輯事件,并以回調(diào)函數(shù)的方式對二維數(shù)據(jù)模型進行寫入操作,通過接口方 法渲染器可以響應(yīng)容器的顯示方法,將特定列的渲染結(jié)果寫入二維表格的顯示。二維數(shù)據(jù)表格編輯渲染容器內(nèi)置了基本數(shù)據(jù)類型的編輯器和渲染器,可以滿足最 基本的數(shù)據(jù)類型的編輯和渲染功能,這些基本數(shù)據(jù)類型包括整型、浮點型、雙精度型、字 符串型、時間型等,另外內(nèi)置的編輯器和渲染器還支持基本數(shù)據(jù)類型的變化意義的處理,包括標志位型、顏色型、多選一型、IP地址型等的整形字段處理功能,字符串型的正則表達 式合法性判斷功能等,除了內(nèi)置的編輯器和渲染器外,二維數(shù)據(jù)表格編輯渲染容器還提供 了擴展編輯器和渲染器的接口,可以滿足復雜數(shù)據(jù)類型和關(guān)聯(lián)字段的編輯渲染功能,擴展 方法如下容器規(guī)定了編輯器和渲染器的接口,并約定第三方編輯器和渲染器的實例化方 法,在容器加載特定數(shù)據(jù)列的編輯器和渲染器時,通過其實例化方法得到編輯器和渲染器 的實例,符合容器接口規(guī)范的編輯器和渲染器具備了與容器之間的交互功能,包括編輯事 件的響應(yīng)、渲染事件的響應(yīng)等,并將結(jié)果返回給容器進行處理。擴展的編輯器和渲染器通過一個XML格式文件進行定義,該文件中指明了每一個 擴展編輯器、渲染器的唯一標簽(該標簽將用于數(shù)據(jù)字段定義文件中指明具體字段所采用 的編輯器與渲染器)、實例化方法(包括方法名,參數(shù)意義),該文件由二維數(shù)據(jù)表格編輯渲 染容器在初始化時加載,并實例化編輯容器和渲染容器。數(shù)據(jù)字段定義文件用于將用戶定義的數(shù)據(jù)表或視圖抽象成一個二維數(shù)據(jù)模型,該 模型定義了數(shù)據(jù)字段與實時庫數(shù)據(jù)源之間的對應(yīng)關(guān)系,二維數(shù)據(jù)表格編輯渲染容器在對模 型中數(shù)據(jù)進行取值和賦值操作時,通過該對應(yīng)關(guān)系將取值結(jié)果返回給數(shù)據(jù)模型,并將賦值 結(jié)果寫入到實時庫。數(shù)據(jù)字段定義文件同時指明了該模型中具體字段所采用的編輯器和渲 染器類型,及其相關(guān)實例化參數(shù)。通過數(shù)據(jù)字段定義文件,二維數(shù)據(jù)表格編輯渲染容器可以 對特定的數(shù)據(jù)表進行實例化,形成二維表格,對表格中的每一列所采用的編輯器和渲染器, 通過其實例化方法和相關(guān)參數(shù)進行實例化,最終形成運行時的編輯器和渲染器,進入編輯 流程和渲染流程,響應(yīng)容器的編輯事件和渲染事件,對二維表格進行編輯和渲染。
圖1是二二維數(shù)據(jù)模型與數(shù)據(jù)源的映射關(guān)系圖
圖2是二二維表格編輯容器的內(nèi)置編輯器和擴展編輯器的接入方法示意圖
圖3是二二維表格渲染容器的內(nèi)置渲染器和擴展渲染器的接入方法示意圖
圖4是二二維表格編輯容器和渲染容器實例化過程示意圖
圖5是二二維表格編輯器的響應(yīng)處理過程
圖6是二二維表格渲染器的響應(yīng)處理過程
圖7是--個二維表格工具的初始化和編輯渲染流程示意圖
具體實施例方式本申請中用到的專門術(shù)語實時庫基于內(nèi)存技術(shù)的高速訪問的數(shù)據(jù)庫;數(shù)據(jù)表按照字段和記錄組織的二維數(shù)據(jù)模型;二維表格是上述數(shù)據(jù)表的視圖;編輯器面向上述二維表格的列,對列數(shù)據(jù)進行編輯的工具和方法;渲染器面向上述二維表格的列,對列數(shù)據(jù)進行顯示的工具和方法;關(guān)聯(lián)表某個數(shù)據(jù)表的字段內(nèi)容是對另外數(shù)據(jù)表的某個字段的引用;二維表格編輯容器上述編輯器的集合,并提供動態(tài)擴展方法;二維表格渲染容器上述渲染器的集合,并提供動態(tài)擴展方法;
1.圖1示意了二維表格的數(shù)據(jù)模型與具體數(shù)據(jù)源的接口規(guī)范,通過該數(shù)據(jù)接口規(guī) 范,二維數(shù)據(jù)模型通過getValue函數(shù)調(diào)用實時庫的值,通過setValue設(shè)置實時庫的值。2.圖2示意了二維表格編輯容器的內(nèi)置編輯器和擴展編輯器的接入方法,二維表 格編輯器需要符合二維表格編輯容器的接入規(guī)范,并實現(xiàn)以下接口和事件響應(yīng)函數(shù)Component getEditor(Object value, int iRow, int iCol);Object getEditorValue ();void startEditingO ;void endEditingO ;3.圖3示意了二維表格渲染容器的內(nèi)置渲染器和擴展渲染器的接入方法,二維表 格渲染器需要符合二維表格渲染容器的接入規(guī)范,并實現(xiàn)以下接口函數(shù)Component getRender(Object value, int iRow, int iCol)。4.圖4示意了二維表格編輯渲染容器的實例化方法,通過編輯器定義接口文件和 渲染器定義接口文件讀取到擴展編輯器和渲染器的定義,并加入到容器中,一個具體字段 的編輯器和渲染器是編輯容器和渲染容器中具體編輯器和渲染器的實例化。5.圖5示意了二維表格視圖與列編輯器的處理流程,二維表格產(chǎn)生編輯事件,根 據(jù)所在列將編輯事件傳遞給特定列的編輯器,編輯器調(diào)用StartEditing方法開始對數(shù)據(jù) 進行編輯,此時編輯的數(shù)據(jù)是原始數(shù)據(jù)的克隆,編輯完成后通過StopEditing方法的參數(shù) 判斷是否提交,如果提交,將編輯結(jié)果首先傳遞給二維數(shù)據(jù)模型(抽象數(shù)據(jù)源)進行驗證, 驗證通過后寫入具體數(shù)據(jù)源;如果不提交或驗證未通過,將取消編輯。6.圖6示意了二維表格視圖與列渲染器的處理流程,二維表格產(chǎn)生刷新事件,根 據(jù)所在列將刷新事件傳遞給特定列的渲染器,渲染器的getRender方法根據(jù)從二維數(shù)據(jù)模 型得到的屬于進行渲染處理,并將結(jié)果顯示在二維表格內(nèi)。7.圖7示意了一個二維表格工具的初始化和編輯渲染流程示意圖,整個流程包 括>通過數(shù)據(jù)表定義文件、編輯器定義文件、渲染器定義文件初始化容器管理器;>初始化實時數(shù)據(jù)管理器;>編輯容器實例化;>渲染容器實例化;>通過數(shù)據(jù)源和定義構(gòu)造二維數(shù)據(jù)模型;>二維表格實例化;>列編輯器實例化;>列渲染器實例化;>進入編輯流程和渲染流程;。
權(quán)利要求
一種非編程方式的二維表格動態(tài)擴展的實現(xiàn)方法,該方法包括通過工業(yè)自動化系統(tǒng)實時數(shù)據(jù)庫提供的通用訪問接口方式,可以按照數(shù)據(jù)庫結(jié)構(gòu)無關(guān)的方式對數(shù)據(jù)表進行訪問,數(shù)據(jù)表被抽象為二維表格的數(shù)據(jù)模型,二維表格面向該抽象的數(shù)據(jù)模型,將數(shù)據(jù)和顯示分開處理,數(shù)據(jù)模型僅實現(xiàn)基本的接口,與底層的實時庫進行數(shù)據(jù)交互,降低了程序的復雜性并增強了可維護性和靈活性。二維表格作為數(shù)據(jù)模型的編輯工具和顯示工具,實現(xiàn)了多種編輯方式和渲染方式,對于基本數(shù)據(jù)類型,該方法提供基本數(shù)據(jù)類型的編輯器和渲染器,對于復雜的數(shù)據(jù)類型、字段關(guān)聯(lián)和表間關(guān)聯(lián)的數(shù)據(jù)類型,該方法提出了擴展模式,在保證二維表格編輯渲染容器不修改代碼的前提下對容器進行擴展。
2.如權(quán)利要求1所述的方法,所述實時數(shù)據(jù)庫的數(shù)據(jù)表(數(shù)據(jù)源)抽象為二維數(shù)據(jù)模 型,該二維數(shù)據(jù)模型通過接口方式與數(shù)據(jù)源交換數(shù)據(jù),所述接口的實例化實現(xiàn)了與多種數(shù) 據(jù)源連接,所述接口具備如下基本函數(shù)(Java語言,其他語言可參照該定義)Object getValue(int col, int row);boolean setValue(int col, int row,Object value) ; 0
3.如權(quán)利要求1所述的方法,所述二維表格編輯渲染容器實現(xiàn)內(nèi)置編輯器與擴展方 法,支持從編輯渲染定義接口文件(格式為XML)加載具體二維數(shù)據(jù)模型的編輯器和渲染 器,并綁定到相關(guān)的二維表格的列。
4.如權(quán)利要求1所述的方法,所述二維表格編輯渲染容器定義了擴展編輯器和渲染器 的接口,擴展的編輯器和渲染器實現(xiàn)該接口即可加入到二維表格編輯渲染容器中。
5.如權(quán)利要求1所述的方法,所述基本數(shù)據(jù)類型有多種整型、浮點型、雙精度型、字符 串型、時間型、標志位型、顏色型、多選一型等。
6.如權(quán)利要求1所述的方法,所述復雜數(shù)據(jù)類型是根據(jù)具體業(yè)務(wù)定義的由基本數(shù)據(jù)類 型組合而成的數(shù)據(jù)類型。
7.如權(quán)利要求2所述的方法,所述二維數(shù)據(jù)模型是所述數(shù)據(jù)源的抽象,可以是實時庫 的一個數(shù)據(jù)表,也可以是實時庫基于多個表的一個視圖,所述二維數(shù)據(jù)模型是通過實時庫 接口定義文件(格式為XML)進行定義的。
8.如權(quán)利要求1所述的方法,所述二維表格是所述二維數(shù)據(jù)模型的視圖,在二維表格 內(nèi)可以實現(xiàn)對二維數(shù)據(jù)模型編輯和顯示,編輯結(jié)果通過二維數(shù)據(jù)模型定義的數(shù)據(jù)源接口寫 入數(shù)據(jù)源。
9.如權(quán)利要求1所述的方法,二維表格編輯渲染容器對面向列的編輯器和渲染器提供 編輯事件的響應(yīng)方法和顯示方法,包括如下基本方法(Java語言,其他語言參照該定義)Component getEditor(Object value, int iRow, int iCol); Component getRender(Object value, int iRow, int iCol); Object getEditorValue(); void startEditing (); void endEditingO ;。
10.如權(quán)利要求1所述的方法,還包括如下內(nèi)容 二維表格提供數(shù)據(jù)導入、導出功能;二維表格提供面向多行的統(tǒng)一處理方法;提供擴展編輯器的接口方法;二維表格編輯渲染容器提供接口定義文件的編輯方法。全文摘要
本發(fā)明涉及工業(yè)自動化系統(tǒng)實時數(shù)據(jù)庫組態(tài)的方法,公開了一種非編程方式的二維表格動態(tài)擴展的實現(xiàn)方法。本方法中的二維表格是實時數(shù)據(jù)庫中數(shù)據(jù)表的視圖和編輯工具,通過面向列的編輯器和渲染器擴展方法,可以用非編程的方式實現(xiàn)實時數(shù)據(jù)庫中多種數(shù)據(jù)類型、多種表間關(guān)聯(lián)方式的編輯和顯示功能。通過本方法可以有效的提高工業(yè)自動化系統(tǒng)實時數(shù)據(jù)庫組態(tài)的開發(fā)過程,對其他基于二維表設(shè)計的系統(tǒng)也有借鑒作用。
文檔編號G06F17/30GK101882138SQ200910083650
公開日2010年11月10日 申請日期2009年5月7日 優(yōu)先權(quán)日2009年5月7日
發(fā)明者劉剛, 徐延明, 焦邵華, 黃磊 申請人:北京四方繼保自動化股份有限公司;北京四方博能自動化設(shè)備有限公司