自定义表单的描述及表单解析方法与流程

文档序号:12039964阅读:410来源:国知局
本发明涉及计算机系统的信息管理,尤指一种能完成基于表单数据为核心的信息管理系统的快速搭建的自定义表单的描述及表单解析方法。
背景技术
:数据的管理始终是计算机信息系统管理的核心,计算机信息系统的开发也围绕着数据管理的核心来进行的,根据不同的领域及业务特点,抽象出要管理的数据,以及数据处理的流程,在各个流程环节提供用户操作界面,使用人员通过操作界面与程序交互从而完成整个数据处理的过程,最终将处理的结果或存储或呈现给用户。在信息系统中提供自定义表单功能,可以简化程序开发过程,并且可以提高系统的灵活性,自定义表单系统在信息系统中有很广泛的应用。现行的自定义表单系统实现相对简单,一般通行的办法是,通过用户配置得到表单界面元素的描述数据,以及表单对应的数据库表结构,程序根据描述数据自动生成表单管理界面和以及数据存储逻辑。现有技术方案示意图如图1所示一、用户通过系统提供的工具完成对表单定义,得到表单描述数据,表单描述数据大致可以分为三点:1.表单录入界面的描述,基本信息包括录入界面的样式,都有哪些控件,控件对应表单的那个字段,默认值是多少,字段的合法性校验规则等。2.表单数据查询界面描述,数据包括,用哪些字段检索,查询字段条件数据采用的输入控件,查询结果返回哪些字段的数据,以及列表页的样式等。3.表单存储方式描述,包括表单都有那些字段,字段的类型、长度,表单的存储数据表名称二、通过步骤一的数据系统自动生成表单的管理以及查询界面,用户通过管理界面完成数据的管理,自动完成用户管理数据的存储工作。现行的表单系统虽然极大提高了信息系统的灵活行,但是也有很明显的缺点1.现有自定义表单系统,通常逻辑比较固定,仅能实现数据的存储与查询,一旦数据的处理逻辑再局限于表单的查询和存储需求,则需要额外引入业务逻辑对数据进行再加工,现有模式无法适应,一般需要对表单系统进行定制开发来扩充现有的系统,需要对现有系统做版本升级,成本较高。2.现有表单系统存储结构比较单一,通常是将数据全部存储在数据库,这种方式虽然方便管理与查询,但是也有不可忽视的缺点,对于不适合放在数据库的数据如大文本等类型的数据也放必须在数据库,从而影响数据库的效率,对数据库效率敏感的系统危害较大。技术实现要素:为解决现有技术中的问题,本发明主要目的在于:提供一种能完成基于表单数据为核心的信息管理系统的快速搭建的自定义表单的描述及表单解析方法。本发明提供一种自定义表单的描述及表单解析方法,步骤为:一、通过表单描述信息配置模块录入管理表单的描述信息,描述信息中增加:数据索引方式、字段的存储方式及表单控件对应表单存储字段的描述;二、服务器解析获取表单配置并保存;三、利用数据访问代理层以数据代理方式,根据表单配置模块所保存在服务器端的表单配置数据在表单运行环节加载配置。前述表单描述信息包括:表单的字段定义:字段类型、字段长度、字段名称、默认值、索引方式及字段的存储方式;表单管理界面的定义:表单管理界面模板、表单采用的控件、表单控件的描述信息、表单控件对应表单存储字段、表单控件的样式、表单控件的高度及宽度、默认值及数据合法性校验的正则表达式、表单控件的数据源及表单控件的扩展配置;表单数据查询界面描述,数据包括:用哪些字段检索、查询字段条件数据采用的输入控件、查询结果返回哪些字段的数据、及表单查询列表模板以及列表页的样式;表单脚本逻辑介入点脚本配置,逻辑脚本介入点包括:数据保存前、数据保存后及数据发布脚本。前述数据代理方式为:将表单数据传递给代理接口,同时传递表单ID;然后,代理接口根据ID加载对应的表单配置,根据存储方式的将数据存储到对应的位置;之后,根据表单配置分别从不同的存储介质查询表单数据,然后将数据合并,并返回表单数据。前述方法中:表单数据以类实现的哈希表的方式传递给代理接口;然后,代理接口解析表单配置,并扫描哈希表的特定键key,根据特定键key查找表单配置中表单的存储方式;之后,并以哈希表的方式返回表单数据。前述步骤三的具体方法为:步骤1:通过系统提供的表单视图页面,同时将所要请求的表单ID以及要请求的表单数据ID以参数的方式提交到服务器,服务器端接受表单ID参数,并根据表单ID加载表单配置数据;步骤2:系统根据步骤1加载的数据,获取表单视图的模板;步骤3:系统根据提交的表单数据ID参数,如果数据ID等于零,则为新增数据直接转到步骤5,反之则为修改数据转到步骤4;步骤:4:根据步骤1中加载的表单数据,获取表单的默认值配置,并将默认值传递给表单视图模板;步骤5:根据数据ID,加载表单数据并将表单数据传递给表单视图模板;步骤6:通过模板引擎解析表单模板,得到表单的HTML内容;步骤7:将步骤6中所产生的HTML内容输入到web页面上完成表单视图的渲染工作。前述步骤2采用的是FreeMarker模板。与现有技术相比,本发明的优点:本发明自定义表单系统通过数据代理模块实现数据储存结构的自定义,可以轻易实现数据的分散存储,而不增加数据查询存储的复杂度,可以很容易的解决系统的数据访问瓶颈平静问题。附图说明图1现有技术表单的描述及解析方案示意图。图2本发明系统结构划分示意图。图3本发明表单管理界面渲染流程图。图4本发明表单查询渲染过程流程图。图5本发明数据代理层实现修改数据的查询的流程图。图6本发明数据代理层实现表单数据的查询的流程图。具体实施方式针对现有状况本发明在表单处理的过程中通过自定义的脚本来完成表单系统的逻辑扩展,从而提高表单的灵活性,而不需要对系统进行扩展,来完成表单的定制开发,减少开发成本,通过扩展表单描述定义,增加数据访问代理层,完成数据多元化存储需求,数据可以根据需求存储到数据库,nosql,磁盘文件,以及上述三种方式的混合,通过数据访问代理,扩展逻辑脚本可以透明访问数据而不需要关心数据存储方式差异。本发明中方法中将系统结构划分如图2所示,包含:1、表单描述信息配置模块;2、表单解析渲染模块;3、执行中要用到的自定义逻辑脚本执行引擎;4、数据访问代理模块。主要改进是在现有表单描述信息配置模块基础上增加数据存储方式的自定义部分,利用本领域其它技术中的数据访问代理模块来完成这个自定义部分。一、表单描述信息配置模块表单系统通过提供给用户的表单定制向导工具,表单向导工具提供web表单视图,用户通过web界面录入管理表单的描述信息。用户填写完web表单后,提交表单到服务器,服务器解析获取表单配置并保存。具体可以将html中的表单提交给统一的Action,Action收集表单数据传递数据给数据代理,数据代理加载表单配置根据配置存储数据。表单描述信息包括:1、表单的字段定义,字段类型,字段长度,字段名称,默认值,索引方式,字段的存储方式。2、表单管理界面的定义,表单管理界面模板,表单采用的控件,表单控件的描述信息,表单控件对应表单存储字段,表单控件的样式,表单控件的高度,宽度,默认值,及数据合法性校验的正则表达式,表单控件的数据源,及表单控件的扩展配置。3.表单数据查询界面描述,数据包括,用哪些字段检索,查询字段条件数据采用的输入控件,查询结果返回哪些字段的数据,及表单查询列表模板,以及列表页的样式等。4.表单脚本逻辑介入点脚本配置,逻辑脚本介入点包括,数据保存前,数据保存后,数据发布脚本。即:在现有表单描述信息中增加:数据索引方式、字段的存储方式及表单控件对应表单存储字段的描述,以实现透明访问数据而不需要关心数据存储方式差异的效果。二、表单解析渲染模块系统根据表单配置模块所保存在服务器端的表单配置数据在表单运行环节加载配置,根据配置生成提供给用户的数据管理和查询界面,表单管理界面渲染流程图如图3所示。步骤1:用户通过系统提供的表单视图页面,同时将所要请求的表单ID以及要请求的表单数据ID以参数的方式提交到服务器,服务器端接受表单ID参数,并根据表单ID加载模块1所产生数据。步骤2:系统根据步骤1加载的数据,获取表单视图的模板,该模板通常使用已有的模板技术的模板文件来处理,本方案采用的是FreeMarker模板来解决问题,以此类推技术人员可以使用其他模板方式来完成模板的解析工作。步骤3:系统根据提交的表单数据ID参数,如果数据ID等于零则为新增数据直接转到步骤5,反之则为修改数据转到步骤4。步骤:4:根据步骤1中加载的表单数据,获取表单的默认值配置,并将默认值传递给表单视图模板。步骤5:根据数据ID,加载表单数据并将表单数据传递给表单视图模板。步骤6:通过FreeMarker模板引擎解析表单模板,得到表单的HTML内容。步骤7:将步骤6中所产生的HTML内容输入到web页面上完成表单视图的渲染工作。图4为本发明表单查询渲染过程流程图。脚本引擎:脚本是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本引擎对脚本进行编译和执行。脚本引擎通常用于嵌入到编译型应用程序中,用于执行扩展的逻辑脚本,来扩充程序的功能,例如EXCEL软件中的VBA脚本是由EXCEL中嵌入的VBA脚本引擎来执行的。三、自定义逻辑脚本执行引擎模块用户通过管理和查询界面管理查询数据,在用户管理数据过程中,保存数据时系统会将需要保存的数据以上下文环境变量的方式传递到脚本引擎,脚本引擎加载用户自定义的数据保存前脚本,对传递的数据进行加工,加工后的数据通过脚本引擎上下文变量的方式回传,完成自定义保存前脚本的处理过程,系统接收回传数据后调用数据代理保存数据,保存数据后将保存数据的结果,以及数据本身传递给脚本引擎,脚本加载保存后脚本,运行保存后脚本逻辑代码,将结果返回给程序,然后同理调用发布脚本,完成发布逻辑的执行。步骤1:表单渲染模块渲染的表单管理界面,系统用户对表单数据输入或修改,完毕后提交表单。步骤2:由步骤1用户提交的数据以POST的方式提交到服务器,服务器端获取POST数据,将post过来的数据放在HashMap中以键值对的方式传递给脚本引擎。步骤3:加载表单定义配置里的保存前脚本,脚本引擎执行保存前脚本,步骤2中的数据以环境变量的方式传递给保存前脚本。步骤4:从脚本引擎获取保存前脚本执行后的环境变量集合,获取脚本变量集合中key为verify的变量值(VERIFY()宏,这个宏允许将程序代码放在布尔表达式里。这个宏通常用来检查WindowsAPI的返回值)。步骤5:检查verify变量的值,如果为TRUE转到步骤7如果为FASLE转到步骤6(True在编程语言中代表逻辑值:真,与逻辑值False“假”意义相反)。步骤6:从步骤4中获取的脚本变量集合中,获取key为msg的变量值,并将该变量值作为信息输出到用户页面,然后完成整个过程。步骤7:从步骤4中获取的脚本变量集合中,获取key为data的变量数据,该数据为键值对集合数据,从data数据中获取key为id的变量。步骤8:检查id值是否为0,是0则执行步骤9,否则执行步骤10。步骤9:将post数据插入到存储设备获取id的自增长值,将值改写到data中key为id的变量中。步骤10:修改数据,修改该id的存储记录。步骤11:加载表单定义配置里的保存后脚本,脚本引擎执行保存后脚本,将步骤4中获取的环境变量传递给保存后前脚本。步骤12:获取步骤11脚本运行后脚本环境变量集合,加载发布脚本,脚本引擎执行发布脚本,将获取的环境变量传递给发布前脚本。步骤13:获取步骤12脚本执行后脚本引擎的环境变量,获取环境变量中key为msg的值,将msg的信息输出到用户页面,整个过程完成。HashMap:基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。(除了非同步和允许使用null之外,HashMap类与Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能。迭代collection视图所需的时间与HashMap实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。四、数据访问代理模块数据代理实现了表单数据的查询和增加修改的接口,如图5、6:1.用户提交数据调用数据添加接口,用户将表单数据hashtable方式传递给代理接口,同时传递表单ID。2.代理接口根据ID加载对应的表单配置,代理接口解析表单配置,并扫描hashtable的key,根据key查找表单配置中表单的存储方式,根据存储方式的将数据存储到对应的位置。3.数据查询的方式和数据添加修改类似,根据表单配置分别从不同的存储介质查询表单数据,然后将数据合并,以hashtable的方式返回表单数据。代理的概念是:假定文件位于文件服务器上,想读、写而整个或部分地运输这些文件,支持大多数现代文件服务器的关键技术是虚拟文件存储器,这是一个抽象的文件服务器。虚拟文件存储给访问端提供一个标准化的接口和一套可执行的标准化操作。隐去了实际文件服务器的不同内部接口,使访问端只看到虚拟文件存储器的标准接口,访问和运输远地文件的应用程序,有可能不必知道各种各样不兼容的文件服务器的所有细节。具体本发明的该方式通过统一的访问接口实现数据访问,数据的存储差异有数据代理完成,屏蔽了数据存储组合位置的复杂性。1.同类系统中,大多采取单一方式的数据存储方式,只将数据存储在nosql,磁盘文件,数据库三者其中一种。2.同类系统中一般也会抽象出一个数据访问层,该访问层也可以称为数据代理层,不过该方式和我们的方式有着显著地不同。a.该方式的数据访问层是硬编码的方式,也就是说只要程序发布该访问层是固定的不会随着数据结构的变化而调整,需要重新修改程序代码,而这种方式是比较低效且危险的。b.该方式的数据存储位置也是相当单一的,对于同一个表单或者一个抽象模型对象的数据只存储在一种存储介质中。该系统需要克服的难点1.需要有一个能够描述表单的配置,该配置能够清楚的描述表单各元素的数据类型,存储方式,长度,以及校验规则2.在访问和存储表单数据过程中需要加载并解析表单描述文件,根据表单描述文件从不同的存储介质查询或修改数据。代理设置的具体实例:将html中的表单提交给数据处理Action,用html中form的Action表示html的表单这样写:表单基础配置信息:表单基础信息中描述各对应字段的存储方式,表单存储方式描述如下(只列出了便于理解的表单的存储方式信息)代理存储数据的处理方式1.接收表单数据2.根据表单id加载表单配置3.根据配置采取不同的存储方式,伪代码如下与现有技术相比,本发明的优点:本发明自定义表单系统通过数据代理模块实现数据储存结构的自定义,可以轻易实现数据的分散存储,而不增加数据查询存储的复杂度,可以很容易的解决系统的数据访问瓶颈平静问题。惟以上所述者,仅为本发明的较佳实施例而已,当不能以此限定本发明实施范围;故,凡依本发明申请专利范围及创作说明书内容所作的简单的等效变化与修饰,皆应仍属本发明专利涵盖之范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1