国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      元數(shù)據(jù)關(guān)系的圖形化顯示方法及裝置的制作方法

      文檔序號(hào):6341404閱讀:349來源:國知局
      專利名稱:元數(shù)據(jù)關(guān)系的圖形化顯示方法及裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及元數(shù)據(jù)領(lǐng)域,具體涉及一種元數(shù)據(jù)關(guān)系的圖形化顯示方法及裝置。
      背景技術(shù)
      在企業(yè)級(jí)數(shù)據(jù)倉庫中,涉及的表和程序非常多,通過元數(shù)據(jù)的概念與特點(diǎn),對(duì)上下文關(guān)系描述,利用元數(shù)據(jù)關(guān)系解析建立起對(duì)象之間的關(guān)系。其關(guān)系表可以描述為一個(gè)四元組的對(duì)象[關(guān)系名、輸入對(duì)象、輸出對(duì)象、轉(zhuǎn)換規(guī)則]。這種數(shù)據(jù)關(guān)系在數(shù)據(jù)倉庫的正向建模、逆向工程和程序理解等都發(fā)揮著重要的作用,可以幫助軟件工程師理解倉庫系統(tǒng)?;谠獢?shù)據(jù)自動(dòng)解析程序已經(jīng)對(duì)系統(tǒng)收集建立了要進(jìn)行分析的接口、表、程序、字段、應(yīng)用之間的關(guān)系。如何將這些關(guān)系直觀地呈現(xiàn)出來,目前主要采用的是通過表格進(jìn)行展示的。雖然表格可以完整展示數(shù)據(jù)流圖的關(guān)系,但不夠直觀,且現(xiàn)有的顯示方法需要人工參與,自動(dòng)化程度不高。

      發(fā)明內(nèi)容
      本發(fā)明的第一目的是提出一種自動(dòng)化的元數(shù)據(jù)關(guān)系的圖形化顯示方法。本發(fā)明的第二目的是提出一種自動(dòng)化的元數(shù)據(jù)關(guān)系的圖形化顯示裝置。為實(shí)現(xiàn)上述第一目的,本發(fā)明提供了一種元數(shù)據(jù)關(guān)系的圖形化顯示方法,包括將待分析的元數(shù)據(jù)對(duì)象作為輸出對(duì)象查找對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象,并持續(xù)執(zhí)行將每次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象分別作為輸出對(duì)象查找對(duì)應(yīng)的其他前驅(qū)元數(shù)據(jù)對(duì)象,直到對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象為空或者其他前驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止持續(xù)執(zhí)行的操作,得到待分析的元數(shù)據(jù)對(duì)象及查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象的第一關(guān)系鏈表;將待分析的元數(shù)據(jù)對(duì)象作為輸入對(duì)象查找對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象,并繼續(xù)執(zhí)行將每次查找得到的后驅(qū)元數(shù)據(jù)對(duì)象分別作為輸入對(duì)象查找對(duì)應(yīng)的其他后驅(qū)元數(shù)據(jù)對(duì)象,直到對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象為空或者其他后驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止繼續(xù)執(zhí)行的操作,得到待分析的元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象的第二關(guān)系鏈表;根據(jù)第一關(guān)系鏈表及第二關(guān)系鏈表,圖形化顯示待分析的元數(shù)據(jù)、查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象間的關(guān)系。為實(shí)現(xiàn)上述第二目的,本發(fā)明提供了一種元數(shù)據(jù)關(guān)系的圖形化顯示裝置,包括第一處理模塊,用于將待分析的元數(shù)據(jù)對(duì)象作為輸出對(duì)象查找對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象,并持續(xù)執(zhí)行將每次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象分別作為輸出對(duì)象查找對(duì)應(yīng)的其他前驅(qū)元數(shù)據(jù)對(duì)象,直到對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象為空或者其他前驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止持續(xù)執(zhí)行的操作,得到待分析的元數(shù)據(jù)對(duì)象及查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象的第一關(guān)系鏈表;第二處理模塊,用于將待分析的元數(shù)據(jù)對(duì)象作為輸入對(duì)象查找對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象,并繼續(xù)執(zhí)行將每次查找得到的后驅(qū)元數(shù)據(jù)對(duì)象分別作為輸入對(duì)象查找對(duì)應(yīng)的其他后驅(qū)元數(shù)據(jù)對(duì)象,直到對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象為空或者其他后驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止繼續(xù)執(zhí)行的操作,得到待分析的元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象的第二關(guān)系鏈表;圖形化顯示模塊,用于根據(jù)第一關(guān)系鏈表及第二關(guān)系鏈表,圖形化顯示待分析的元數(shù)據(jù)、查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象間的關(guān)系。本發(fā)明各個(gè)實(shí)施例中,通過根據(jù)該第一關(guān)系鏈表及第二關(guān)系鏈表進(jìn)行元數(shù)據(jù)對(duì)象關(guān)系的圖形化顯示,將待分析的元數(shù)據(jù)對(duì)象的前面相關(guān)的元數(shù)據(jù)對(duì)象(即前驅(qū)元數(shù)據(jù)對(duì)象)和其后續(xù)的相關(guān)元數(shù)據(jù)對(duì)象(即后驅(qū)元數(shù)據(jù)對(duì)象),在同一流程圖中自動(dòng)建立的易讀性強(qiáng)的元數(shù)據(jù)對(duì)象流程圖。


      附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例一并用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中圖1為本發(fā)明的元數(shù)據(jù)關(guān)系的圖形化顯示方法的實(shí)施例一流程圖;圖2為本發(fā)明的元數(shù)據(jù)關(guān)系的圖形化顯示方法的實(shí)施例二流程圖;圖3-8為本發(fā)明的元數(shù)據(jù)關(guān)系的圖形化顯示方法的實(shí)施例示意圖;圖9為本發(fā)明的元數(shù)據(jù)關(guān)系的圖形化顯示裝置的實(shí)施例結(jié)構(gòu)圖。
      具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。方法實(shí)施例圖1為本發(fā)明的元數(shù)據(jù)關(guān)系的圖形化顯示方法的實(shí)施例一流程圖。如圖1所示, 本實(shí)施例包括步驟102 將待分析的元數(shù)據(jù)對(duì)象作為輸出對(duì)象查找對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象,并持續(xù)執(zhí)行將每次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象分別作為輸出對(duì)象查找對(duì)應(yīng)的其他前驅(qū)元數(shù)據(jù)對(duì)象,直到對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象為空或者其他前驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止持續(xù)執(zhí)行的操作,得到待分析的元數(shù)據(jù)對(duì)象及查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象的第一關(guān)系鏈表;步驟104 將待分析的元數(shù)據(jù)對(duì)象作為輸入對(duì)象查找對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象,并繼續(xù)執(zhí)行將每次查找得到的后驅(qū)元數(shù)據(jù)對(duì)象分別作為輸入對(duì)象查找對(duì)應(yīng)的其他后驅(qū)元數(shù)據(jù)對(duì)象,直到對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象為空或者其他后驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止繼續(xù)執(zhí)行的操作,得到待分析的元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象的第二關(guān)系鏈表;步驟106 根據(jù)第一關(guān)系鏈表及第二關(guān)系鏈表,圖形化顯示待分析的元數(shù)據(jù)、查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象間的關(guān)系。本實(shí)施例通過根據(jù)該第一關(guān)系鏈表及第二關(guān)系鏈表進(jìn)行元數(shù)據(jù)對(duì)象關(guān)系的圖形化顯示,將待分析的元數(shù)據(jù)對(duì)象的前面相關(guān)的元數(shù)據(jù)對(duì)象(即前驅(qū)元數(shù)據(jù)對(duì)象)和其后續(xù)的相關(guān)元數(shù)據(jù)對(duì)象(即后驅(qū)元數(shù)據(jù)對(duì)象),在同一流程圖中自動(dòng)建立的易讀性強(qiáng)的元數(shù)據(jù)對(duì)象流程圖。圖2為本發(fā)明的元數(shù)據(jù)關(guān)系的圖形化顯示方法的實(shí)施例二流程圖。圖3-8為本發(fā)明的元數(shù)據(jù)關(guān)系的圖形化顯示方法的實(shí)施例示意圖,現(xiàn)聯(lián)合圖2-圖8進(jìn)行解釋說明。如圖 2所示,包括步驟202,根據(jù)待分析元數(shù)據(jù)對(duì)象,加載所有相關(guān)的元數(shù)據(jù)對(duì)象,建立對(duì)應(yīng)的關(guān)系鏈表,其中該所有相關(guān)的元數(shù)據(jù)對(duì)象包括待分析元數(shù)據(jù)對(duì)象的前驅(qū)的所有對(duì)象和后驅(qū)的所有對(duì)象等;具體解釋如下步驟1,創(chuàng)建分析對(duì)象節(jié)點(diǎn),具體如根據(jù)待分析的對(duì)象,從數(shù)據(jù)庫中查找此對(duì)象的信息,包括對(duì)象的ID,類型、名稱,根據(jù)返回的對(duì)象信息創(chuàng)建鏈表的第一個(gè)節(jié)點(diǎn);步驟2,進(jìn)行關(guān)系節(jié)點(diǎn)分析創(chuàng)建,具體包括節(jié)點(diǎn)前驅(qū)關(guān)系分析建立(步驟2. 1-2. 4) 及節(jié)點(diǎn)后驅(qū)關(guān)系分析建立(3. 1-3. 4);如步驟2. 1,根據(jù)待分析的對(duì)象節(jié)點(diǎn),建立此對(duì)象的前驅(qū)關(guān)系,如根據(jù)要分析的對(duì)象從數(shù)據(jù)庫中查找此對(duì)象的所有直接前驅(qū)對(duì)象,可能沒有找到前驅(qū)對(duì)象也可能包含一個(gè)或多個(gè)前驅(qū)對(duì)象,分別如下步驟2. 2,如果沒找到前驅(qū)對(duì)象,則設(shè)置待分析節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)為空,結(jié)束;步驟2. 3,如果找到一個(gè)前驅(qū)對(duì)象,創(chuàng)建此前驅(qū)對(duì)象對(duì)應(yīng)的節(jié)點(diǎn),將此前驅(qū)對(duì)象對(duì)應(yīng)的節(jié)點(diǎn)賦給上一節(jié)點(diǎn)(如待分析的對(duì)象對(duì)應(yīng)的節(jié)點(diǎn))的前驅(qū)首節(jié)點(diǎn),且此前驅(qū)對(duì)象對(duì)應(yīng)的節(jié)點(diǎn)的兄弟節(jié)點(diǎn)為空,返回到步驟2. 1繼續(xù)操作;步驟2. 4,如果找到多個(gè)前驅(qū)對(duì)象分別為每個(gè)前驅(qū)對(duì)象創(chuàng)建一個(gè)節(jié)點(diǎn),選取某個(gè)前驅(qū)節(jié)點(diǎn)賦給上一步節(jié)點(diǎn)(如待分析的對(duì)象對(duì)應(yīng)的節(jié)點(diǎn))的前驅(qū)首節(jié)點(diǎn),其它前驅(qū)對(duì)象對(duì)應(yīng)的節(jié)點(diǎn)增加到此節(jié)點(diǎn)的兄弟節(jié)點(diǎn)數(shù)組中,分別對(duì)每個(gè)前驅(qū)對(duì)象對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行步驟2. 1 的分析;步驟3. 1,根據(jù)傳入待分析的對(duì)象節(jié)點(diǎn),建立此對(duì)象的后驅(qū)關(guān)系,如根據(jù)待分析的對(duì)象從數(shù)據(jù)庫中查找此對(duì)象的所有直接后驅(qū)對(duì)象,可能沒有找到后驅(qū)對(duì)象也可能包含一個(gè)后驅(qū)或多個(gè)后驅(qū),分別如下步驟3. 2,如果沒找到對(duì)象,則設(shè)置分析節(jié)點(diǎn)的后驅(qū)節(jié)點(diǎn)為空,結(jié)束;步驟3. 3,如果找到一個(gè)對(duì)象,創(chuàng)建此對(duì)象的節(jié)點(diǎn),將此節(jié)點(diǎn)賦給分析節(jié)點(diǎn)的后驅(qū)首節(jié)點(diǎn),此節(jié)點(diǎn)的兄弟節(jié)點(diǎn)為空,返回到步驟3. 1 ;步驟3. 4,如果找到多個(gè)對(duì)象,分別為每個(gè)對(duì)象創(chuàng)建一個(gè)節(jié)點(diǎn),選取某個(gè)節(jié)點(diǎn)賦給上一步節(jié)點(diǎn)的后驅(qū)首節(jié)點(diǎn),其它節(jié)點(diǎn)增加到此節(jié)點(diǎn)的兄弟節(jié)點(diǎn)數(shù)組中,分別對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行步驟3. 1的分析;經(jīng)過上述步驟1及2的操作后,可以得到節(jié)點(diǎn)關(guān)系鏈表,節(jié)點(diǎn)關(guān)系鏈表的數(shù)據(jù)結(jié)構(gòu)可以表示為,該數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的直觀表示如圖3所示
      Node= { nodeid:string,
      Nodename:string, Nodetype string,
      preNode:Node, aftNode:Node, brotherNodes:Iist of Node
      }其中,Node表示節(jié)點(diǎn),nodeid表示節(jié)點(diǎn)標(biāo)識(shí),Nodename表示節(jié)點(diǎn)名稱,Nodetype 表示節(jié)點(diǎn)類型;preNode表示前驅(qū)節(jié)點(diǎn),aftNode表示后驅(qū)節(jié)點(diǎn);brotherNodes表示兄弟節(jié)點(diǎn),list of Node表示多個(gè)節(jié)點(diǎn);本領(lǐng)域技術(shù)人員可以理解,建立的節(jié)點(diǎn)關(guān)系鏈表包括兩個(gè)部分所有前驅(qū)節(jié)點(diǎn)組成的對(duì)應(yīng)為第一關(guān)系鏈表,所有后驅(qū)節(jié)點(diǎn)組成的對(duì)應(yīng)為第二關(guān)系鏈表;步驟204,根據(jù)上述步驟202建立的節(jié)點(diǎn)關(guān)系鏈表,計(jì)算整個(gè)流程圖的層次及其每個(gè)節(jié)點(diǎn)所在的層,每層的節(jié)點(diǎn)數(shù),具體操作時(shí)可以用二維數(shù)組將節(jié)點(diǎn)分層存儲(chǔ),即 DFD [layers] [nodes],其中l(wèi)ayers表示層數(shù),nodes表示節(jié)點(diǎn)所在層中的序號(hào),例DFD[3] [2]表示第3層第2個(gè)節(jié)點(diǎn);具體算法如下1.從關(guān)系鏈表循環(huán)遞歸查找前驅(qū)節(jié)點(diǎn)(preNode)為空的所有節(jié)點(diǎn),保存到數(shù)組中,作為第一層的節(jié)點(diǎn),依次計(jì)算其后續(xù)節(jié)點(diǎn)的層次;2.計(jì)算節(jié)點(diǎn)層次方法為從當(dāng)前分析節(jié)點(diǎn)出發(fā)到其直接后續(xù)的節(jié)點(diǎn)只存在一個(gè)路徑,則其后續(xù)節(jié)點(diǎn)的層次為其當(dāng)前分析節(jié)點(diǎn)層次+1 ;如果存在多個(gè)路徑,則轉(zhuǎn)步驟3 ;其中,是否存在多路徑的查找算法簡述如下首先取當(dāng)前分析節(jié)點(diǎn)的后續(xù)節(jié)點(diǎn),循環(huán)遞歸回溯查找此后續(xù)節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn),如果存在一個(gè)前驅(qū)節(jié)點(diǎn)為當(dāng)前節(jié)點(diǎn),則說明從當(dāng)前節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)存在著多路徑,同時(shí)將路徑保存到臨時(shí)路徑數(shù)組中,假設(shè)存在2個(gè)路徑,則數(shù)組內(nèi)容示例如下[ {當(dāng)前節(jié)點(diǎn),節(jié)點(diǎn)Ml,節(jié)點(diǎn)M2,節(jié)點(diǎn)M3,目標(biāo)節(jié)點(diǎn)},{當(dāng)前節(jié)點(diǎn),節(jié)點(diǎn)Ni,節(jié)點(diǎn)N2,節(jié)點(diǎn)N3,節(jié)點(diǎn)N4,目標(biāo)節(jié)點(diǎn)}]3.存在多個(gè)路徑節(jié)點(diǎn)采用短路徑優(yōu)先算法來計(jì)算目標(biāo)節(jié)點(diǎn)層次;從臨時(shí)的路徑數(shù)組中,循環(huán)對(duì)每一數(shù)組中的每一個(gè)節(jié)點(diǎn)找出最小層次的節(jié)點(diǎn),目標(biāo)節(jié)點(diǎn)的層次為最小層次+1 ;步驟206,計(jì)算每一節(jié)點(diǎn)的關(guān)系數(shù);用relation [layers] [nodes]來表示節(jié)點(diǎn)的關(guān)系系數(shù),如relation [2] [3]表示第2層第3個(gè)節(jié)點(diǎn)的所有前趨和后續(xù)節(jié)點(diǎn)關(guān)系數(shù)之和;初始時(shí),節(jié)點(diǎn)的關(guān)系數(shù)為所有前驅(qū)節(jié)點(diǎn)關(guān)系數(shù)與所有后續(xù)節(jié)點(diǎn)關(guān)系數(shù)之和,然后再此基礎(chǔ)上進(jìn)行關(guān)系系數(shù)的調(diào)整,調(diào)整算法如下步驟6. 1,對(duì)于同層的每個(gè)節(jié)點(diǎn),查找每個(gè)節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn),如查到節(jié)點(diǎn)a的前驅(qū)節(jié)占.
      I— /、、、 步驟6. 2,如果該前驅(qū)節(jié)點(diǎn)的所有后繼節(jié)點(diǎn)與節(jié)點(diǎn)a屬于同一層,則該節(jié)點(diǎn)a的前趨關(guān)系數(shù)relafion [layers] [nodes]進(jìn)行加1操作,否則進(jìn)行步驟6. 3 ;步驟6. 3,對(duì)于同層的每個(gè)節(jié)點(diǎn),查找每個(gè)節(jié)點(diǎn)的后驅(qū)節(jié)點(diǎn),如查找節(jié)點(diǎn)a的后驅(qū)節(jié)占.
      I— /、、、 步驟6. 4,若這個(gè)后驅(qū)節(jié)點(diǎn)的所有前驅(qū)節(jié)點(diǎn)與節(jié)點(diǎn)a屬于同一層,則該節(jié)點(diǎn)a的后繼(也成為后驅(qū))關(guān)系relation [layers] [nodes]進(jìn)行加1操作,否則進(jìn)行步驟6. 5 ;步驟6. 5,遍歷完各層所有節(jié)點(diǎn)。步驟208,根據(jù)步驟204及步驟206的計(jì)算結(jié)果進(jìn)行節(jié)點(diǎn)布局,輸出每個(gè)節(jié)點(diǎn)的坐標(biāo)位置[X,y];具體如首先,計(jì)算出節(jié)點(diǎn)的存儲(chǔ)數(shù)組DFD[layerS] [nodes]的總層數(shù)及各層節(jié)點(diǎn)數(shù),以總層數(shù)Totallayers作為橫向布局總行數(shù)(或總列數(shù)),取各層節(jié)點(diǎn)數(shù)中的最大值Colmax作縱向布局總列數(shù)(或總行數(shù));縱向跨度步長為=Colstep =畫布寬度/Colmax ;橫向跨度步^為:rowstep =01 '! '] /Totallayers其次,以層次號(hào)先后次序布局各層,即第0層、第1層、第2層....第η層;其中, 在每一層中,將關(guān)系數(shù)最大的節(jié)點(diǎn)放置在縱坐標(biāo)軸中心線,其它節(jié)點(diǎn)關(guān)系數(shù)由大到小,上下以co 1st印間隔布局;再次,層與層之間及同層節(jié)點(diǎn)橫向之間rowst印間隔布局;步驟210,從節(jié)點(diǎn)關(guān)系鏈表中取所有連接關(guān)系,對(duì)每個(gè)連接,確定連接的箭頭方向及類型,進(jìn)行連接處理;其中,如圖5所示,任何兩節(jié)點(diǎn)X,y的連線,有六種相對(duì)位置類型, 根據(jù)這六種位置類型計(jì)算連續(xù)的箭頭方向;節(jié)點(diǎn)之間的連線類型可以包括直線、B樣條曲線、拐點(diǎn)直線;具體如下如圖6所示,若χ節(jié)點(diǎn)和y節(jié)點(diǎn)之間不存在任何節(jié)點(diǎn),則從X到y(tǒng)的直線相連;如圖7所示,若χ節(jié)點(diǎn)和y節(jié)點(diǎn)之間存在節(jié)點(diǎn),且都在χ、y下方或上方,則從χ到y(tǒng)的數(shù)據(jù)流用上凸或下凹曲線相連;如圖8所示,若χ節(jié)點(diǎn)和y節(jié)點(diǎn)之間有節(jié)點(diǎn)存在,且既分布在χ、y 連線,上方和下方,則采用拐點(diǎn)曲線連接;步驟212,輸出DFD圖;優(yōu)選地,考慮到與其它系統(tǒng)的集成或具有交互能力,還可以輸出DFD圖的XML描述信息。本領(lǐng)域技術(shù)人員可以理解,以上元數(shù)據(jù)對(duì)象可以是數(shù)據(jù)倉庫中的對(duì)象,以提供圖形表達(dá)數(shù)據(jù)倉庫中對(duì)象的依賴關(guān)系;根據(jù)各種元數(shù)據(jù)對(duì)象類型,實(shí)現(xiàn)表與表,程序與表之間的上線關(guān)系通過圖形進(jìn)行展示,在呈現(xiàn)內(nèi)容較多,數(shù)據(jù)流向關(guān)系復(fù)雜,自動(dòng)化建立的流程圖在易讀性上也能達(dá)到理想的效果。本實(shí)施例通過根據(jù)該第一關(guān)系鏈表及第二關(guān)系鏈表進(jìn)行元數(shù)據(jù)對(duì)象關(guān)系的圖形化顯示,將待分析的元數(shù)據(jù)對(duì)象的前面相關(guān)的元數(shù)據(jù)對(duì)象(即前驅(qū)元數(shù)據(jù)對(duì)象)和其后續(xù)的相關(guān)元數(shù)據(jù)對(duì)象(即后驅(qū)元數(shù)據(jù)對(duì)象),在同一流程圖中自動(dòng)建立的易讀性強(qiáng)的元數(shù)據(jù)對(duì)象流程圖;優(yōu)選地,利用同層節(jié)點(diǎn)間的關(guān)系數(shù)來布局同一層的節(jié)點(diǎn),最大限度的避開數(shù)據(jù)流的交叉。裝置實(shí)施例圖9為本發(fā)明的元數(shù)據(jù)關(guān)系的圖形化顯示裝置。圖1-8所示的各方法實(shí)施例均可應(yīng)用于本實(shí)施例。本實(shí)施例包括第一處理模塊90,用于將待分析的元數(shù)據(jù)對(duì)象作為輸出對(duì)象查找對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象,并持續(xù)執(zhí)行將每次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象分別作為輸出對(duì)象查找對(duì)應(yīng)的其他前驅(qū)元數(shù)據(jù)對(duì)象,直到對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象為空或者其他前驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止持續(xù)執(zhí)行的操作,得到待分析的元數(shù)據(jù)對(duì)象及查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象的第一關(guān)系鏈表;第二處理模塊92,用于將待分析的元數(shù)據(jù)對(duì)象作為輸入對(duì)象查找對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象,并繼續(xù)執(zhí)行將每次查找得到的后驅(qū)元數(shù)據(jù)對(duì)象分別作為輸入對(duì)象查找對(duì)應(yīng)的其他后驅(qū)元數(shù)據(jù)對(duì)象,直到對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象為空或者其他后驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止繼續(xù)執(zhí)行的操作,得到待分析的元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象的第二關(guān)系鏈表;圖形化顯示模塊94,用于根據(jù)第一關(guān)系鏈表及第二關(guān)系鏈表,圖形化顯示待分析的元數(shù)據(jù)、查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象間的關(guān)系。
      具體操作時(shí),該圖形化顯示模塊94可以包括層次確定子模塊940,用于將最后一次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象的層次置為零,計(jì)算后續(xù)各個(gè)元數(shù)據(jù)對(duì)象的層次,得到總的層數(shù);統(tǒng)計(jì)子模塊942,用于統(tǒng)計(jì)每個(gè)層中包含的元數(shù)據(jù)對(duì)象的數(shù)量,元數(shù)據(jù)對(duì)象為待分析的元數(shù)據(jù)、所有前驅(qū)元數(shù)據(jù)對(duì)象或者所有后驅(qū)元數(shù)據(jù)對(duì)象;顯示控制子模塊944,用于將總的層數(shù)作為行數(shù),并將層次對(duì)應(yīng)行次,以及將每層的元數(shù)據(jù)對(duì)象的數(shù)量中的最大值作為列數(shù),將屬于每層的每一元數(shù)據(jù)對(duì)象分別放置在對(duì)應(yīng)行次中的一列進(jìn)行圖形化顯示;或者將總的層數(shù)作為列數(shù),并將層次對(duì)應(yīng)列次,以及將每層的元數(shù)據(jù)對(duì)象的數(shù)量中的最大值作為行數(shù),將屬于每層的每一元數(shù)據(jù)對(duì)象分別放置在對(duì)應(yīng)列次中的一行進(jìn)行圖形化顯示。層次確定子模塊940可以包括層次優(yōu)化單元940a,用于在計(jì)算每一元數(shù)據(jù)對(duì)象的層次時(shí),判斷對(duì)應(yīng)的元數(shù)據(jù)對(duì)象到其他的元數(shù)據(jù)對(duì)象中的任一元數(shù)據(jù)對(duì)象的路徑數(shù)是否大于一條,并在大于一條時(shí),將對(duì)應(yīng)的元數(shù)據(jù)對(duì)象的前驅(qū)元數(shù)據(jù)對(duì)象中所屬最小層次加 1后作為對(duì)應(yīng)的元數(shù)據(jù)對(duì)象的層次;在計(jì)算后續(xù)各個(gè)元數(shù)據(jù)對(duì)象中每一元數(shù)據(jù)對(duì)象的層次后,得到總的層數(shù)。該顯示控制子模塊可以包括944 控制單元944a,用于將總的層數(shù)作為行數(shù),并將層次對(duì)應(yīng)行次,以及將每層的元數(shù)據(jù)對(duì)象的數(shù)量中的最大值作為列數(shù);顯示單元944b,用于計(jì)算每層的每一元數(shù)據(jù)對(duì)象的前驅(qū)元數(shù)據(jù)對(duì)象的數(shù)量及后驅(qū)元數(shù)據(jù)對(duì)象的數(shù)量之間的和,計(jì)算得到的和作為對(duì)應(yīng)元數(shù)據(jù)對(duì)象的關(guān)系數(shù);將屬于每層的各元數(shù)據(jù)對(duì)象按照關(guān)系數(shù)由大到小的次序依中心列向兩側(cè)各列分別放置,進(jìn)行圖形化顯示。本實(shí)施通過圖形化顯示模塊64根據(jù)該第一關(guān)系鏈表及第二關(guān)系鏈表進(jìn)行元數(shù)據(jù)對(duì)象關(guān)系的圖形化顯示,將待分析的元數(shù)據(jù)對(duì)象的前面相關(guān)的元數(shù)據(jù)對(duì)象(即前驅(qū)元數(shù)據(jù)對(duì)象)和其后續(xù)的相關(guān)元數(shù)據(jù)對(duì)象(即后驅(qū)元數(shù)據(jù)對(duì)象),在同一流程圖中自動(dòng)建立的易讀性強(qiáng)的元數(shù)據(jù)對(duì)象流程圖;優(yōu)選地,通過顯示單元94 利用同層節(jié)點(diǎn)間的關(guān)系數(shù)來布局同一層的節(jié)點(diǎn),最大限度的避開數(shù)據(jù)流的交叉。最后應(yīng)說明的是以上僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,對(duì)于本領(lǐng)域的技術(shù)人員來說,其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種元數(shù)據(jù)關(guān)系的圖形化顯示方法,其特征在于,包括將待分析的元數(shù)據(jù)對(duì)象作為輸出對(duì)象查找對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象,并持續(xù)執(zhí)行將每次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象分別作為輸出對(duì)象查找對(duì)應(yīng)的其他前驅(qū)元數(shù)據(jù)對(duì)象,直到所述對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象為空或者所述其他前驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止所述持續(xù)執(zhí)行的操作,得到所述待分析的元數(shù)據(jù)對(duì)象及查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象的第一關(guān)系鏈表;將待分析的元數(shù)據(jù)對(duì)象作為輸入對(duì)象查找對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象,并繼續(xù)執(zhí)行將每次查找得到的后驅(qū)元數(shù)據(jù)對(duì)象分別作為輸入對(duì)象查找對(duì)應(yīng)的其他后驅(qū)元數(shù)據(jù)對(duì)象,直到所述對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象為空或者所述其他后驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止所述繼續(xù)執(zhí)行的操作,得到所述待分析的元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象的第二關(guān)系鏈表;根據(jù)所述第一關(guān)系鏈表及第二關(guān)系鏈表,圖形化顯示所述待分析的元數(shù)據(jù)、查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象間的關(guān)系。
      2.根據(jù)權(quán)利要求1所述的元數(shù)據(jù)關(guān)系的圖形化顯示方法,其特征在于,根據(jù)所述第一關(guān)系鏈表及第二關(guān)系鏈表,圖形化顯示所述待分析的元數(shù)據(jù)、查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象間的關(guān)系的步驟包括將最后一次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象的層次置為零,計(jì)算后續(xù)各個(gè)元數(shù)據(jù)對(duì)象的層次,得到總的層數(shù);統(tǒng)計(jì)每個(gè)層中包含的元數(shù)據(jù)對(duì)象的數(shù)量,所述元數(shù)據(jù)對(duì)象為所述待分析的元數(shù)據(jù)、所有前驅(qū)元數(shù)據(jù)對(duì)象或者所有后驅(qū)元數(shù)據(jù)對(duì)象;將所述總的層數(shù)作為行數(shù),并將層次對(duì)應(yīng)行次,以及將所述每層的元數(shù)據(jù)對(duì)象的數(shù)量中的最大值作為列數(shù),將屬于每層的每一元數(shù)據(jù)對(duì)象分別放置在對(duì)應(yīng)行次中的一列進(jìn)行圖形化顯示;或者將所述總的層數(shù)作為列數(shù),并將層次對(duì)應(yīng)列次,以及將所述每層的元數(shù)據(jù)對(duì)象的數(shù)量中的最大值作為行數(shù),將屬于每層的每一元數(shù)據(jù)對(duì)象分別放置在對(duì)應(yīng)列次中的一行進(jìn)行圖形化顯示。
      3.根據(jù)權(quán)利要求2所述的元數(shù)據(jù)關(guān)系的圖形化顯示方法,其特征在于,所述計(jì)算后續(xù)各個(gè)元數(shù)據(jù)對(duì)象的層次,得到總的層數(shù)的步驟包括在計(jì)算每一元數(shù)據(jù)對(duì)象的層次時(shí),判斷對(duì)應(yīng)的元數(shù)據(jù)對(duì)象到其他的元數(shù)據(jù)對(duì)象中的任一元數(shù)據(jù)對(duì)象的路徑數(shù)是否大于一條,并在大于一條時(shí),將所述對(duì)應(yīng)的元數(shù)據(jù)對(duì)象的前驅(qū)元數(shù)據(jù)對(duì)象中所屬最小層次加1后作為所述對(duì)應(yīng)的元數(shù)據(jù)對(duì)象的層次;在計(jì)算所述后續(xù)各個(gè)元數(shù)據(jù)對(duì)象中每一元數(shù)據(jù)對(duì)象的層次后,得到總的層數(shù)。
      4.根據(jù)權(quán)利要求2或3所述的元數(shù)據(jù)關(guān)系的圖形化顯示方法,其特征在于,所述將屬于每層的每一元數(shù)據(jù)對(duì)象分別放置在對(duì)應(yīng)行次中的一列進(jìn)行圖形化顯示的步驟包括計(jì)算每層的每一元數(shù)據(jù)對(duì)象的前驅(qū)元數(shù)據(jù)對(duì)象的數(shù)量及后驅(qū)元數(shù)據(jù)對(duì)象的數(shù)量之間的和,所述計(jì)算得到的和作為對(duì)應(yīng)元數(shù)據(jù)對(duì)象的關(guān)系數(shù);將屬于每層的各元數(shù)據(jù)對(duì)象按照關(guān)系數(shù)由大到小的次序依中心列向兩側(cè)各列分別放置,進(jìn)行圖形化顯示。
      5.根據(jù)權(quán)利要求4所述的元數(shù)據(jù)關(guān)系的圖形化顯示方法,其特征在于,所述將屬于每層的各元數(shù)據(jù)對(duì)象按照關(guān)系數(shù)由大到小的次序依中心列向兩側(cè)各列分別放置的步驟之后還包括根據(jù)所述第一關(guān)系鏈表及第二關(guān)系鏈表,在連接兩個(gè)元數(shù)據(jù)對(duì)象時(shí),判斷所述兩個(gè)元數(shù)據(jù)對(duì)象之間存在其他的元數(shù)據(jù)對(duì)象,在不存在其他的元數(shù)據(jù)對(duì)象時(shí),利用直線連接所述兩個(gè)元數(shù)據(jù)對(duì)象;在存在位于所述兩個(gè)元數(shù)據(jù)對(duì)象下方的其他的元數(shù)據(jù)對(duì)象時(shí),利用上凸曲線連接所述兩個(gè)元數(shù)據(jù)對(duì)象;在存在位于所述兩個(gè)元數(shù)據(jù)對(duì)象上方的其他的元數(shù)據(jù)對(duì)象時(shí),利用下凹曲線連接所述兩個(gè)元數(shù)據(jù)對(duì)象;在存在分別位于所述兩個(gè)元數(shù)據(jù)對(duì)象連線的上方及下方的其他元數(shù)據(jù)對(duì)象時(shí),利用拐點(diǎn)曲線連接所述兩個(gè)元數(shù)據(jù)對(duì)象。
      6.根據(jù)上述權(quán)利要求1-3中任一項(xiàng)所述的元數(shù)據(jù)關(guān)系的圖形化顯示方法,其特征在于,還包括將所述待分析的元數(shù)據(jù)作為對(duì)應(yīng)的待分析的節(jié)點(diǎn);在查找得到的每一前驅(qū)元數(shù)據(jù)對(duì)象后將每一前驅(qū)元數(shù)據(jù)對(duì)象作為對(duì)應(yīng)的前驅(qū)節(jié)點(diǎn);所述第一關(guān)系鏈表對(duì)應(yīng)為第一節(jié)點(diǎn)關(guān)系鏈表;在查找得到的每一后驅(qū)元數(shù)據(jù)對(duì)象后將每一后驅(qū)元數(shù)據(jù)對(duì)象作為對(duì)應(yīng)的后驅(qū)節(jié)點(diǎn);所述第二關(guān)系鏈表對(duì)應(yīng)為第二節(jié)點(diǎn)關(guān)系鏈表。
      7.—種元數(shù)據(jù)關(guān)系的圖形化顯示裝置,其特征在于,包括第一處理模塊,用于將待分析的元數(shù)據(jù)對(duì)象作為輸出對(duì)象查找對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象,并持續(xù)執(zhí)行將每次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象分別作為輸出對(duì)象查找對(duì)應(yīng)的其他前驅(qū)元數(shù)據(jù)對(duì)象,直到所述對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象為空或者所述其他前驅(qū)元數(shù)據(jù)對(duì)象為空時(shí), 停止所述持續(xù)執(zhí)行的操作,得到所述待分析的元數(shù)據(jù)對(duì)象及查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象的第一關(guān)系鏈表;第二處理模塊,用于將待分析的元數(shù)據(jù)對(duì)象作為輸入對(duì)象查找對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象,并繼續(xù)執(zhí)行將每次查找得到的后驅(qū)元數(shù)據(jù)對(duì)象分別作為輸入對(duì)象查找對(duì)應(yīng)的其他后驅(qū)元數(shù)據(jù)對(duì)象,直到所述對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象為空或者所述其他后驅(qū)元數(shù)據(jù)對(duì)象為空時(shí), 停止所述繼續(xù)執(zhí)行的操作,得到所述待分析的元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象的第二關(guān)系鏈表;圖形化顯示模塊,用于根據(jù)所述第一關(guān)系鏈表及第二關(guān)系鏈表,圖形化顯示所述待分析的元數(shù)據(jù)、查找得到的所有前驅(qū)元數(shù)據(jù)對(duì)象及查找得到的所有后驅(qū)元數(shù)據(jù)對(duì)象間的關(guān)系。
      8.根據(jù)權(quán)利要求7所述的元數(shù)據(jù)關(guān)系的圖形化顯示裝置,其特征在于,所述圖形化顯示模塊包括層次確定子模塊,用于將最后一次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象的層次置為零,計(jì)算后續(xù)各個(gè)元數(shù)據(jù)對(duì)象的層次,得到總的層數(shù);統(tǒng)計(jì)子模塊,用于統(tǒng)計(jì)每個(gè)層中包含的元數(shù)據(jù)對(duì)象的數(shù)量,所述元數(shù)據(jù)對(duì)象為所述待分析的元數(shù)據(jù)、所有前驅(qū)元數(shù)據(jù)對(duì)象或者所有后驅(qū)元數(shù)據(jù)對(duì)象;顯示控制子模塊,用于將所述總的層數(shù)作為行數(shù),并將層次對(duì)應(yīng)行次,以及將所述每層的元數(shù)據(jù)對(duì)象的數(shù)量中的最大值作為列數(shù),將屬于每層的每一元數(shù)據(jù)對(duì)象分別放置在對(duì)應(yīng)行次中的一列進(jìn)行圖形化顯示;或者將所述總的層數(shù)作為列數(shù),并將層次對(duì)應(yīng)列次,以及將所述每層的元數(shù)據(jù)對(duì)象的數(shù)量中的最大值作為行數(shù),將屬于每層的每一元數(shù)據(jù)對(duì)象分別放置在對(duì)應(yīng)列次中的一行進(jìn)行圖形化顯示。
      9.根據(jù)權(quán)利要求8所述的元數(shù)據(jù)關(guān)系的圖形化顯示裝置,其特征在于,所述層次確定子模塊包括層次優(yōu)化單元,用于在計(jì)算每一元數(shù)據(jù)對(duì)象的層次時(shí),判斷對(duì)應(yīng)的元數(shù)據(jù)對(duì)象到其他的元數(shù)據(jù)對(duì)象中的任一元數(shù)據(jù)對(duì)象的路徑數(shù)是否大于一條,并在大于一條時(shí),將所述對(duì)應(yīng)的元數(shù)據(jù)對(duì)象的前驅(qū)元數(shù)據(jù)對(duì)象中所屬最小層次加1后作為所述對(duì)應(yīng)的元數(shù)據(jù)對(duì)象的層次;在計(jì)算所述后續(xù)各個(gè)元數(shù)據(jù)對(duì)象中每一元數(shù)據(jù)對(duì)象的層次后,得到總的層數(shù)。
      10.根據(jù)權(quán)利要求8或9所述的元數(shù)據(jù)關(guān)系的圖形化顯示裝置,其特征在于,所述顯示控制子模塊包括控制單元,用于將所述總的層數(shù)作為行數(shù),并將層次對(duì)應(yīng)行次,以及將所述每層的元數(shù)據(jù)對(duì)象的數(shù)量中的最大值作為列數(shù);顯示單元,用于計(jì)算每層的每一元數(shù)據(jù)對(duì)象的前驅(qū)元數(shù)據(jù)對(duì)象的數(shù)量及后驅(qū)元數(shù)據(jù)對(duì)象的數(shù)量之間的和,所述計(jì)算得到的和作為對(duì)應(yīng)元數(shù)據(jù)對(duì)象的關(guān)系數(shù);將屬于每層的各元數(shù)據(jù)對(duì)象按照關(guān)系數(shù)由大到小的次序依中心列向兩側(cè)各列分別放置,進(jìn)行圖形化顯示。
      全文摘要
      本發(fā)明提供了一種元數(shù)據(jù)關(guān)系的圖形化顯示方法及裝置,其中,該方法包括將待分析的元數(shù)據(jù)對(duì)象作為輸出對(duì)象查找對(duì)應(yīng)的前驅(qū)元數(shù)據(jù)對(duì)象,并持續(xù)執(zhí)行將每次查找得到的前驅(qū)元數(shù)據(jù)對(duì)象分別作為輸出對(duì)象查找對(duì)應(yīng)的其他前驅(qū)元數(shù)據(jù)對(duì)象,直到前驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止操作得到第一關(guān)系鏈表;將待分析的元數(shù)據(jù)對(duì)象作為輸入對(duì)象查找對(duì)應(yīng)的后驅(qū)元數(shù)據(jù)對(duì)象,并繼續(xù)執(zhí)行將每次查找得到的后驅(qū)元數(shù)據(jù)對(duì)象分別作為輸入對(duì)象查找對(duì)應(yīng)的其他后驅(qū)元數(shù)據(jù)對(duì)象,直到后驅(qū)元數(shù)據(jù)對(duì)象為空時(shí),停止操作得到第二關(guān)系鏈表;根據(jù)第一關(guān)系鏈表及第二關(guān)系鏈表,圖形化顯示上述各元數(shù)據(jù)對(duì)象間的關(guān)系。本發(fā)明實(shí)現(xiàn)在同一流程圖中自動(dòng)建立的易讀性強(qiáng)的元數(shù)據(jù)對(duì)象流程圖。
      文檔編號(hào)G06F17/30GK102567430SQ201010624119
      公開日2012年7月11日 申請(qǐng)日期2010年12月31日 優(yōu)先權(quán)日2010年12月31日
      發(fā)明者王全勝, 趙靜 申請(qǐng)人:中國移動(dòng)通信集團(tuán)湖北有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1