用于數(shù)據(jù)可視化的描述性框架的制作方法【專利摘要】這里描述了一種用來便利數(shù)據(jù)可視化的描述性框架。根據(jù)該框架的一個(gè)方面,提供了一個(gè)或多個(gè)模塊清單,其中模塊清單描述表示可視化的特定組件的模塊。圖清單可以用來協(xié)調(diào)一個(gè)或多個(gè)模塊清單??梢曰趫D清單來呈現(xiàn)可視化。【專利說明】用于數(shù)據(jù)可視化的描述性框架【
技術(shù)領(lǐng)域:
】[0001]本公開一般涉及數(shù)據(jù)可視化(visualization),更具體地,涉及用于構(gòu)造數(shù)據(jù)可視化的描述性框架?!?br>背景技術(shù):
】[0002]數(shù)據(jù)的圖形化表示可以極大地便利對數(shù)據(jù)的分析和理解??梢詮臄?shù)據(jù)集合生成不同類型的圖(chart)(或圖形(graph)),諸如條形圖、面積圖、餅圖、線形圖、柱形圖、散點(diǎn)圖等等,以便適應(yīng)不同的需求。這樣的可視化有助于便利對復(fù)雜的商業(yè)數(shù)據(jù)集合的理解。[0003]開發(fā)者可以使用圖(或制圖(charting))庫為網(wǎng)絡(luò)應(yīng)用添加基于網(wǎng)絡(luò)的可視化支持。圖庫(chartlibrary)通常提供用來呈現(xiàn)可視化的命令。它可以包括預(yù)先定義的圖組件(例如,圖例、軸、標(biāo)題、工具提示、繪圖區(qū)域等等)的庫,所述預(yù)先定義的圖組件可以用作用于新的可視化的構(gòu)建塊。不同的圖可以共享若干公共的圖部件(part)。例如,條形圖和線形圖可以共享相同的圖例,而多條圖(multi-barchart)能夠與單條圖(singlebarchart)共享相同的繪圖區(qū)域。[0004]然而,傳統(tǒng)圖庫的問題之一是:雖然不同的圖可以共享公共的圖部件,但是這樣的圖部件不容易被重復(fù)使用。為了生成新的可視化,所有不同的圖部件都需要從代碼層面重新定義。此外,每個(gè)客戶可能具有不同的要求。例如,客戶可能要求餅圖具有兩個(gè)標(biāo)題(例如,主標(biāo)題和副標(biāo)題(subtitle))或者要求條形圖具有位于頂端的數(shù)值軸(valueaxis)。然而,圖庫通常僅僅支持預(yù)先定義的圖,并且客戶不能夠自行對圖進(jìn)行定制或擴(kuò)展。因此,如果圖庫僅僅提供具有一個(gè)標(biāo)題的默認(rèn)餅圖或者具有位于底部的數(shù)值軸的默認(rèn)條形圖,則不能生成這樣的圖,除非圖庫被定制以適應(yīng)這樣的特定的要求。[0005]因此,需要解決上述挑戰(zhàn)的改進(jìn)的框架。【
發(fā)明內(nèi)容】[0006]這里描述一種用于便利數(shù)據(jù)可視化的描述性框架。根據(jù)框架的一個(gè)方面,在存儲于存儲器模塊中的清單系統(tǒng)中提供預(yù)先定義的模塊清單,其中預(yù)先定義的模塊清單描述表示可視化的特定組件的模塊??梢曰陬A(yù)先定義的模塊清單之一生成新的模塊清單??梢蕴峁┮茫╮eference)新的模塊清單或者預(yù)先定義的模塊清單中的至少一個(gè)的圖清單。然后可以基于圖清單呈現(xiàn)可視化。[0007]根據(jù)框架的另一個(gè)方面,提供了一個(gè)或多個(gè)模塊清單,其中模塊清單描述表示可視化的特定組件的模塊。圖清單可以用來協(xié)調(diào)一個(gè)或多個(gè)模塊清單。然后可以基于圖清單呈現(xiàn)可視化。[0008]利用以下將變得清楚的這些及其它優(yōu)點(diǎn)和特征,通過參考下面的詳細(xì)描述和所附權(quán)利要求、以及通過參考附圖,可以獲得更多的信息?!緦@綀D】【附圖說明】[0009]附圖中示出了一些實(shí)施例,其中相似的參考標(biāo)號指定相似的部分,并且其中:[0010]圖1是示出示范性系統(tǒng)的框圖;[0011]圖2示出為真實(shí)的圖定義的不同的示范性模塊;[0012]圖3a示出示范性架構(gòu);[0013]圖3b示出各種類型的圖清單(manifest)和模塊清單的示范性結(jié)構(gòu);[0014]圖4a示出模塊清單文件的示范性結(jié)構(gòu);[0015]圖4b示出將被添加到容器(container)類型模塊的模塊清單文件的結(jié)構(gòu)的示范性項(xiàng)目;[0016]圖4c示出布局(layout)模塊清單文件的示范性結(jié)構(gòu);[0017]圖4d示出圖清單文件的示范性結(jié)構(gòu);[0018]圖5a示出模塊引用(modulereference)的示范性結(jié)構(gòu);[0019]圖5b分別示出主標(biāo)題和副標(biāo)題的示范性結(jié)構(gòu);[0020]圖6示出另一個(gè)模塊引用的示范性結(jié)構(gòu);[0021]圖7示出具有行為配置(behaviorconfiguration)的模塊引用的示范性結(jié)構(gòu);[0022]圖8示出值依賴(valuedependency)的示范性結(jié)構(gòu);[0023]圖9示出事件依賴的結(jié)構(gòu);[0024]圖IOa到圖IOe示出模塊的示范性接口定義;[0025]圖11示出示范性條形模塊清單樣本;[0026]圖12a到圖12c示出示范性條形圖清單樣本;[0027]圖13a到圖13c示出多條圖清單樣本;[0028]圖14示出用于構(gòu)造可視化的示范性過程;[0029]圖15示出在運(yùn)行時(shí)構(gòu)建可視化的示范性過程?!揪唧w實(shí)施方式】[0030]在下面的描述中,為了闡釋的目的,特定的數(shù)字、材料、和配置被闡述,以便提供對本框架和方法的全面理解,并且以便滿足對規(guī)定的書面描述、可實(shí)施性和最佳方式的要求。然而,本領(lǐng)域技術(shù)人員將清楚,無需特定的示范性細(xì)節(jié)就可以實(shí)踐本框架和方法。在其它實(shí)例中,熟知的特征被省略或簡化,以便使本框架和方法的示范性實(shí)施方式的描述變得清楚,從而更好地闡釋本框架和方法。另外,為了容易理解,某些方法步驟被描繪為單獨(dú)的步驟;然而,這些單獨(dú)描繪的步驟不應(yīng)該被解釋為在執(zhí)行上一定依賴于順序。[0031]這里描述了用于便利構(gòu)造(compose)數(shù)據(jù)可視化的描述性方法的框架。根據(jù)一些實(shí)施方式,通過首先開發(fā)表示圖的組件或部件的較小的可重用模塊來構(gòu)造可視化,其中圖的組件或部件諸如軸、圖例、標(biāo)題、容器、繪圖區(qū)域等等。不同于需要從代碼層面定義圖組件的傳統(tǒng)系統(tǒng),根據(jù)本框架的模塊可以使用配置文件或模塊清單來定義。它們可以獨(dú)立或者經(jīng)由至少一個(gè)圖清單(或配置文件)與其它模塊組合以形成可視化。來自清單系統(tǒng)127的現(xiàn)有模塊可以用來構(gòu)造可視化。此外,可以擴(kuò)展或定制現(xiàn)有模塊以便生成將要添加到清單系統(tǒng)127的新的模塊。圖清單按照其組件模塊和組件模塊之間的關(guān)系來描述可視化。圖清單可以被用戶擴(kuò)展和容易地創(chuàng)造而無需高級編程知識或技能。[0032]因此,本框架有利地達(dá)到了可重用性、可定制性、以及可擴(kuò)展性。它使得圖庫提供商的客戶能夠根據(jù)他們的要求通過定制或擴(kuò)展現(xiàn)有模塊或圖清單以創(chuàng)建新的模塊或圖類型,來修改(tailor)他們的圖庫。此外,客戶能夠?qū)嵤┧麄冏约旱哪K并且將它們添加到現(xiàn)有的數(shù)據(jù)可視化或者創(chuàng)建新的數(shù)據(jù)可視化。[0033]這里描述的框架可以實(shí)施為方法、計(jì)算機(jī)控制的裝置、計(jì)算機(jī)過程、計(jì)算系統(tǒng)、或?qū)嵤橹T如計(jì)算機(jī)可用介質(zhì)的制造物品(article)。這些和各種其它特征將從下面的描述中顯而易見。[0034]圖1是示出可以用來實(shí)施這里描述的框架的示范性系統(tǒng)100的框圖。一般來說,系統(tǒng)100可以包括計(jì)算機(jī)系統(tǒng)106,計(jì)算機(jī)系統(tǒng)106通信地耦合到輸入設(shè)備102(例如,鍵盤、觸摸板、麥克風(fēng)、照相機(jī)等等)和輸出設(shè)備104(例如,顯示設(shè)備、監(jiān)視器、打印機(jī)、揚(yáng)聲器等等)。計(jì)算機(jī)系統(tǒng)106也可以包括用于使用通信鏈路130(例如,電話線、無線網(wǎng)絡(luò)鏈路、有線網(wǎng)絡(luò)鏈路、或電纜網(wǎng)絡(luò))與網(wǎng)絡(luò)132交換數(shù)據(jù)的通信卡或設(shè)備116(例如,調(diào)制解調(diào)器和/或網(wǎng)絡(luò)適配器)。網(wǎng)絡(luò)132可以是局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)。計(jì)算機(jī)系統(tǒng)106可以經(jīng)由網(wǎng)絡(luò)132通信地耦合到一個(gè)或多個(gè)其它的計(jì)算機(jī)系統(tǒng)150。例如,計(jì)算機(jī)系統(tǒng)106可以充當(dāng)服務(wù)器并且使用到一個(gè)或多個(gè)客戶端計(jì)算機(jī)150的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作??蛻舳擞?jì)算機(jī)150可以包括與計(jì)算機(jī)系統(tǒng)106相似的組件,并且可以采用臺式計(jì)算機(jī)、移動設(shè)備、平板計(jì)算機(jī)、通信設(shè)備、基于瀏覽器的設(shè)備等等的形式。位于客戶端計(jì)算機(jī)150的用戶可以與用戶接口152交互,以便與可視化構(gòu)造框架(visualizationcompositionframework)122通信。[0035]計(jì)算機(jī)系統(tǒng)106可以通信地耦合到一個(gè)或多個(gè)數(shù)據(jù)源154。數(shù)據(jù)源154可以是,例如,任何數(shù)據(jù)庫(例如,關(guān)系數(shù)據(jù)庫、內(nèi)存數(shù)據(jù)庫等等)、實(shí)體(例如,相關(guān)記錄的集合)、或者包括在數(shù)據(jù)庫中的數(shù)據(jù)集合。數(shù)據(jù)源154可以是任何合適的數(shù)據(jù),包括緩存或者駐留在本地易失性存儲器中的數(shù)據(jù),并且不需要與數(shù)據(jù)庫直接相關(guān)。[0036]應(yīng)當(dāng)理解,計(jì)算機(jī)系統(tǒng)106的不同組件和子組件可以位于不同的機(jī)器或系統(tǒng)上。還應(yīng)當(dāng)理解,客戶端計(jì)算機(jī)150的組件也可以位于計(jì)算機(jī)系統(tǒng)106上,反之亦然。[0037]計(jì)算機(jī)系統(tǒng)106包括中央處理單元(CPU)114、輸入/輸出(1/0)單元110、和存儲器模塊112。諸如高速緩存、電源、時(shí)鐘電路和通信總線的其它支持電路也可以包括在計(jì)算機(jī)系統(tǒng)106中。此外,上述各項(xiàng)中的任何一個(gè)都可以由專用集成電路來補(bǔ)充或者被合并在專用集成電路中。計(jì)算機(jī)系統(tǒng)106的示例包括手持設(shè)備、移動設(shè)備、個(gè)人數(shù)字助理(PDA)、工作站、服務(wù)器、便攜式膝上型計(jì)算機(jī)、另一個(gè)便攜式設(shè)備、迷你計(jì)算機(jī)、大型計(jì)算機(jī)、存儲系統(tǒng)、專用數(shù)字電器、設(shè)備、組件、其它裝備、或者能夠以定義的方式響應(yīng)并執(zhí)行指令的這些項(xiàng)目的某個(gè)組合。[0038]存儲器模塊112可以是任何形式的非臨時(shí)計(jì)算機(jī)可讀介質(zhì),包括但不限于,動態(tài)隨機(jī)存取存儲器(DRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)、可擦可編程只讀存儲器(EPR0M)、電可擦可編程只讀存儲器(EEPR0M)、快閃存儲器設(shè)備、磁盤、內(nèi)部硬盤、可移動盤、磁光盤、壓縮盤只讀存儲器(CD-ROM)、任何其它易失性或非易失性存儲器、及它們的組合。[0039]存儲器模塊112用于存儲用于實(shí)現(xiàn)這里描述的技術(shù)的機(jī)器可執(zhí)行指令、數(shù)據(jù)、和各種軟件組件,以上各項(xiàng)全部可以被CPU114處理。因此,計(jì)算機(jī)系統(tǒng)106是當(dāng)執(zhí)行機(jī)器可執(zhí)行指令時(shí)變成專用計(jì)算機(jī)系統(tǒng)的通用計(jì)算機(jī)系統(tǒng)??商鎿Q地,這里描述的各種技術(shù)可以實(shí)施為軟件產(chǎn)品的部分。每個(gè)計(jì)算機(jī)程序可以用高級程序語言或面向?qū)ο蟮木幊陶Z言(例如,C、C++、Java、JavaScript、來自SAP?AG的高級業(yè)務(wù)應(yīng)用編程(ABAP?)、結(jié)構(gòu)化查詢語言(SQL)等等)來實(shí)現(xiàn),或者用匯編語言或機(jī)器語言來實(shí)現(xiàn),如果期望的話。所述語言可以是編譯語言或者解釋語言。機(jī)器可執(zhí)行指令不意圖限制在任何特定的編程語言及其實(shí)施方式。要理解,各種編程語言及其代碼可以用來實(shí)現(xiàn)這里包含的公開的教導(dǎo)。[0040]在一個(gè)實(shí)施方式中,計(jì)算機(jī)系統(tǒng)106的存儲器模塊112包括可視化構(gòu)造框架122、呈現(xiàn)組件124、和清單系統(tǒng)127??梢暬瘶?gòu)造框架122可以包括被設(shè)計(jì)用來便利用于構(gòu)造可重用、可定制、并且可擴(kuò)展的可視化的描述性方法的一組功能模塊或程序??梢暬梢砸源鎯υ谇鍐蜗到y(tǒng)127中的圖清單文件(或配置文件)的形式來構(gòu)造,稍后將更詳細(xì)地描述清單系統(tǒng)127。呈現(xiàn)組件124可以從清單系統(tǒng)127和/或數(shù)據(jù)源154檢索數(shù)據(jù)(例如,圖清單文件)并且基于該數(shù)據(jù)生成可視化表示。[0041]清單系統(tǒng)127與管理大量清單(或清單文件)的配置注冊表相似。除了管理清單之夕卜,清單系統(tǒng)127還可以支持清單繼承和擴(kuò)展,從而便利清單創(chuàng)建和/或維護(hù)。在一些實(shí)施方式中,每個(gè)清單都是使用無需高級編程知識或技能就能夠方便地寫或讀的簡單的人類可讀語言(諸如JavaScript對象表示法(JS0N)、可擴(kuò)展標(biāo)記語言(XML)等等)創(chuàng)作的配置文件。[0042]在一些實(shí)施方式中,清單可以是模塊清單或者圖清單。模塊清單描述模塊,其中模塊是制作可視化(或圖)的最小單元。模塊清單通過例如描述模塊的特征(例如,類型、特性等等)來定義新的模塊。圖清單類似于協(xié)調(diào)模塊使它們按照對可視化所預(yù)期的那樣表現(xiàn)的應(yīng)用。圖清單通過描述如何由現(xiàn)有模塊來構(gòu)造圖(例如,層級關(guān)系)以及模塊如何交互來定義新的圖。模塊清單或圖清單可以通過對一個(gè)或多個(gè)現(xiàn)有模塊或圖進(jìn)行定制、擴(kuò)展、或重復(fù)使用來分別生成新的模塊或圖??梢詾椴煌哪K類型定義不同的接口,以保證它們很好地一起協(xié)作。用戶可以實(shí)現(xiàn)他們自己的模塊,并且如果這些模塊與這些接口兼容,則將它們用在圖中。[0043]清單系統(tǒng)127還可以包括用于提供清單管理功能的一個(gè)或多個(gè)組件或應(yīng)用編程接口(API)。例如,清單系統(tǒng)127可以包括用于創(chuàng)建新的類別的"registerCategory(注冊類別)"API。"類別"一般是指清單的類型。例如,清單系統(tǒng)127可以將模塊清單和圖清單分為兩類,即,圖類別和模塊類別,進(jìn)行管理。清單系統(tǒng)127還可以包括用于將新的清單安裝在類別中的"register(注冊)"API、基于清單"id"并且支持對用于定位和訪問清單中的配置項(xiàng)目的一個(gè)或多個(gè)容易使用的訪問器(accessor)API的引用的索引系統(tǒng)、和/或用來啟用能夠用來容易地?cái)U(kuò)展和重復(fù)使用現(xiàn)有清單的繼承(inheritance)的"base/abstract(基礎(chǔ)/抽象)"關(guān)鍵詞。[0044]在一些實(shí)施方式中,清單系統(tǒng)127提供一個(gè)或多個(gè)預(yù)先定義的模塊清單。每個(gè)模塊表示特定類型的可視化組件,諸如圖例、標(biāo)題、軸、繪圖、工具提示等等??梢詾椴煌愋偷目梢暬M件定義不同類型的模塊。通常,可以存在五種類型的模塊:(1)容器;(2)布局;(3)輔助(supplementary);(4)圖;和(5)行為。[0045]容器類型的模塊是包含其它模塊的模塊。它用于在例如數(shù)據(jù)分派(dispatch)、事件分派等等中協(xié)調(diào)它的子模塊。每個(gè)容器類型的模塊可以指定特定的布局模塊在可視化中布置由其子模塊表示的可視部件。示范性容器類型的模塊可以包括但不限于commonContainer(公共容器)模塊、tableContainer(表格容器)模塊、matrixContainer(矩陣容器)模塊等等。每個(gè)容器類型的模塊可以表示不同的協(xié)調(diào)方式。例如,tableContainer模塊和matrixContainer模塊可以實(shí)施不同的數(shù)據(jù)分派算法。[0046]布局類型的模塊用于布置其被分配到的容器類型的模塊的子模塊。它與容器類型的模塊分開定義,并且允許用戶為單一容器類型的模塊指定不同的布局。示范性布局類型的模塊可以包括但不限于gridLayout(網(wǎng)格布局)、xyLayout(xy布局)、chartLayout(圖布局)等等°[0047]輔助類型的模塊不直接表示數(shù)據(jù),而是用于便利用戶對數(shù)據(jù)的解釋。示范性輔助類型的模塊包括但不限于標(biāo)題模塊、軸模塊(例如,數(shù)值軸模塊、類別軸模塊等等)、圖例模塊(例如,色彩圖例模塊、尺寸圖例模塊等等)、工具提示模塊等等。[0048]圖類型的模塊直接以可視的形式表示數(shù)據(jù)。示范性圖類型的模塊包括但不限于條形模塊(例如,柱狀條形模塊、堆疊條形模塊等等)、線形模塊、餅狀模塊、散點(diǎn)圖或氣泡圖模塊、雷達(dá)模塊等等。[0049]行為類型的模塊用于定義并控制可視化的行為。示范性行為類型的模塊包括但不限于選擇模塊、導(dǎo)出模塊等等。[0050]圖2示出為真實(shí)的圖200定義的不同的示范性模塊。如圖所示,圖200可以由容器模塊202、輔助模塊/標(biāo)題204a、輔助模塊/類別軸204b、輔助模塊/數(shù)值軸204c、輔助模塊/圖例204d、和行為模塊206構(gòu)造。[0051]圖3a示出系統(tǒng)106的示范性架構(gòu)300。應(yīng)當(dāng)注意到,在下面的討論中,可以使用相似的參考標(biāo)號引用圖1中描述的特征。[0052]可視化構(gòu)造框架122通信地耦合到清單系統(tǒng)127??梢暬瘶?gòu)造框架122可以分別基于來自用戶的輸入選項(xiàng)(例如,定制模塊或清單定義)和/或清單系統(tǒng)127中的現(xiàn)有模塊和/或圖清單來構(gòu)建輸出可視化。[0053]清單系統(tǒng)127包括各種類型的現(xiàn)有模塊302a_e,諸如圖模塊(例如,條形模塊302a)、輔助模塊(例如,標(biāo)題模塊302b、圖例模塊302c)、容器模塊(例如,XYContainer模塊302d)、以及可能的表示任何其它模塊的其它模塊302e。模塊302a-e的每一個(gè)與定義模塊302a_e的特征的各個(gè)模塊清單304a_e相關(guān)聯(lián)。例如,條形模塊302a與條形模塊的清單304a相關(guān)聯(lián),標(biāo)題模塊302b與標(biāo)題模塊的清單304b相關(guān)聯(lián),圖例模塊302c與圖例模塊的清單304c相關(guān)聯(lián),XYContainer模塊302d與XYContainer模塊的清單304d相關(guān)聯(lián),并且其它模塊302e與其它模塊的清單304e相關(guān)聯(lián)。[0054]模塊清單304a_e中的每一個(gè)還可以分別與圖清單306a_b相關(guān)聯(lián)。在一些實(shí)施方式中,多個(gè)模塊清單304a-e與圖清單306a或306b的每一個(gè)相關(guān)聯(lián)。每個(gè)圖清單描述如何由各種模塊來構(gòu)造圖。例如,條形圖的清單306a可以描述如何由條形模塊302a、標(biāo)題模塊302b、圖例模塊302c、XYContainer模塊302d、和其它模塊302e來構(gòu)造條形圖。圖清單可以"引用"來自清單系統(tǒng)127的一個(gè)或多個(gè)模塊,并且指定所述模塊的特殊特性以生成所述模塊的"實(shí)例化"。[0055]圖3b示出各種類型的圖清單322和模塊清單324的示范性結(jié)構(gòu)。通常,實(shí)線箭頭指示繼承關(guān)系,而具有虛線的箭頭指示引用關(guān)系。[0056]更具體地,從第一清單到第二清單的實(shí)線箭頭指示其中第二清單從第一清單(即,基礎(chǔ))繼承屬性或行為的繼承關(guān)系。例如,為了簡化模塊清單的定義,圖清單可以從預(yù)先存在父類圖清單繼承某些屬性或行為。如圖所示,圓環(huán)圖清單326可以從餅圖清單328繼承;線形圖清單330、瀑布(waterfall)圖清單332和垂直條形圖清單334可以從基礎(chǔ)垂直圖清單336繼承;雙水平圖清單340和雙條形圖清單342可以分別從水平線形圖清單344和條形圖清單346繼承,而水平線形圖清單344和條形圖清單346都可以從基礎(chǔ)水平圖清單348繼承。[0057]從第三清單到第四清單的具有虛線的箭頭指示其中第三清單包括對第四清單的引用的引用關(guān)系。例如,圖清單可以引用一個(gè)或多個(gè)模塊清單以構(gòu)造圖。如圖所示,條形圖清單346可以引用根容器清單360。模塊清單也可以引用其它模塊清單。例如,根容器清單360可以引用工具提示清單350、背景清單352、XYContainer(根)清單354、標(biāo)題清單356、和圖例清單358。XYContainer(根)清單354還可以引用X軸:軸清單362、y軸:軸清單364、行為清單370、和條形清單372。[0058]圖4a示出模塊清單文件的示范性結(jié)構(gòu)402。模塊清單文件可以用來定義輔助類型、圖類型、容器類型或行為類型的模塊。如圖所示,可以通過指定關(guān)鍵詞(id(或唯一標(biāo)識符)、名稱、類型、基礎(chǔ)、特性、事件、和css(或?qū)盈B樣式表))的值來定義每個(gè)模塊。為了簡化定義,關(guān)鍵詞'基礎(chǔ)'可以用來指示基礎(chǔ)模塊,其中定義從基礎(chǔ)模塊繼承和重載(override)。[0059]圖4b示出將被添加到容器類型模塊的模塊清單文件的結(jié)構(gòu)402的示范性項(xiàng)目412。更具體地,項(xiàng)目412包括可以用來為特定的容器類型模塊定義默認(rèn)布局(例如,表格、網(wǎng)格、等等)的關(guān)鍵詞'布局'。[0060]圖4c示出布局模塊清單文件的示范性結(jié)構(gòu)422。如先前所討論的,布局類型的模塊負(fù)責(zé)布置其被分配到的容器類型模塊的子模塊。如圖所示,可以通過指定關(guān)鍵詞(id(或唯一標(biāo)識符)、名稱、基礎(chǔ)、特性、CSS(或?qū)盈B樣式表)和布局(其描述可以使用的布局規(guī)范))的值來定義每個(gè)布局類型的模塊。[0061]圖4d示出圖清單文件的示范性結(jié)構(gòu)432。如先前所討論的,圖清單主要定義具有現(xiàn)有模塊的圖結(jié)構(gòu)和模塊之間的協(xié)調(diào)方式。如圖所示,可以通過指定關(guān)鍵詞(id、名稱、基礎(chǔ)、根、依賴、屬性、和事件)的值來定義每個(gè)圖。為了簡化定義,通過使用用來指示基礎(chǔ)模塊標(biāo)識符的關(guān)鍵詞'基礎(chǔ)'來支持繼承/重載。關(guān)鍵詞'根'指定根模塊引用,所述根模塊引用通常引用包含其全部子模塊的容器類型的模塊。[0062]圖5a示出模塊引用500的示范性結(jié)構(gòu)。當(dāng)使用模塊500來構(gòu)造圖時(shí),對該模塊的引用可以包括在圖的清單文件中。當(dāng)可視化構(gòu)造框架122遇到每個(gè)模塊引用500時(shí),它可以使用唯一模塊標(biāo)識符(id)502在清單系統(tǒng)127中搜索原始的模塊清單。來自原始的模塊清單的元數(shù)據(jù)可以與模塊引用中的特定信息503合并,并且被當(dāng)做用于該模塊在圖中的實(shí)例的元數(shù)據(jù)。特定信息503可以包括與特定用于這個(gè)引用實(shí)例的某些特性相關(guān)聯(lián)的'特性'。例如,可以為圖指定兩個(gè)標(biāo)題(例如,主標(biāo)題和副標(biāo)題),全部兩個(gè)標(biāo)題都可以引用標(biāo)題模塊。[0063]圖5b分別示出主標(biāo)題504和副標(biāo)題506的示范性結(jié)構(gòu)。如圖所示,可以為兩個(gè)標(biāo)題指定不同的'特性'值(例如,'對齊'值)。例如,主標(biāo)題可以被配置為與'中心'對齊,而副標(biāo)題可以被配置為與'右邊'對齊。[0064]圖6示出另一個(gè)模塊引用602的示范性結(jié)構(gòu)。在這個(gè)示例中,該模塊引用是容器模塊引用。關(guān)鍵詞'模塊'604可以用來指定子模塊的名稱。在結(jié)構(gòu)602的主體中,關(guān)鍵詞'布局'606可以用來指定布局模塊。如果沒有指定布局模塊,則可以應(yīng)用默認(rèn)布局。在每個(gè)子模塊引用中,關(guān)鍵詞'布局'608可以用來向布局模塊提供關(guān)于如何布置子模塊的信息(例如,列信息和行信息)。[0065]圖7示出具有行為配置的模塊引用702的示范性結(jié)構(gòu)。為了支持圖內(nèi)的豐富交互,可以將行為模塊綁定到目標(biāo)模塊以使其能夠支持行為。如圖所示,唯一標(biāo)識符'id'704可以在結(jié)構(gòu)702的行為模塊引用中被指定,以便,例如,啟動選擇行為模塊。關(guān)鍵詞'特性'可以用來為行為模塊引用定制特性值。[0066]圖8示出值依賴801的示范性結(jié)構(gòu)。值依賴801可以包括在圖清單文件中以便基于值指定兩個(gè)引用模塊之間的依賴關(guān)系。更具體地,值依賴可以用來連接模塊以使它們在某個(gè)方面一致。當(dāng)模塊被聚集在圖中時(shí),它們可能需要在一個(gè)或多個(gè)方面一致。例如,圖例模塊應(yīng)該與圖繪制模塊使用相同的調(diào)色板;圖例模塊的軸應(yīng)該與圖繪制模塊使用相同的比例尺,等等。如結(jié)構(gòu)801所示,'目標(biāo)'關(guān)鍵詞806和'源'關(guān)鍵詞808用來指定相同的'調(diào)色板'功能,這允許'圖例'目標(biāo)模塊和'main,plot'源模塊共享相同的調(diào)色板。[0067]關(guān)鍵詞'targetModule(目標(biāo)模塊)'802可以用來指定目標(biāo)模塊路徑,而關(guān)鍵詞'sourceModule(源模塊)'804可以用來指定源模塊路徑。模塊路徑用來在框架分解(resolve)值依賴時(shí)找到某個(gè)模塊。模塊路徑反映從該模塊的圖根模塊到該模塊的組成結(jié)構(gòu)。例如,源模塊路徑'main,plot'指示源模塊是由名為'plot'的模塊引用定義的,所述名為'plot'的模塊引用是名為'main'的另一個(gè)模塊引用的孩子。[0068]任何模塊可以經(jīng)由指定的源和目標(biāo)功能具有對任何其它模塊的任何依賴。對于對象的依賴,可能需要預(yù)先定義用于全部可能的依賴的接口。換句話說,需要為被其它模塊依賴的全部模塊配置接口。這可以限制其它模塊的實(shí)施。例如,如果模塊A基于功能X依賴于模塊B,則任何想要被模塊A依賴的模塊C應(yīng)當(dāng)具有與功能X相同的簽名。鑒于模塊C可以為了其它功能性而使用功能X,模塊C的實(shí)施方式可以被限制。然而,對于值依賴,功能簽名可以包括在值依賴配置中,并且只要模塊C向模塊A提供正確的值,則模塊C就能夠使用任何其它功能而不管其簽名為何。[0069]圖9示出事件依賴902的結(jié)構(gòu)。事件依賴902可以包括在圖清單中以便基于事件指定兩個(gè)模塊之間的依賴關(guān)系。結(jié)構(gòu)902與如先前結(jié)合圖8所描述的值依賴結(jié)構(gòu)801相似。如圖所示,目標(biāo)模塊'工具提示'和源模塊'main,plot'基于事件'hideTooltip(隱藏工具提示)'共享依賴關(guān)系。源模塊(例如,'main.plot')可以觸發(fā)事件,而目標(biāo)模塊(例如,'hideTooltip')可以傾聽事件并且對事件作出響應(yīng)。[0070]圖10a-e示出模塊的示范性接口定義。如先前所討論的,可以為每個(gè)模塊定義接口,以便協(xié)調(diào)模塊之間的交互。圖IOa示出可以用于除了行為類型模塊之外的全部類型的模塊的示范性接口定義。圖IOb示出輔助類型模塊的示范性接口定義。圖IOc示出行為類型模塊的示范性接口定義。圖IOd示出容器類型模塊的示范性接口定義。圖IOe示出圖類型模塊的示范性接口定義。[0071]圖11、圖12a_c、和圖13a_c示出示范性清單樣本。更具體地,圖11示出示范性條形模塊清單樣本1102。圖12a-c示出示范性條形圖清單樣本1202。如圖所示,條形圖是由標(biāo)題模塊1204、圖例模塊1206、工具提示模塊1208、具有選擇支持1211的容器模塊1210、數(shù)值軸模塊1212、類別軸模塊1214、條形模塊1216、值依賴1218、和事件依賴1220來構(gòu)造的。[0072]圖13a_c不出多條圖(multiplebarchart)清單樣本1302。如圖所不,多條圖是通過重復(fù)使用參考圖12a-c描述的單條圖模塊1202來構(gòu)造的。工具提示支持1302a-b和選擇支持1304a-b也被提供。[0073]圖14示出用于構(gòu)造可視化的示范性過程1400。過程1400可以由系統(tǒng)100自動地或半自動地執(zhí)行,如先前參考圖1所描述的。應(yīng)當(dāng)注意到,在下面的討論中,將使用相似的參考標(biāo)號對圖1中描述的特征進(jìn)行引用。[0074]在1402,可視化構(gòu)造框架122接收構(gòu)造可視化的請求。通常,構(gòu)造可視化包括創(chuàng)建、修改、和/或?qū)耄╥mport)可視化??梢詮模?,經(jīng)由相關(guān)聯(lián)的用戶接口152的用戶交互,接收該用戶請求。該用戶請求可以指示,例如,對于用于構(gòu)造可視化的期望的模塊或圖清單的用戶選擇。用戶可以選擇定制來自清單系統(tǒng)127的一個(gè)或多個(gè)現(xiàn)有模塊。[0075]在1404,可視化構(gòu)造框架122確定是否用戶選擇的全部模塊已經(jīng)存在于清單系統(tǒng)127中。如果用戶選擇的全部模塊已經(jīng)存在,則過程1400在1418繼續(xù)生成圖的清單文件。[0076]在1406,可視化構(gòu)造框架122確定是否需要定制的容器模塊。當(dāng)例如需要現(xiàn)有容器模塊中沒有的特殊協(xié)調(diào)方式、布局或其他特性時(shí),會需要定制的容器模塊。如果僅僅需要特殊布局,則可以在1410實(shí)施定制的布局模塊。如果需要除了特殊布局之外的特性,則可以在1412實(shí)施新的容器模塊。[0077]更具體地,如果需要定制的容器模塊,則過程1400在1408繼續(xù)確定是否需要定制的布局模塊。當(dāng)清單系統(tǒng)127中預(yù)先存在的布局模塊不滿足用戶需求時(shí)會需要定制的布局模塊。例如,可能需要表格布局,而不是默認(rèn)的流程圖布局。如果需要定制的布局模塊,過程1400在1410繼續(xù)以實(shí)施布局模塊??梢酝ㄟ^定制或者擴(kuò)展現(xiàn)有布局模塊來實(shí)施布局模塊。在一些實(shí)施方式中,用戶可以經(jīng)由相關(guān)聯(lián)的用戶接口152編寫(write)布局模塊清單文件以便實(shí)施布局模塊。[0078]如果不需要定制的布局模塊,則過程1400在1412繼續(xù)以實(shí)施容器模塊??梢酝ㄟ^定制或者擴(kuò)展現(xiàn)有容器模塊來實(shí)施容器模塊。在一些實(shí)施方式中,用戶可以經(jīng)由相關(guān)聯(lián)的用戶接口152來編寫容器模塊清單文件??梢愿鶕?jù)使用,例如,簡單的人類可讀語言根據(jù)這里描述的描述性方法對布局模塊清單文件和容器模塊清單文件進(jìn)行編程,其中所述簡單的人類可讀語言諸如JavaScript對象表示法(JS0N)、可擴(kuò)展標(biāo)記語言(XML)等等。[0079]如果不需要定制的容器模塊,則過程1400在1414繼續(xù)以確定是否需要定制的模塊。當(dāng)清單系統(tǒng)127中的現(xiàn)有模塊不滿足用戶需求時(shí)會需要定制的模塊。[0080]如果需要定制的模塊,則過程1400在1416繼續(xù)以實(shí)施模塊。可以通過定制或擴(kuò)展從清單系統(tǒng)127中檢索到的現(xiàn)有模塊來實(shí)施模塊。例如,用戶可以選擇修改現(xiàn)有模塊中預(yù)先定義的特性、依賴、和/或事件。在一些實(shí)施方式中,用戶可以經(jīng)由相關(guān)聯(lián)的用戶接口152編寫模塊清單文件以便實(shí)施定制的模塊。應(yīng)當(dāng)理解,在需要多于一個(gè)的定制模塊的情況中,步驟1416可以重復(fù)所期望的次數(shù)。[0081]如果不需要定制的模塊或者全部所期望的模塊已經(jīng)存在于清單系統(tǒng)127中,則過程1400在1418繼續(xù)以編寫圖清單文件。在一些實(shí)施方式中,用戶可以經(jīng)由相關(guān)聯(lián)的用戶接口152來編寫圖清單文件??梢愿鶕?jù)使用,例如,簡單的人類可讀語言在這里描述的描述性方法對圖清單文件進(jìn)行編程,其中所述簡單的人類可讀語言諸如JavaScript對象表示法(JSON)、可擴(kuò)展標(biāo)記語言(XML)等等。在圖清單文件中,用戶可以選擇重新組織組件模塊和/或定義新的圖類型。用戶也可以將采用現(xiàn)有圖類型的模塊實(shí)施方式(例如,容器、圖、或輔助)替換為步驟1410、1412、和/或1416中實(shí)施的新模塊。[0082]在1420,在清單系統(tǒng)127中注冊新的圖類型以用于構(gòu)建新的可視化。例如,清單系統(tǒng)127可以調(diào)用"registerCategory"API來創(chuàng)建新的類別,以及調(diào)用"register"API以將新的圖類型清單安裝在新的類別中,其它注冊方法也是有用的。[0083]圖15示出在運(yùn)行時(shí)構(gòu)建可視化的示范性過程1500。過程1500可以由系統(tǒng)100自動地或半自動地執(zhí)行,如先前參考圖1所描述的。應(yīng)當(dāng)注意到,在下面的討論中,將使用相似的參考標(biāo)號引用圖1中描述的特征。[0084]在1502,呈現(xiàn)組件124接收圖清單文件??梢皂憫?yīng)于例如用戶經(jīng)由用戶接口152對圖的選擇,接收圖清單文件。[0085]在1504,呈現(xiàn)組件124確定是否存在與圖清單相關(guān)聯(lián)的圖。如果圖的清單文件為"有效"("valid")或者可以在清單系統(tǒng)127中找到,則該圖存在。如果圖已經(jīng)存在,則過程1500結(jié)束。如果圖不存在,則過程在1506繼續(xù)。[0086]在1506,呈現(xiàn)組件124讀取圖清單文件并且檢查其根模塊。在1508,呈現(xiàn)組件124確定根模塊是否是容器模塊。容器模塊可以是可選的,并且當(dāng)需要多于一個(gè)的模塊來構(gòu)造可視化時(shí)被實(shí)施。換句話說,當(dāng)指定僅僅一個(gè)模塊來構(gòu)造可視化時(shí),容器模塊可以不是必需的。[0087]如果根模塊是容器模塊,在1510,呈現(xiàn)組件124直接從根模塊構(gòu)建模塊樹。模塊樹是表示模塊之間的引用關(guān)系的數(shù)據(jù)結(jié)構(gòu)。例如,圖3b示出模塊清單部分324中的示范性模塊樹。如圖所示,根容器模塊360引用5個(gè)子模塊(350、352、354、356、358)。子模塊XYContainer(根)354也是引用兩個(gè)軸模塊實(shí)例(362、364)、行為模塊實(shí)例370、和條形圖模塊實(shí)例372的容器類型的模塊。[0088]如果根模塊不是容器模塊,則在1514創(chuàng)建新的模塊(而不是模塊樹)。在1516,呈現(xiàn)組件124分解和/或合并新的模塊的特性。所述特性可以在創(chuàng)建圖實(shí)例時(shí)由用戶指定??商鎿Q地,所述特性可以在圖清單中包括的模塊引用中被指定。[0089]在1512,呈現(xiàn)組件124通過使用例如圖清單中指定的布局模塊來構(gòu)建圖的布局。布局模塊負(fù)責(zé)對全部的模塊實(shí)例進(jìn)行定位和/或尺寸衡量(sizing)。期望的布局特性可以由用戶指定,或者在圖清單中包括的模塊引用中被指定。例如,參考圖12b,公共容器模塊可以被配置為使用默認(rèn)的布局模塊(例如,邊界布局模塊)??梢酝ㄟ^指出圖清單中的一個(gè)或多個(gè)期望的特性1213來配置默認(rèn)布局模塊。然后默認(rèn)布局模塊可以基于所指出的特性1213來布置子模塊。[0090]在1518,呈現(xiàn)組件124分解圖清單中引用的模塊之間的任何依賴。在一些實(shí)施方式中,值依賴和/或事件依賴被分解。所述依賴被分解以便生成連接全部模塊實(shí)例的依賴配置。由于一些依賴與布局組件的尺寸相關(guān),所以步驟1518通常在步驟1512之后執(zhí)行。[0091]在1520,呈現(xiàn)組件124呈現(xiàn)圖的可視的表示。可以基于由步驟1510確定的模塊樹或者由步驟1514-1516創(chuàng)建的單一模塊來執(zhí)行所述呈現(xiàn)。在一些實(shí)施方式中,可以為模塊樹中的每個(gè)孩子模塊實(shí)例分配來自其父類模塊實(shí)例的呈現(xiàn)元素。每個(gè)呈現(xiàn)元素可以被處理以呈現(xiàn)圖的可視的組件。[0092]雖然已經(jīng)用對結(jié)構(gòu)化特征和/或方法步驟而言特定的語言描述了上述一個(gè)或多個(gè)實(shí)施方式,將理解,可以無需所描述的特定特征或步驟就可以實(shí)踐其它實(shí)施方式。相反,所述特定的特征和步驟作為一個(gè)或多個(gè)實(shí)施方式的優(yōu)選形式被公開?!緳?quán)利要求】1.一種計(jì)算機(jī)實(shí)施的數(shù)據(jù)可視化的描述性方法,包括:在存儲在存儲器模塊中的清單系統(tǒng)中提供預(yù)先定義的模塊清單,其中預(yù)先定義的模塊清單描述表示可視化的特定組件的模塊;基于預(yù)先定義的模塊清單中的至少一個(gè)生成新的模塊清單;提供引用新的模塊清單或者預(yù)先定義的模塊清單中的至少一個(gè)的圖清單;基于圖清單呈現(xiàn)可視化。2.-種計(jì)算機(jī)實(shí)施的數(shù)據(jù)可視化的描述性方法,包括:提供一個(gè)或多個(gè)模塊清單,其中模塊清單描述表示可視化的特定組件的模塊;通過定義圖清單來協(xié)調(diào)所述一個(gè)或多個(gè)模塊;W及基于所述圖清單來呈現(xiàn)可視化。3.如權(quán)利要求2所述的方法,其中所述模塊包括包含子模塊的容器類型的模塊。4.如權(quán)利要求3所述的方法,其中所述容器類型的模塊指定布置子模塊的布局類型的模塊。5.如權(quán)利要求2所述的方法,其中所述模塊包括便利用戶對數(shù)據(jù)的解釋的輔助類型的模塊。6.如權(quán)利要求5所述的方法,其中所述輔助類型的模塊包括標(biāo)題模塊、軸模塊、圖例模塊、或工具提示模塊。7.如權(quán)利要求2所述的方法,其中所述模塊包括W可視的形式表示數(shù)據(jù)的圖類型的模塊。8.如權(quán)利要求7所述的方法,其中所述圖類型的模塊包括條形模塊、線形模塊、餅狀模塊、散點(diǎn)圖或氣泡圖模塊、或雷達(dá)模塊。9.如權(quán)利要求2所述的方法,其中所述模塊包括定義可視化的行為的行為類型的模塊。10.如權(quán)利要求2所述的方法,其中所述提供一個(gè)或多個(gè)模塊清單包括提供JavaScript文件。11.如權(quán)利要求2所述的方法,其中所述提供一個(gè)或多個(gè)模塊清單包括基于清單系統(tǒng)中預(yù)先定義的模塊清單來實(shí)施新的模塊清單。12.如權(quán)利要求11所述的方法,還包括為新的模塊清單定制特性值。13.如權(quán)利要求2所述的方法,其中定義圖清單包括定義化vaScript文件。14.如權(quán)利要求2所述的方法,其中所述圖清單是基于預(yù)先定義的圖清單來定義的。15.如權(quán)利要求2所述的方法,其中定義所述圖清單包括指定兩個(gè)模塊之間的值依賴。16.如權(quán)利要求2所述的方法,其中定義所述圖清單包括指定兩個(gè)模塊之間的事件依賴。17.-種其上存儲了程序代碼的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),所述程序代碼可W由計(jì)算機(jī)運(yùn)行W便執(zhí)行W下操作:提供一個(gè)或多個(gè)模塊清單,其中模塊清單描述表示可視化的特定組件的模塊;通過定義圖清單來協(xié)調(diào)所述一個(gè)或多個(gè)模塊清單;W及基于所述圖清單來呈現(xiàn)可視化。18.如權(quán)利要求17所述的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),其中所述模塊包括容器類型的模塊、布局類型的模塊、輔助類型的模塊、圖類型的模塊、或行為類型的模塊。19.一種系統(tǒng),包括:非臨時(shí)性存儲器設(shè)備,用于存儲計(jì)算機(jī)可讀程序代碼;和處理器,其與所述存儲器設(shè)備通信,所述處理器利用所述計(jì)算機(jī)可讀程序代碼操作W便執(zhí)行W下操作:提供一個(gè)或多個(gè)模塊清單,其中模塊清單描述表示可視化的特定組件的模塊,通過定義圖清單來協(xié)調(diào)所述一個(gè)或多個(gè)模塊清單,W及基于所述圖清單來呈現(xiàn)可視化。20.如權(quán)利要求19所述的系統(tǒng),其中所述模塊包括容器類型的模塊、布局類型的模塊、輔助類型的模塊、圖類型的模塊、或行為類型的模塊?!疚臋n編號】G06F9/44GK104346149SQ201310325767【公開日】2015年2月11日申請日期:2013年7月30日優(yōu)先權(quán)日:2013年7月30日【發(fā)明者】楊宇彬,柳佳,李徐洲,陶剛,葉偉強(qiáng)申請人:商業(yè)對象軟件有限公司