一种WEB表单自定义字段的实现方法与系统与流程

文档序号:19385465发布日期:2019-12-11 00:54阅读:662来源:国知局
一种WEB表单自定义字段的实现方法与系统与流程

本发明涉及互联网技术领域,特别是一种web表单自定义字段的实现方法与系统。



背景技术:

在日趋繁杂的互联网形式下,软件开发的需求是多种多样的,特别是表单,用户接触的最多,开发人员编写的代码量也最多。用户通过表单,录入数据。所以说,表单是维系用户与系统的桥梁。一套大型的业务系统,可能会供给多家企业使用。而每一家企业因为所在的行业特性,有自己所独有的表单字段。关于这类需求的场景主要是工单系统表单等。可见,一个庞大的业务系统,是离不开其表单支持的。这里所说的自定义字段,是指能够按照用户的意图,由人为定义好表单字段,用户打开表单时,能够智能呈现出来,并且满足业务查询的性能要求。

现有的web表单自定义字段,一般是在业务表(比如工单表)中预先定义好一定量的字段(比如30个)来完成的。预估工单表单可能的最多扩展字段数量为30个,则在工单表中,新建c1到c30字段,用于存放工单中,每家企业的扩展字段值。为了了解这些值所对应的具体含义,还需要建立一张扩展字段含义说明表。

但是,上面这种实现方法存在着以下2个问题:

1、查询语句复杂且效率低。

首先,需要查询表单定义表中的所需字段,然后再通过拼凑这些字段作为查询sql语句的select内容,才能查询出需要的值。因为无法通过连接查询,一次性查出数据,自然效率低下。

2、无法在库表强制声明字段类型。

因为这些扩展字段只是简单的字符串类型,这样才能适应各种可能的数据类型。有的方案会为每一个扩展字段,定义相应的数据类型,比如c1_varchar,c1_date……,这种方案只会让查询语句变得更加可怕。



技术实现要素:

有鉴于此,本发明的目的是提出一种web表单自定义字段的实现方法与系统,能够灵活扩展表单字段,而且方便搜索、便于维护。

本发明采用以下方案实现:一种web表单自定义字段的实现方法,包括以下步骤:

根据业务场景,定义好表单自定义字段,并将其以xml格式保存为模板;

在初始化场景中,前端初始化加载表单,后端从数据库表中加载该表单自定义字段的相关定义和数据,并初始化该表单;

在保存场景中,当用户点击表单保存按钮时,把自定义字段中输入的数据保存到数据库表,并建立索引,便于后续查询场景;

在查询场景中,采用全文检索查询到相应的表单数据,并以常规表格形式展示出来。

进一步地,所述根据业务场景,定义好表单自定义字段,并将其以xml格式保存为模板。具体为:

根据业务场景,使用表单定义器,以可视化或xml语法高亮的编辑方式,定义好表单所需的自定义字段,并将其保存为模板。

进一步地,如果表单存在初始化数据来源为字典的字段,则读取字典数据作为该字段的初始值。这里的字典有两种类型:一种为固定值,那么可以使用xml格式定义;还有一种为可动态配置,那么可以保存在一张数据字典表中。

进一步地,所述在初始化场景中,前端初始化加载表单,后端从数据库表中加载该表单自定义字段的相关定义和数据,并初始化该表单,具体包括以下步骤:

步骤s21:前端请求初始化表单;

步骤s22:后端从数据库表中,加载该表单自定义字段的相关定义;

步骤s23:如果存在绑定字典定义的字段,则判断绑定的字典定义是动态定义的字典数据还是固定值,若是动态定义的字典数据,则从数据库表中加载字典数据;如果是固定值,则直接加载字典定义数据;最后把字典定义绑定到相应的字段定义中;

步骤s24:如果前端请求的方式是编辑或展示,则从数据库表中加载保存的xml数据;

步骤s25:把表单字段定义或数据转换为pojo对象;

步骤s26:将pojo对象数据绑定到对应字段中;

步骤s27:后端将表单自定义字段、字典定义以及数据,以xml或json形式返回给前端;

步骤s28:采用前端ui组件技术,生成相应的表单html代码;

步骤s29:浏览器将得到的表单html代码渲染展示出来。

进一步地,所述在保存场景中,当用户点击表单保存按钮时,把自定义字段中输入的数据保存到数据库表,并建立索引,便于后续查询场景具体包括以下步骤:

步骤s31:把需要保存的数据,序列化为xml格式数据,然后保存到数据库表的blob字段;

步骤s32:重建blob字段索引,便于后续查询场景。

进一步地,在表单的定义与数据xml文件中,都加入版本号。这样即能保障历史数据的展示,又可以支持新定义的表单字段。

进一步地,在查询场景中,采用全文检索查询到相应的表单数据,具体为:采用solr为表单自定义数据建立索引,使其支持全文检索。

综上,本发明首先把需要自定义的表单字段以xml形式保存为模板。当浏览器请求自定义表单时,控制层会从数据库表中,读取表单自定义字段与字典配置信息。后端根据前端的请求要求,选择相应的表单模板,返回相应的数据。数据类型可以是xml或json格式。前端解析相应的数据,判断需要采用的ui组件,代码生成出相应的表单。保存表单自定义字段时,表单数据以xml格式写入数据库业务表的blob字段。修改或展示表单数据时,再从blob字段中读取并响应出来。利用solr为表单自定义数据建立索引,使其支持全文检索,前端代码生成器以符合业务场景的方式,生成搜索结果,最后由浏览器渲染并展示结果。本发明能够灵活扩展表单字段,而且方便搜索、便于维护。

本发明还提供了一种计算机存储介质,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如上文所述的web表单自定义字段的实现方法。

本发明还提供了一种web表单自定义字段的实现系统,包括存储器、处理器,所述存储器上存储有实现上文所述的web表单自定义字段的实现方法的计算机指令,所述处理器在运行时执行存储器上存储的计算机指令。

与现有技术相比,本发明有以下有益效果:本发明利用xml数据格式的灵活性,并配合solr全文检索方法,大大提高了表单自定义维护扩展的便利性,在满足业务查询性能的同时,也降低了研发的人工投入成本。

附图说明

图1为本发明实施例的方法流程示意图。

图2为本发明实施例的原理框图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

如图1以及图2所示,本实施例提供了一种web表单自定义字段的实现方法,包括以下步骤:

根据业务场景,使用表单定义器,定义好表单自定义字段,并将其以xml格式保存为模板;

在初始化场景中,前端初始化加载表单,后端从数据库表中加载该表单自定义字段的相关定义和数据,执行一系列解析、绑定、生成步骤,并初始化该表单;

在保存场景中,当用户点击表单保存按钮时,利用表单保存器把自定义字段中输入的数据保存到数据库表,并建立索引,便于后续查询场景;

在查询场景中,利用表单搜索器的全文检索功能,采用全文检索查询到相应的表单数据,执行一系列解析、代码生成步骤,并以常规表格形式展示出来。

在本实施例中,所述根据业务场景,定义好表单自定义字段,并将其以xml格式保存为模板。具体为:

根据业务场景,使用表单定义器,以可视化或xml语法高亮的编辑方式,定义好表单所需的自定义字段,并将其保存为模板。

在本实施例中,如果表单存在初始化数据来源为字典的字段,则读取字典数据作为该字段的初始值。这里的字典有两种类型:一种为固定值,那么可以使用xml格式定义;还有一种为可动态配置,那么可以保存在一张数据字典表中。

在本实施例中,所述在初始化场景中,前端初始化加载表单,后端从数据库表中加载该表单自定义字段的相关定义和数据,并初始化该表单,具体包括以下步骤:

步骤s21:前端请求初始化表单;

步骤s22:后端从数据库表中,加载该表单自定义字段的相关定义;

步骤s23:如果存在绑定字典定义的字段,则判断绑定的字典定义是动态定义的字典数据还是固定值,若是动态定义的字典数据,则从数据库表中加载字典数据;如果是固定值,则直接加载字典定义数据;最后把字典定义绑定到相应的字段定义中;

步骤s24:如果前端请求的方式是编辑或展示,则从数据库表中加载保存的xml数据;

步骤s25:利用表单解析器,把表单字段定义或数据转换为pojo对象;

步骤s26:利用表单绑定器,将pojo对象数据绑定到对应字段中;

步骤s27:后端将表单自定义字段、字典定义以及数据,以xml或json形式返回给前端;

步骤s28:表单代码生成器,依据具体的前端ui组件技术,生成相应的表单html代码;

步骤s29:浏览器将得到的表单html代码渲染展示出来。

在本实施例中,所述在保存场景中,当用户点击表单保存按钮时,把自定义字段中输入的数据保存到数据库表,并建立索引,便于后续查询场景具体包括以下步骤:

步骤s31:把需要保存的数据,序列化为xml格式数据,然后保存到数据库表的blob字段;

步骤s32:重建blob字段索引,便于后续查询场景。

在本实施例中,在表单的定义与数据xml文件中,都加入版本号。这样即能保障历史数据的展示,又可以支持新定义的表单字段。

在本实施例中,在查询场景中,采用全文检索查询到相应的表单数据,具体为:采用solr为表单自定义数据建立索引,使其支持全文检索。

综上,本实施例首先把需要自定义的表单字段以xml形式保存为模板。当浏览器请求自定义表单时,控制层会从数据库表中,读取表单自定义字段与字典配置信息。后端根据前端的请求要求,选择相应的表单模板,返回相应的数据。数据类型可以是xml或json格式。前端解析相应的数据,判断需要采用的ui组件,代码生成出相应的表单。保存表单自定义字段时,表单数据以xml格式写入数据库业务表的blob字段。修改或展示表单数据时,再从blob字段中读取并响应出来。利用solr为表单自定义数据建立索引,使其支持全文检索,前端代码生成器以符合业务场景的方式,生成搜索结果,最后由浏览器渲染并展示结果。本发明能够灵活扩展表单字段,而且方便搜索、便于维护。

本实施例还提供了一种计算机存储介质,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如上文所述的web表单自定义字段的实现方法。

本实施例还提供了一种web表单自定义字段的实现系统,包括存储器、处理器,所述存储器上存储有实现上文所述的web表单自定义字段的实现方法的计算机指令,所述处理器在运行时执行存储器上存储的计算机指令。

特别的,在本实施例中,xml可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。利用xml提供的统一方法来描述和交换表单字段定义与数据,再结合solr优化查询性能,本实施例具有以下优点:

1、拥抱变化:需求随着时间的演进而不断地发生着变化,表单也是如此。因为业务发生变化,原先定义好的表单字段,不再使用;或者又新增了一些表单字段。本实施例在表单定义与数据xml文件中,都加入版本号。这样,即能保障历史数据的展示,又可以支持对表单字段进行删减或扩展。

2、维护方便:因为xml本身即是可描述的,所以本实施例完全可以将表单定义的业务逻辑部分交由售前人员,甚至是直接由用户去实现。只要表单定义工作足够细致,并提供详细的接口使用说明以及交付文档,就能够让售前人员清楚明白的了解相关接口的使用场景及方法,并清楚逻辑部分的编写规则。表单定义的业务就可以由售前人员对照接口说明和编写规则实现出来,当然,提供清楚明了的用户ui是实现这一意图的前提条件,售前人员及用户,可以直接在ui界面上实现表单自定义字段的编写工作。

利用xml实现维护及用户自主编写表单自定义字段的定义逻辑之后,带来的另一大便利是,当定义编写人员编写好xml后,由于xml是保存在库表的,所以,当xml编写完成后,不需要重新发布代码到生产环境,可以即时生效,减轻了维护发布的成本,并同时做到了需求的及时实现,提高了用户的体验及评价。

3、便于扩展:一个大型系统,特别是外包系统,企业数量多,行业领域多样,表单的自定义字段数量必然是众多的,现有的方案,诸如预定义n个自定义字段,如果要扩展,就必须重新修改表结构,那这样就要求程序员为了新的需求不断的去实现新的表单字段逻辑,维护人员也需要部署新的代码到生产环境,无形中也提高了企业的人工成本。本发明通过特有的实现方式,实现了表单自定义字段的扩展便利性,结合前面说过的,使用xml所提供的统一方法来描述和交换表单字段定义与数据,新的业务逻辑及代码的部署,可以完全交由维护人员介入处理,而无须程序研发人员参与,这样就节约了代码的研发成本同时使得表单自定义字段的扩展方便了很多,维护人员只要关注表单定义的部署及编写就好了。

4、保障查询性能:企业定义了表单字段,自然需要检索。本发明可以将保存数据的blob字段绑定到solr,构建全文检索体系。solr用于构建搜索应用程序。它建立在lucene(全文搜索引擎)之上。solr是企业级的,快速的和高度可扩展的开源搜索平台。为了避免两次查询,提高查询性能,本实施例可以将表单定义在应用启动时,存入redis缓存系统。在solr检索出数据时,从缓存中取出定义,在应用层面实现绑定。

具体的,本实施例的前提条件,是要将用户所需要的表单字段,详细、清晰地定义出来,使得用户不需要关心这些字段内的具体实现,只需要关心这个字段所需要的属性,以及明白这些属性所代表的含义即可,且表单字段定义的类型越多,可以提供给维护及用户的可操作性就越大,所以,这一步是决定非代码研发人员,所能做的操作有多灵活的关键。因此,应尽可能详细、清晰地定义好所需要的表单字段,能提供的字段类型种类越丰富越好。

本实施例的自定义字段采用xml文件作为定义方式,类似于以下的形式:

<xmlversion="1.0"encoding="utf-8">

<template>

<fieldid="字段名称"type="字段类型"label="字段标签内容"…/>

<fieldid="字段名称2"type="字段类型2"label="字段标签内容2"…/>

<fieldid="字段名称3"type="字段类型3"label="字段标签内容3"…/>

</template>

其中,field标签表示一个表单字段配置,它的id、type、label为必填属性,其它扩展属性可以依据标签的具体类型进行配置。field标签,可以利用dtd技术,来验证哪些属性为必填,哪些属性为可选以及具体属性值的合理范围。有些字段属性支持以逗号分隔的多值配置,比如字段的前端验证规则。有些字段的值来源于字典,那么可以配置dict属性。字典有两种来源,一种是固定值,那么可以以逗号来分隔;另一种来源于数据字典表。表单代码生成器会依据前端所采用的技术(jquery+bootstrap、vue+elementui等等),生成相应的前端代码。这些前端代码作为响应内容,返回给前端。前端就可以渲染出我们希望的页面。表单代码生成器依托于freemarker的宏指令技术,来生成指定ui技术的标签或通用函数。如果是前后端分离架构,那么也可以直接返回json格式数据,由前端代码生成器,生成相应的ui代码。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1