可支持自由表单设计的数据结构及其转换方法及系统的制作方法

文档序号:10552878阅读:244来源:国知局
可支持自由表单设计的数据结构及其转换方法及系统的制作方法
【专利摘要】本发明适用于表单设计,提供了一种可支持自由表单设计的数据结构,包括:位于浏览器前端的第一数据结构,其以json形式的来表示表单;位于后台数据库的第二数据结构,其用表单项元数据表和表单项内容表对浏览器前端中的数据进行存储。通过本发明,基于基础的表单项,通过json的形式表示,可以构造出适应各种各样场景所需要的表单,如简单的应用场景有常见的登录、注册的表单等,复杂的应用场景可用于逻辑或嵌入表单等,让表单设计更灵活,可以让使用的用户得到他们所想要的、贴合目的需求的收集数据的表单。
【专利说明】
可支持自由表单设计的数据结构及其转换方法及系统
技术领域
[0001]本发明属于互联网表单设计,尤其涉及一种可支持自由表单设计的数据结构及其转换方法及系统。
【背景技术】
[0002]在互联网的表单收集数据中,对于不同的数据收集需求,对于表单所需要的呈现形式也是多种多样的,有组合的表单项,也有嵌套的表单项,还有在组合项中又有嵌套的需求,还有逻辑表单等,现有拼接或拼凑式的表单,缺点是不灵活,比较固定,不便于统一用同一种的数据库表的结构进行存储与处理,同时现有的表单表示形式存在以下问题:
[0003]1、在网络浏览器前端上对于自由组合与嵌套的表单,数据结构无法表示并展示出来;
[0004]2、在数据库存储时,无法将自由表单通过数据库表存储下来,并完成相应的数据检索的要求;
[0005]3、在浏览器前端的数据结构,与后台存储时所用的数据库表结构,是完全不同的,无法通过相应的方法进行两种不同的数据存储结构之间的转换。

【发明内容】

[0006]本发明所要解决的技术问题在于提供一种可支持自由表单设计的数据结构及其转换方法及系统,旨在解决在进行互联网的表单收集数据时存在的上述问题。
[0007]本发明是这样实现的,一种可支持自由表单设计的数据结构,包括:
[OOO8 ]位于浏览器前端的第一数据结构,其以j s on形式的来表不表单;
[0009]位于后台数据库的第二数据结构,其用表单项元数据表和表单项内容表对浏览器前端中的数据进行存储。
[0010]进一步地,所述第一数据结构所表示的表单包括下述字段:
[0011]metadata_id,表示表单项的元数据id,用于数据库存储时的自增主键id;
[0012I type,表示表单项类型,具备若干取值候选项;
[0013I prompt,表示表单项提示,用于放置输入提示;
[0014]name,表示表单项名称;
[0015]value,表示表单项所填写或选取的内容;
[0016]is_required,表示该表单项是否为必填项;
[0017]is_checked,表示该表单项是否被选取;
[0018]range_max,表示取值范围的最大值;
[0019]range_min,表示取值范围的最小值;
[0020]ch i I dr en,表示当前表单项的子表单项数组;
[0021]relat1n,表示当前表单项和子表单项数组之间的关系,所述关系包括没有关系、正常关系、逻辑关系或组合关系中的其中一种。
[0022]进一步地,type表单项类型包括:8;[叫16_七611:单行文本、1111111:;[_七611:多行文本、rad1-^izfe Nrad1_opt1nJp-1zfe?/?、check多选、check_opt1n多选项、dropdown下拉、dropdown_opt1n 下拉项和image图片。
[0023]进一步地,所述第二数据结构中,所述表单项元数据表用于存储表单项及它们之间的关系,包括下述字段:
[0024]metadata_id,表示表单项的元数据id,用于数据库存储时的自增主键id;
[0025]parent_metadata_id,表不父表单项 id ;
[0026]name,表示表单项名称;
[0027]sequence,表示次序,用于表示同一层或同一父表id下的表单项之间的次序关系;
[0028]prompt,表示表单项提示,用于放置输入提示;
[0029]type,表示表单项类型,具备若干取值候选项;
[°03°] assistant_disc,表示辅助描述,内容为json格式的字符串;
[0031 ] is_required,表示该表单项是否为必填项;
[0032]is_checked,表示该表单项是否被选取;
[0033]range_max,表示取值范围的最大值;
[0034]range_min,表示取值范围的最小值。
[0035]进一步地,所述第二数据结构中,所述表单项内容表用于存储表单项所填写的实际内容,包括下述字段:
[0036]data_id,表示自增主键;
[0037]metadata_id,表不对应的表单项id;
[0038]value,表示表单项所填写或选取的内容。
[0039]本发明还提供一种上述的数据格式的转换方法,包括以下步骤:
[0040]步骤A,分别读取所述第一数据结构和所述第二数据结构的表单类型项,确定所述第一数据结构和所述第二数据结构的类型;
[0041]步骤B,分别读取所述第一数据结构和所述第二数据结构的基本属性项,得到表单项名称、是否必填项和表单项填写值;
[0042]步骤C,根据所述第一数据结构和所述第二数据结构的类型,读取所述第一数据结构的子表单项数组和所述第二数据结构的辅助描述属性值,然后根据所述第一数据结构的关系属性值确定与所述自表单项数组,或辅助描述属性值的关系;
[0043]步骤D,重复步骤A至步骤C,递归处理所述第一数据结构的子表单项数组或所述第二数据结构的辅助描述属性值,直至处理完毕。
[0044]进一步地,在步骤A中,分别读取所述第一数据结构和所述第二数据结构的一个单元项,解析单元项中的type类型属性项,以type类型属性项来确定该表单项的类型。
[0045]本发明还提供了一种上述所述的数据格式的转换系统,包括:
[0046]类型获取单元,用于分别读取所述第一数据结构和所述第二数据结构的表单类型项,确定所述第一数据结构和所述第二数据结构的类型;
[0047]属性获取单元,用于分别读取所述第一数据结构和所述第二数据结构的基本属性项,得到表单项名称、是否必填项和表单项填写值;
[0048]关系确定单元,用于根据所述第一数据结构和所述第二数据结构的类型,读取所述第一数据结构的子表单项数组和所述第二数据结构的辅助描述属性值,然后根据所述第一数据结构的关系属性值确定与所述自表单项数组,或辅助描述属性值的关系;
[0049]递归处理单元,用于重复递归处理所述第一数据结构的子表单项数组或所述第二数据结构的辅助描述属性值,直至处理完毕。
[0050]进一步地,所述类型获取单元中,分别读取所述第一数据结构和所述第二数据结构的一个单元项,解析单元项中的type类型属性项,以type类型属性项来确定该表单项的类型。
[0051]本发明与现有技术相比,有益效果在于:通过本发明,基于基础的表单项,通过json的形式表示,可以构造出适应各种各样场景所需要的表单,如简单的应用场景有常见的登录、注册的表单等,复杂的应用场景可用于逻辑或嵌入表单等,让表单设计更灵活,可以让使用的用户得到他们所想要的、贴合目的需求的收集数据的表单。
【附图说明】
[0052]图1是本发明实施例提供的在浏览器前端表示的数据结构示意图。
[0053]图2是本发明实施例提供的在后台数据库表中的表单项元数据表的数据结构示意图。
[0054]图3是本发明实施例提供的在后台数据库表中的表单项内容表的数据结构示意图。
[0055]图4是本发明实施例提供的一种可支持自由表单设计的数据结构的转换方法的流程图。
[0056]图5是本发明实施例提供的一种可支持自由表单设计的数据结构的转换系统的结构示意图。
【具体实施方式】
[0057]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0058]本发明是这样实现的,一种可支持自由表单设计的数据结构,包括:
[0059 ]位于浏览器前端的第一数据结构,其以j s on形式的来表不表单;
[0060]位于后台数据库的第二数据结构,其用表单项元数据表和表单项内容表对浏览器前端中的数据进行存储;
[0061 ]通过递归的方式对所诉第一数据结构和所述第二数据结构进行转换。
[0062]下面通过图1至图3对本发明进行进一步的阐述:
[0063]在浏览器前端时,通过如图1所示的json形式的数据结构来表示表单,下面一一解释下其中的字段含义:
[0064]*metadata_id:元数据id,是用于数据库表存储时的自增主键id。
[0065]*type:类型,有以下取值候选项:8;[1^16_七611:单行文本;1111111:;[_七611:多行文本;rad1单选;rad1_opt1n单选项;check多选;check_opt1n多选项;dropdown下拉;dropdown_opt1n下拉项;image图片。后面还可根据需求不断扩展type取值。[ΟΟ??] *prompt:提示,如单行文本,可以放置输入提示。
[0067]*name:表单项的名称。
[0068]*value:表单项所填写或选取的内容。
[0069]*is_required:该表单项是否为必填项,取值为I是必填,-1是非必填。
[0070]*is_checked:该字段对于单选项、多选项或下拉项有意义,表示该项是否被选取,取值为I表示选取,-1表示非选取。
[007?] *range_max:表示取值范围的最大值。当type为单行文本时,表示可输入字符的最大个数,而若当type为多选时,表示最多可选取多少项。
[0072 ] *range_min:表示取值范围的最小值,与range_max相对应。
[0073]*children:表示当前表单项的子表单项数组,数组中的每一项的类型为json_field。如果没有子表单,那么该字段为一空数组。
[0074]delat1n:表示当前表单项与子表单项数组之间的关系,该字段是非常重要的一个字段,表单项之间的组合或嵌套的关系通过该项来表示。取值为none,表示没有关系或正常的关系;取值为logic,表示为逻辑关系,即当该表单项被选中或激活时,其子表单才相应展示或激活;取值为complex,表示为组合关系,即当前表单项,是由其子表单数组项组合在一起而组成的。
[0075]而在后台的数据库表中,需要使用到两个数据表来进行对应地存储,首先介绍第一个表f ield_metadata元数据表,用于存储表单项及它们之间的关系,如图2所示,对于其中的字段,上述已经有进行说明,以下仅说明新出现的字段:
[0076]印3代111:_1116丨3(13丨3_丨(1:在浏览器前端时,有011;[1(1代11子表单项数组,那么在后台的数据库表时,刚好反过来,是通过存储该表单项的父表单项id来保存此关系的,最外层的表单项都是没有父表单项的,那么就将该字段置为-1。
[0077]^sequence:次序,用于表示同一层或同一父表单id下的表单项之间的次序关系,从I开始起算。
[0078]*type:在数据库表中时,type的取值只能为single_text ,multi_text ,rad1 ,check, dropdown与 image。
[0079]*assistant_disc:辅助描述,内容为json格式的字符串,如当type取值为rad1单选时,那么其单选项就通过assistant_disc进行描述。
[0080]另外一个数据库表为field_data表单项内容表,用于存储表单项所填写的实际内容,其结构如图3所示,对于其中的字段,上述已经有进行说明,以下仅说明新出现的字段其中:
[0081 ] *data_id:自增主键
[0082]在本实施例中,对于浏览器前端与后台数据库表之间的数据格式的转换关系,优先选用通过递归地方式进行相互转换;但是也可以通过非递归的方式进行相互转换,但是通过非递归的方式进行相互转换在理解与后期维护、调整的难度更大。在本实施例中,前后台之间的数据结构只具有一定的相关性,毕竟浏览器前端是一种比较自由的json形式,后台数据库表是另外一种数据库表的行列式,两者之间需要通过转换才能够对应起来。后台的两个表之间有关联性,元数据表用于存储表单项的组织与逻辑关系,而表单项内容表用于存储表单项所填写的内容值。
[0083]因为第一数据结构和第二数据结构是经整体使用递归方式不断进行解析与转换直到转换完成的,之所以可以使用递归方式进行解析,是因为两者的数据结构在设计之初就采用了表单的父项、兄弟项、子项中的每一个表单项都是具有相同的属性,只是因为属性值的不同表示了不同的意义。基于此,本发明还提供了如图4所示的一种可支持自由表单设计的数据结构的转换方法,步骤包括:
[0084]SI,分别读取所述第一数据结构和所述第二数据结构的表单类型项,确定所述第一数据结构和所述第二数据结构的类型。在本步骤中,分别读取第一数据结构和第二数据结构的一个单元项,先解析单元项中的type (类型)属性项,以便确定该表单项的类型。
[0085]S2,分别读取所述第一数据结构和所述第二数据结构的基本属性项,得到表单项名称、是否必填项和表单项填写值。在本步骤吗,根据步骤SI得到的类型,再解析该单元项的基本属性项,如name表单项名称、is_required是否必填、value表单项填写值等。在本步骤中,获取的各项的相关属性值做为后续步骤的判断依据。
[0086]S3,根据所述第一数据结构和所述第二数据结构的类型,读取所述第一数据结构的子表单项数组和所述第二数据结构的辅助描述属性值,然后根据所述第一数据结构的关系属性值确定与所述自表单项数组,或辅助描述属性值的关系。在本步骤中,根据该表单项的type(类型),读取该表单项的011;[1(1代11(自表单项数组)或38818丨3111:_(1180(辅助描述)属性值(其值为一个表单项数组或空),再由relat1n (关系)属性值确定与chi Idren或assistant_disc属性值的关系。在本步骤中,这是父项与其子项之间的关系,根据relat1n值确定,如可能是嵌套关系,或逻辑显示关系等。
[0087]S4,重复SI至S3,递归处理所述第一数据结构的子表单项数组或所述第二数据结构的辅助描述属性值,直至处理完毕。在本步骤中,根据上面同样的步骤递归处理该表单项的chiIdren或assistant_disc属性值,最终全部处理完成,转换终止完成。在本步骤中,整体使用递归方式不断进行解析与转换直到转换完成,转换与解析意义相同:即是说对于子项数组内的处理,基本就是用以上步骤再一遍遍地处理,直至所有项处理完成。
[0088]如图5所示,为本发明实施例提供的一种上述所述的数据格式的转换系统,包括:
[0089]类型获取单元I,用于分别读取所述第一数据结构和所述第二数据结构的表单类型项,确定所述第一数据结构和所述第二数据结构的类型;
[0090]属性获取单元2,用于分别读取所述第一数据结构和所述第二数据结构的基本属性项,得到表单项名称、是否必填项和表单项填写值;
[0091 ]关系确定单元3,用于根据所述第一数据结构和所述第二数据结构的类型,读取所述第一数据结构的子表单项数组和所述第二数据结构的辅助描述属性值,然后根据所述第一数据结构的关系属性值确定与所述自表单项数组,或辅助描述属性值的关系;
[0092]递归处理单元4,用于重复递归处理所述第一数据结构的子表单项数组或所述第二数据结构的辅助描述属性值,直至处理完毕。
[0093]进一步地,类型获取单元I中,分别读取所述第一数据结构和所述第二数据结构的一个单元项,解析单元项中的type类型属性项,以type类型属性项来确定该表单项的类型。
[0094]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种可支持自由表单设计的数据结构,其特征在于,包括: 位于浏览器前端的第一数据结构,其以json形式的来表示表单; 位于后台数据库的第二数据结构,其用表单项元数据表和表单项内容表对浏览器前端中的数据进行存储。2.如权利要求1所述的数据结构,其特征在于,所述第一数据结构所表示的表单包括下述字段: metadata_id,表示表单项的元数据id,用于数据库存储时的自增主键id ; type,表示表单项类型,具备若干取值候选项; prompt,表示表单项提示,用于放置输入提示; name,表示表单项名称; value,表示表单项所填写或选取的内容; is_required,表示该表单项是否为必填项; is_checked,表示该表单项是否被选取; range_max,表示取值范围的最大值; range_min,表示取值范围的最小值; children,表示当前表单项的子表单项数组; relat1n,表示当前表单项和子表单项数组之间的关系,所述关系包括没有关系、正常关系、逻辑关系或组合关系中的其中一种。3.如权利要求2所述的数据结构,其特征在于,type表单项类型包括:single_text单行文本、!111111:;[_七611:多行文本、作(1;[0单选、瓜(1;[0_(^1:;[011单选项、(311601<:多选、(311601<_(^1:;[011多选项、dropdown 下拉、dropdown_opt 1n 下拉项和image图片。4.如权利要求1所述的数据结构,其特征在于,所述第二数据结构中,所述表单项元数据表用于存储表单项及它们之间的关系,包括下述字段: metadata_id,表示表单项的元数据id,用于数据库存储时的自增主键id ; parent_metadata_id,表不父表单项 id ; name,表示表单项名称; sequence,表示次序,用于表示同一层或同一父表id下的表单项之间的次序关系; prompt,表示表单项提示,用于放置输入提示; type,表示表单项类型,具备若干取值候选项; assistant_disc,表示辅助描述,内容为json格式的字符串; is_required,表示该表单项是否为必填项; is_checked,表示该表单项是否被选取; range_max,表示取值范围的最大值; range_min,表示取值范围的最小值。5.如权利要求1所述的数据结构,其特征在于,所述第二数据结构中,所述表单项内容表用于存储表单项所填写的实际内容,包括下述字段: data_id,表示自增主键; metadata_id,表示对应的表单项id; value,表示表单项所填写或选取的内容。6.—种上述权利要求1至5任一所述的数据格式的转换方法,其特征在于,所述转换方法包括以下步骤: 步骤A,分别读取所述第一数据结构和所述第二数据结构的表单类型项,确定所述第一数据结构和所述第二数据结构的类型; 步骤B,分别读取所述第一数据结构和所述第二数据结构的基本属性项,得到表单项名称、是否必填项和表单项填写值; 步骤C,根据所述第一数据结构和所述第二数据结构的类型,读取所述第一数据结构的子表单项数组和所述第二数据结构的辅助描述属性值,然后根据所述第一数据结构的关系属性值确定与所述自表单项数组,或辅助描述属性值的关系; 步骤D,重复步骤A至步骤C,递归处理所述第一数据结构的子表单项数组或所述第二数据结构的辅助描述属性值,直至处理完毕。7.如权利要求6所述的转换方法,其特征在于,在步骤A中,分别读取所述第一数据结构和所述第二数据结构的一个单元项,解析单元项中的type类型属性项,以type类型属性项来确定该表单项的类型。8.—种上述权利要求1至5任一所述的数据格式的转换系统,其特征在于,所述转换系统包括: 类型获取单元,用于分别读取所述第一数据结构和所述第二数据结构的表单类型项,确定所述第一数据结构和所述第二数据结构的类型; 属性获取单元,用于分别读取所述第一数据结构和所述第二数据结构的基本属性项,得到表单项名称、是否必填项和表单项填写值; 关系确定单元,用于根据所述第一数据结构和所述第二数据结构的类型,读取所述第一数据结构的子表单项数组和所述第二数据结构的辅助描述属性值,然后根据所述第一数据结构的关系属性值确定与所述自表单项数组,或辅助描述属性值的关系; 递归处理单元,用于重复递归处理所述第一数据结构的子表单项数组或所述第二数据结构的辅助描述属性值,直至处理完毕。9.如权利要求8所述的转换系统,其特征在于,所述类型获取单元中,分别读取所述第一数据结构和所述第二数据结构的一个单元项,解析单元项中的type类型属性项,以type类型属性项来确定该表单项的类型。
【文档编号】G06F17/24GK105912517SQ201610205634
【公开日】2016年8月31日
【申请日】2016年3月31日
【发明人】张文冠, 王铁岩, 戴丛磊, 贝金雨, 邵和明, 王福楠
【申请人】深圳市八零年代网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1