可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)及其轉(zhuǎn)換方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明適用于表單設(shè)計(jì),提供了一種可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),包括:位于瀏覽器前端的第一數(shù)據(jù)結(jié)構(gòu),其以json形式的來表示表單;位于后臺(tái)數(shù)據(jù)庫(kù)的第二數(shù)據(jù)結(jié)構(gòu),其用表單項(xiàng)元數(shù)據(jù)表和表單項(xiàng)內(nèi)容表對(duì)瀏覽器前端中的數(shù)據(jù)進(jìn)行存儲(chǔ)。通過本發(fā)明,基于基礎(chǔ)的表單項(xiàng),通過json的形式表示,可以構(gòu)造出適應(yīng)各種各樣場(chǎng)景所需要的表單,如簡(jiǎn)單的應(yīng)用場(chǎng)景有常見的登錄、注冊(cè)的表單等,復(fù)雜的應(yīng)用場(chǎng)景可用于邏輯或嵌入表單等,讓表單設(shè)計(jì)更靈活,可以讓使用的用戶得到他們所想要的、貼合目的需求的收集數(shù)據(jù)的表單。
【專利說明】
可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)及其轉(zhuǎn)換方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于互聯(lián)網(wǎng)表單設(shè)計(jì),尤其涉及一種可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)及其轉(zhuǎn)換方法及系統(tǒng)。
【背景技術(shù)】
[0002]在互聯(lián)網(wǎng)的表單收集數(shù)據(jù)中,對(duì)于不同的數(shù)據(jù)收集需求,對(duì)于表單所需要的呈現(xiàn)形式也是多種多樣的,有組合的表單項(xiàng),也有嵌套的表單項(xiàng),還有在組合項(xiàng)中又有嵌套的需求,還有邏輯表單等,現(xiàn)有拼接或拼湊式的表單,缺點(diǎn)是不靈活,比較固定,不便于統(tǒng)一用同一種的數(shù)據(jù)庫(kù)表的結(jié)構(gòu)進(jìn)行存儲(chǔ)與處理,同時(shí)現(xiàn)有的表單表示形式存在以下問題:
[0003]1、在網(wǎng)絡(luò)瀏覽器前端上對(duì)于自由組合與嵌套的表單,數(shù)據(jù)結(jié)構(gòu)無法表示并展示出來;
[0004]2、在數(shù)據(jù)庫(kù)存儲(chǔ)時(shí),無法將自由表單通過數(shù)據(jù)庫(kù)表存儲(chǔ)下來,并完成相應(yīng)的數(shù)據(jù)檢索的要求;
[0005]3、在瀏覽器前端的數(shù)據(jù)結(jié)構(gòu),與后臺(tái)存儲(chǔ)時(shí)所用的數(shù)據(jù)庫(kù)表結(jié)構(gòu),是完全不同的,無法通過相應(yīng)的方法進(jìn)行兩種不同的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)之間的轉(zhuǎn)換。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問題在于提供一種可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)及其轉(zhuǎn)換方法及系統(tǒng),旨在解決在進(jìn)行互聯(lián)網(wǎng)的表單收集數(shù)據(jù)時(shí)存在的上述問題。
[0007]本發(fā)明是這樣實(shí)現(xiàn)的,一種可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),包括:
[OOO8 ]位于瀏覽器前端的第一數(shù)據(jù)結(jié)構(gòu),其以j s on形式的來表不表單;
[0009]位于后臺(tái)數(shù)據(jù)庫(kù)的第二數(shù)據(jù)結(jié)構(gòu),其用表單項(xiàng)元數(shù)據(jù)表和表單項(xiàng)內(nèi)容表對(duì)瀏覽器前端中的數(shù)據(jù)進(jìn)行存儲(chǔ)。
[0010]進(jìn)一步地,所述第一數(shù)據(jù)結(jié)構(gòu)所表示的表單包括下述字段:
[0011]metadata_id,表示表單項(xiàng)的元數(shù)據(jù)id,用于數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)的自增主鍵id;
[0012I type,表示表單項(xiàng)類型,具備若干取值候選項(xiàng);
[0013I prompt,表示表單項(xiàng)提示,用于放置輸入提示;
[0014]name,表示表單項(xiàng)名稱;
[0015]value,表示表單項(xiàng)所填寫或選取的內(nèi)容;
[0016]is_required,表示該表單項(xiàng)是否為必填項(xiàng);
[0017]is_checked,表示該表單項(xiàng)是否被選取;
[0018]range_max,表示取值范圍的最大值;
[0019]range_min,表示取值范圍的最小值;
[0020]ch i I dr en,表示當(dāng)前表單項(xiàng)的子表單項(xiàng)數(shù)組;
[0021]relat1n,表示當(dāng)前表單項(xiàng)和子表單項(xiàng)數(shù)組之間的關(guān)系,所述關(guān)系包括沒有關(guān)系、正常關(guān)系、邏輯關(guān)系或組合關(guān)系中的其中一種。
[0022]進(jìn)一步地,type表單項(xiàng)類型包括:8;[叫16_七611:單行文本、1111111:;[_七611:多行文本、rad1-^izfe Nrad1_opt1nJp-1zfe?/?、check多選、check_opt1n多選項(xiàng)、dropdown下拉、dropdown_opt1n 下拉項(xiàng)和image圖片。
[0023]進(jìn)一步地,所述第二數(shù)據(jù)結(jié)構(gòu)中,所述表單項(xiàng)元數(shù)據(jù)表用于存儲(chǔ)表單項(xiàng)及它們之間的關(guān)系,包括下述字段:
[0024]metadata_id,表示表單項(xiàng)的元數(shù)據(jù)id,用于數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)的自增主鍵id;
[0025]parent_metadata_id,表不父表單項(xiàng) id ;
[0026]name,表示表單項(xiàng)名稱;
[0027]sequence,表示次序,用于表示同一層或同一父表id下的表單項(xiàng)之間的次序關(guān)系;
[0028]prompt,表示表單項(xiàng)提示,用于放置輸入提示;
[0029]type,表示表單項(xiàng)類型,具備若干取值候選項(xiàng);
[°03°] assistant_disc,表示輔助描述,內(nèi)容為json格式的字符串;
[0031 ] is_required,表示該表單項(xiàng)是否為必填項(xiàng);
[0032]is_checked,表示該表單項(xiàng)是否被選取;
[0033]range_max,表示取值范圍的最大值;
[0034]range_min,表示取值范圍的最小值。
[0035]進(jìn)一步地,所述第二數(shù)據(jù)結(jié)構(gòu)中,所述表單項(xiàng)內(nèi)容表用于存儲(chǔ)表單項(xiàng)所填寫的實(shí)際內(nèi)容,包括下述字段:
[0036]data_id,表示自增主鍵;
[0037]metadata_id,表不對(duì)應(yīng)的表單項(xiàng)id;
[0038]value,表示表單項(xiàng)所填寫或選取的內(nèi)容。
[0039]本發(fā)明還提供一種上述的數(shù)據(jù)格式的轉(zhuǎn)換方法,包括以下步驟:
[0040]步驟A,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的表單類型項(xiàng),確定所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型;
[0041]步驟B,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的基本屬性項(xiàng),得到表單項(xiàng)名稱、是否必填項(xiàng)和表單項(xiàng)填寫值;
[0042]步驟C,根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型,讀取所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組和所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,然后根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)的關(guān)系屬性值確定與所述自表單項(xiàng)數(shù)組,或輔助描述屬性值的關(guān)系;
[0043]步驟D,重復(fù)步驟A至步驟C,遞歸處理所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組或所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,直至處理完畢。
[0044]進(jìn)一步地,在步驟A中,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的一個(gè)單元項(xiàng),解析單元項(xiàng)中的type類型屬性項(xiàng),以type類型屬性項(xiàng)來確定該表單項(xiàng)的類型。
[0045]本發(fā)明還提供了一種上述所述的數(shù)據(jù)格式的轉(zhuǎn)換系統(tǒng),包括:
[0046]類型獲取單元,用于分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的表單類型項(xiàng),確定所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型;
[0047]屬性獲取單元,用于分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的基本屬性項(xiàng),得到表單項(xiàng)名稱、是否必填項(xiàng)和表單項(xiàng)填寫值;
[0048]關(guān)系確定單元,用于根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型,讀取所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組和所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,然后根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)的關(guān)系屬性值確定與所述自表單項(xiàng)數(shù)組,或輔助描述屬性值的關(guān)系;
[0049]遞歸處理單元,用于重復(fù)遞歸處理所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組或所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,直至處理完畢。
[0050]進(jìn)一步地,所述類型獲取單元中,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的一個(gè)單元項(xiàng),解析單元項(xiàng)中的type類型屬性項(xiàng),以type類型屬性項(xiàng)來確定該表單項(xiàng)的類型。
[0051]本發(fā)明與現(xiàn)有技術(shù)相比,有益效果在于:通過本發(fā)明,基于基礎(chǔ)的表單項(xiàng),通過json的形式表示,可以構(gòu)造出適應(yīng)各種各樣場(chǎng)景所需要的表單,如簡(jiǎn)單的應(yīng)用場(chǎng)景有常見的登錄、注冊(cè)的表單等,復(fù)雜的應(yīng)用場(chǎng)景可用于邏輯或嵌入表單等,讓表單設(shè)計(jì)更靈活,可以讓使用的用戶得到他們所想要的、貼合目的需求的收集數(shù)據(jù)的表單。
【附圖說明】
[0052]圖1是本發(fā)明實(shí)施例提供的在瀏覽器前端表示的數(shù)據(jù)結(jié)構(gòu)示意圖。
[0053]圖2是本發(fā)明實(shí)施例提供的在后臺(tái)數(shù)據(jù)庫(kù)表中的表單項(xiàng)元數(shù)據(jù)表的數(shù)據(jù)結(jié)構(gòu)示意圖。
[0054]圖3是本發(fā)明實(shí)施例提供的在后臺(tái)數(shù)據(jù)庫(kù)表中的表單項(xiàng)內(nèi)容表的數(shù)據(jù)結(jié)構(gòu)示意圖。
[0055]圖4是本發(fā)明實(shí)施例提供的一種可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換方法的流程圖。
[0056]圖5是本發(fā)明實(shí)施例提供的一種可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0057]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0058]本發(fā)明是這樣實(shí)現(xiàn)的,一種可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),包括:
[0059 ]位于瀏覽器前端的第一數(shù)據(jù)結(jié)構(gòu),其以j s on形式的來表不表單;
[0060]位于后臺(tái)數(shù)據(jù)庫(kù)的第二數(shù)據(jù)結(jié)構(gòu),其用表單項(xiàng)元數(shù)據(jù)表和表單項(xiàng)內(nèi)容表對(duì)瀏覽器前端中的數(shù)據(jù)進(jìn)行存儲(chǔ);
[0061 ]通過遞歸的方式對(duì)所訴第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)進(jìn)行轉(zhuǎn)換。
[0062]下面通過圖1至圖3對(duì)本發(fā)明進(jìn)行進(jìn)一步的闡述:
[0063]在瀏覽器前端時(shí),通過如圖1所示的json形式的數(shù)據(jù)結(jié)構(gòu)來表示表單,下面一一解釋下其中的字段含義:
[0064]*metadata_id:元數(shù)據(jù)id,是用于數(shù)據(jù)庫(kù)表存儲(chǔ)時(shí)的自增主鍵id。
[0065]*type:類型,有以下取值候選項(xiàng):8;[1^16_七611:單行文本;1111111:;[_七611:多行文本;rad1單選;rad1_opt1n單選項(xiàng);check多選;check_opt1n多選項(xiàng);dropdown下拉;dropdown_opt1n下拉項(xiàng);image圖片。后面還可根據(jù)需求不斷擴(kuò)展type取值。[ΟΟ??] *prompt:提示,如單行文本,可以放置輸入提示。
[0067]*name:表單項(xiàng)的名稱。
[0068]*value:表單項(xiàng)所填寫或選取的內(nèi)容。
[0069]*is_required:該表單項(xiàng)是否為必填項(xiàng),取值為I是必填,-1是非必填。
[0070]*is_checked:該字段對(duì)于單選項(xiàng)、多選項(xiàng)或下拉項(xiàng)有意義,表示該項(xiàng)是否被選取,取值為I表示選取,-1表示非選取。
[007?] *range_max:表示取值范圍的最大值。當(dāng)type為單行文本時(shí),表示可輸入字符的最大個(gè)數(shù),而若當(dāng)type為多選時(shí),表示最多可選取多少項(xiàng)。
[0072 ] *range_min:表示取值范圍的最小值,與range_max相對(duì)應(yīng)。
[0073]*children:表示當(dāng)前表單項(xiàng)的子表單項(xiàng)數(shù)組,數(shù)組中的每一項(xiàng)的類型為json_field。如果沒有子表單,那么該字段為一空數(shù)組。
[0074]delat1n:表示當(dāng)前表單項(xiàng)與子表單項(xiàng)數(shù)組之間的關(guān)系,該字段是非常重要的一個(gè)字段,表單項(xiàng)之間的組合或嵌套的關(guān)系通過該項(xiàng)來表示。取值為none,表示沒有關(guān)系或正常的關(guān)系;取值為logic,表示為邏輯關(guān)系,即當(dāng)該表單項(xiàng)被選中或激活時(shí),其子表單才相應(yīng)展示或激活;取值為complex,表示為組合關(guān)系,即當(dāng)前表單項(xiàng),是由其子表單數(shù)組項(xiàng)組合在一起而組成的。
[0075]而在后臺(tái)的數(shù)據(jù)庫(kù)表中,需要使用到兩個(gè)數(shù)據(jù)表來進(jìn)行對(duì)應(yīng)地存儲(chǔ),首先介紹第一個(gè)表f ield_metadata元數(shù)據(jù)表,用于存儲(chǔ)表單項(xiàng)及它們之間的關(guān)系,如圖2所示,對(duì)于其中的字段,上述已經(jīng)有進(jìn)行說明,以下僅說明新出現(xiàn)的字段:
[0076]印3代111:_1116丨3(13丨3_丨(1:在瀏覽器前端時(shí),有011;[1(1代11子表單項(xiàng)數(shù)組,那么在后臺(tái)的數(shù)據(jù)庫(kù)表時(shí),剛好反過來,是通過存儲(chǔ)該表單項(xiàng)的父表單項(xiàng)id來保存此關(guān)系的,最外層的表單項(xiàng)都是沒有父表單項(xiàng)的,那么就將該字段置為-1。
[0077]^sequence:次序,用于表示同一層或同一父表單id下的表單項(xiàng)之間的次序關(guān)系,從I開始起算。
[0078]*type:在數(shù)據(jù)庫(kù)表中時(shí),type的取值只能為single_text ,multi_text ,rad1 ,check, dropdown與 image。
[0079]*assistant_disc:輔助描述,內(nèi)容為json格式的字符串,如當(dāng)type取值為rad1單選時(shí),那么其單選項(xiàng)就通過assistant_disc進(jìn)行描述。
[0080]另外一個(gè)數(shù)據(jù)庫(kù)表為field_data表單項(xiàng)內(nèi)容表,用于存儲(chǔ)表單項(xiàng)所填寫的實(shí)際內(nèi)容,其結(jié)構(gòu)如圖3所示,對(duì)于其中的字段,上述已經(jīng)有進(jìn)行說明,以下僅說明新出現(xiàn)的字段其中:
[0081 ] *data_id:自增主鍵
[0082]在本實(shí)施例中,對(duì)于瀏覽器前端與后臺(tái)數(shù)據(jù)庫(kù)表之間的數(shù)據(jù)格式的轉(zhuǎn)換關(guān)系,優(yōu)先選用通過遞歸地方式進(jìn)行相互轉(zhuǎn)換;但是也可以通過非遞歸的方式進(jìn)行相互轉(zhuǎn)換,但是通過非遞歸的方式進(jìn)行相互轉(zhuǎn)換在理解與后期維護(hù)、調(diào)整的難度更大。在本實(shí)施例中,前后臺(tái)之間的數(shù)據(jù)結(jié)構(gòu)只具有一定的相關(guān)性,畢竟瀏覽器前端是一種比較自由的json形式,后臺(tái)數(shù)據(jù)庫(kù)表是另外一種數(shù)據(jù)庫(kù)表的行列式,兩者之間需要通過轉(zhuǎn)換才能夠?qū)?yīng)起來。后臺(tái)的兩個(gè)表之間有關(guān)聯(lián)性,元數(shù)據(jù)表用于存儲(chǔ)表單項(xiàng)的組織與邏輯關(guān)系,而表單項(xiàng)內(nèi)容表用于存儲(chǔ)表單項(xiàng)所填寫的內(nèi)容值。
[0083]因?yàn)榈谝粩?shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu)是經(jīng)整體使用遞歸方式不斷進(jìn)行解析與轉(zhuǎn)換直到轉(zhuǎn)換完成的,之所以可以使用遞歸方式進(jìn)行解析,是因?yàn)閮烧叩臄?shù)據(jù)結(jié)構(gòu)在設(shè)計(jì)之初就采用了表單的父項(xiàng)、兄弟項(xiàng)、子項(xiàng)中的每一個(gè)表單項(xiàng)都是具有相同的屬性,只是因?yàn)閷傩灾档牟煌硎玖瞬煌囊饬x?;诖?,本發(fā)明還提供了如圖4所示的一種可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換方法,步驟包括:
[0084]SI,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的表單類型項(xiàng),確定所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型。在本步驟中,分別讀取第一數(shù)據(jù)結(jié)構(gòu)和第二數(shù)據(jù)結(jié)構(gòu)的一個(gè)單元項(xiàng),先解析單元項(xiàng)中的type (類型)屬性項(xiàng),以便確定該表單項(xiàng)的類型。
[0085]S2,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的基本屬性項(xiàng),得到表單項(xiàng)名稱、是否必填項(xiàng)和表單項(xiàng)填寫值。在本步驟嗎,根據(jù)步驟SI得到的類型,再解析該單元項(xiàng)的基本屬性項(xiàng),如name表單項(xiàng)名稱、is_required是否必填、value表單項(xiàng)填寫值等。在本步驟中,獲取的各項(xiàng)的相關(guān)屬性值做為后續(xù)步驟的判斷依據(jù)。
[0086]S3,根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型,讀取所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組和所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,然后根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)的關(guān)系屬性值確定與所述自表單項(xiàng)數(shù)組,或輔助描述屬性值的關(guān)系。在本步驟中,根據(jù)該表單項(xiàng)的type(類型),讀取該表單項(xiàng)的011;[1(1代11(自表單項(xiàng)數(shù)組)或38818丨3111:_(1180(輔助描述)屬性值(其值為一個(gè)表單項(xiàng)數(shù)組或空),再由relat1n (關(guān)系)屬性值確定與chi Idren或assistant_disc屬性值的關(guān)系。在本步驟中,這是父項(xiàng)與其子項(xiàng)之間的關(guān)系,根據(jù)relat1n值確定,如可能是嵌套關(guān)系,或邏輯顯示關(guān)系等。
[0087]S4,重復(fù)SI至S3,遞歸處理所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組或所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,直至處理完畢。在本步驟中,根據(jù)上面同樣的步驟遞歸處理該表單項(xiàng)的chiIdren或assistant_disc屬性值,最終全部處理完成,轉(zhuǎn)換終止完成。在本步驟中,整體使用遞歸方式不斷進(jìn)行解析與轉(zhuǎn)換直到轉(zhuǎn)換完成,轉(zhuǎn)換與解析意義相同:即是說對(duì)于子項(xiàng)數(shù)組內(nèi)的處理,基本就是用以上步驟再一遍遍地處理,直至所有項(xiàng)處理完成。
[0088]如圖5所示,為本發(fā)明實(shí)施例提供的一種上述所述的數(shù)據(jù)格式的轉(zhuǎn)換系統(tǒng),包括:
[0089]類型獲取單元I,用于分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的表單類型項(xiàng),確定所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型;
[0090]屬性獲取單元2,用于分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的基本屬性項(xiàng),得到表單項(xiàng)名稱、是否必填項(xiàng)和表單項(xiàng)填寫值;
[0091 ]關(guān)系確定單元3,用于根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型,讀取所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組和所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,然后根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)的關(guān)系屬性值確定與所述自表單項(xiàng)數(shù)組,或輔助描述屬性值的關(guān)系;
[0092]遞歸處理單元4,用于重復(fù)遞歸處理所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組或所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,直至處理完畢。
[0093]進(jìn)一步地,類型獲取單元I中,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的一個(gè)單元項(xiàng),解析單元項(xiàng)中的type類型屬性項(xiàng),以type類型屬性項(xiàng)來確定該表單項(xiàng)的類型。
[0094]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種可支持自由表單設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),其特征在于,包括: 位于瀏覽器前端的第一數(shù)據(jù)結(jié)構(gòu),其以json形式的來表示表單; 位于后臺(tái)數(shù)據(jù)庫(kù)的第二數(shù)據(jù)結(jié)構(gòu),其用表單項(xiàng)元數(shù)據(jù)表和表單項(xiàng)內(nèi)容表對(duì)瀏覽器前端中的數(shù)據(jù)進(jìn)行存儲(chǔ)。2.如權(quán)利要求1所述的數(shù)據(jù)結(jié)構(gòu),其特征在于,所述第一數(shù)據(jù)結(jié)構(gòu)所表示的表單包括下述字段: metadata_id,表示表單項(xiàng)的元數(shù)據(jù)id,用于數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)的自增主鍵id ; type,表示表單項(xiàng)類型,具備若干取值候選項(xiàng); prompt,表示表單項(xiàng)提示,用于放置輸入提示; name,表示表單項(xiàng)名稱; value,表示表單項(xiàng)所填寫或選取的內(nèi)容; is_required,表示該表單項(xiàng)是否為必填項(xiàng); is_checked,表示該表單項(xiàng)是否被選取; range_max,表示取值范圍的最大值; range_min,表示取值范圍的最小值; children,表示當(dāng)前表單項(xiàng)的子表單項(xiàng)數(shù)組; relat1n,表示當(dāng)前表單項(xiàng)和子表單項(xiàng)數(shù)組之間的關(guān)系,所述關(guān)系包括沒有關(guān)系、正常關(guān)系、邏輯關(guān)系或組合關(guān)系中的其中一種。3.如權(quán)利要求2所述的數(shù)據(jù)結(jié)構(gòu),其特征在于,type表單項(xiàng)類型包括:single_text單行文本、!111111:;[_七611:多行文本、作(1;[0單選、瓜(1;[0_(^1:;[011單選項(xiàng)、(311601<:多選、(311601<_(^1:;[011多選項(xiàng)、dropdown 下拉、dropdown_opt 1n 下拉項(xiàng)和image圖片。4.如權(quán)利要求1所述的數(shù)據(jù)結(jié)構(gòu),其特征在于,所述第二數(shù)據(jù)結(jié)構(gòu)中,所述表單項(xiàng)元數(shù)據(jù)表用于存儲(chǔ)表單項(xiàng)及它們之間的關(guān)系,包括下述字段: metadata_id,表示表單項(xiàng)的元數(shù)據(jù)id,用于數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)的自增主鍵id ; parent_metadata_id,表不父表單項(xiàng) id ; name,表示表單項(xiàng)名稱; sequence,表示次序,用于表示同一層或同一父表id下的表單項(xiàng)之間的次序關(guān)系; prompt,表示表單項(xiàng)提示,用于放置輸入提示; type,表示表單項(xiàng)類型,具備若干取值候選項(xiàng); assistant_disc,表示輔助描述,內(nèi)容為json格式的字符串; is_required,表示該表單項(xiàng)是否為必填項(xiàng); is_checked,表示該表單項(xiàng)是否被選?。? range_max,表示取值范圍的最大值; range_min,表示取值范圍的最小值。5.如權(quán)利要求1所述的數(shù)據(jù)結(jié)構(gòu),其特征在于,所述第二數(shù)據(jù)結(jié)構(gòu)中,所述表單項(xiàng)內(nèi)容表用于存儲(chǔ)表單項(xiàng)所填寫的實(shí)際內(nèi)容,包括下述字段: data_id,表示自增主鍵; metadata_id,表示對(duì)應(yīng)的表單項(xiàng)id; value,表示表單項(xiàng)所填寫或選取的內(nèi)容。6.—種上述權(quán)利要求1至5任一所述的數(shù)據(jù)格式的轉(zhuǎn)換方法,其特征在于,所述轉(zhuǎn)換方法包括以下步驟: 步驟A,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的表單類型項(xiàng),確定所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型; 步驟B,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的基本屬性項(xiàng),得到表單項(xiàng)名稱、是否必填項(xiàng)和表單項(xiàng)填寫值; 步驟C,根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型,讀取所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組和所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,然后根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)的關(guān)系屬性值確定與所述自表單項(xiàng)數(shù)組,或輔助描述屬性值的關(guān)系; 步驟D,重復(fù)步驟A至步驟C,遞歸處理所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組或所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,直至處理完畢。7.如權(quán)利要求6所述的轉(zhuǎn)換方法,其特征在于,在步驟A中,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的一個(gè)單元項(xiàng),解析單元項(xiàng)中的type類型屬性項(xiàng),以type類型屬性項(xiàng)來確定該表單項(xiàng)的類型。8.—種上述權(quán)利要求1至5任一所述的數(shù)據(jù)格式的轉(zhuǎn)換系統(tǒng),其特征在于,所述轉(zhuǎn)換系統(tǒng)包括: 類型獲取單元,用于分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的表單類型項(xiàng),確定所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型; 屬性獲取單元,用于分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的基本屬性項(xiàng),得到表單項(xiàng)名稱、是否必填項(xiàng)和表單項(xiàng)填寫值; 關(guān)系確定單元,用于根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的類型,讀取所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組和所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,然后根據(jù)所述第一數(shù)據(jù)結(jié)構(gòu)的關(guān)系屬性值確定與所述自表單項(xiàng)數(shù)組,或輔助描述屬性值的關(guān)系; 遞歸處理單元,用于重復(fù)遞歸處理所述第一數(shù)據(jù)結(jié)構(gòu)的子表單項(xiàng)數(shù)組或所述第二數(shù)據(jù)結(jié)構(gòu)的輔助描述屬性值,直至處理完畢。9.如權(quán)利要求8所述的轉(zhuǎn)換系統(tǒng),其特征在于,所述類型獲取單元中,分別讀取所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)的一個(gè)單元項(xiàng),解析單元項(xiàng)中的type類型屬性項(xiàng),以type類型屬性項(xiàng)來確定該表單項(xiàng)的類型。
【文檔編號(hào)】G06F17/24GK105912517SQ201610205634
【公開日】2016年8月31日
【申請(qǐng)日】2016年3月31日
【發(fā)明人】張文冠, 王鐵巖, 戴叢磊, 貝金雨, 邵和明, 王福楠
【申請(qǐng)人】深圳市八零年代網(wǎng)絡(luò)科技有限公司