基于元数据驱动的动态表单方法

文档序号:6332526阅读:378来源:国知局

专利名称::基于元数据驱动的动态表单方法
技术领域
:本发明涉及一种基于元数据驱动的动态表单的实现方法,属于数据库系统应用
技术领域

背景技术
:随着信息化建设的深入,信息化系统的需求越来越复杂,用户数据的使用和展现方式需要能够满足需求的变化,需要能够由用户自定义。而现有表单技术包括以下两种1.基于水晶报表的表单开发主要原理是由水晶报表提供的可视化工具首先进行表单结构的定义,然后在此结构之上用户可以自定义该表单一些操作功能。其缺点是表单结构固定,结构的变化需要重新进行开发;表单功能固定,功能的变化也会带来新的开发工作;无法提供复杂功能的扩展,比如在表单中完成趋势图的绘制,添加多份附件等等;无法提供多样性的数据展示功能。2.基于Excel表单开发技术主要原理是在Excel中编辑表单结构,然后通过VSTO组件在Excel中添加的附属功能,来完成对表单的各种操作功能。其缺点是开发的组件需要嵌入到所有的Excel中,修改和部署很麻烦;用户必须对数据库结构非常了解;在Excel中的数据修改需要和数据库进行同步。
发明内容为了解决上述问题,本发明提出了一种基于元数据驱动的动态表单方法,它可以允许用户动态修改表单结构,而无需进行额外的表单功能修改或开发工作。本发明采用的技术方案如下一种基于元数据驱动的动态表单方法,其包括以下步骤1)对表单中的单元格进行分类,对每一种类型的单元格建立相应的表单功能集;2)通过元数据描述规则,描述单元格结构,形成元数据库;3)通过元数据引擎从元数据库中获取表单元数据信息,向表单动态地加载元数据;4)选择表单功能集,动态生成用户表单。在所述步骤1)中,对每种类型的单元格,根据其需要实现的表单功能进行归纳,形成和单元格类型对应的表单功能集。所述表单功能集和单元格类型的对应关系是通过功能集的名称与单元格类型进行关联的。在所述步骤2)中,元数据描述规则包括CellName单元格名称;Optional单元格是否为选填项,如果单元格是选填项,则在用户提交表单时不进行非空验证;Writable单元格是否为可录入项,如果单元格是不可录入项,则不允许用户在该单元格中录入数据;BeginRow单元格的开始行;BeginColumn单元格的开始列;RowSpan单元格跨行数;ColumnSpan单元格跨列数;Type单元格类型;DataTypeLen单元格允许输入字符长度;PropertyName单元格对应元数据库中的列名,如果该值为空,则说明该单元格非用户录入项。所述元数据描述规则还包括以下辅助信息Comment对单元格的描述信息;FontSize单元格字体的大小;FontColor单元格字体颜色。所述元数据库是表单中的各单元格结构的元数据信息的集合。所述步骤3)进一步细分为以下子步骤3.1)元数据引擎根据元数据库中对表单数据种类的描述信息,获取该数据种类下的所有可录入的单元格的元数据描述;3.2)元数据引擎根据元数据库中对表单结构的描述,获取所有可录入项属性;3.3)对获取的可录入项属性和单元格进行匹配,并将匹配成功的单元格数据设置到可录入项属性中;3.4)根据属性数据集,组织成有效的数据库sql语句,将用户在动态表单中填写的数据写入到数据库中。所述步骤4)进一步细分为以下子步骤4.1)通过数据种类编号构造系统数据库表,再利用数据编号查询该表对应的用户数据;4.2)元数据引擎根据元数据库中对模板数据种类的描述信息,获取该数据种类下的所有录入项的属性,录入项属性对应了动态表单界面中每一个供用户录入数据信息的单元格;4.3)将获得的数据设置到录入项属性中,设置规则是通过数据的列编号和录入属性的编号进行匹配,如果数据的列编号和录入属性列编号一致时,则将数据设置到录入项属性的数据项中;4.4)通过数据编号获取该数据所使用的表单;4.5)根据表单信息获取整个表单结构信息,主要是表单中各单元格的信息,包括单元格的类型,单元格的位置等等;4.6)将录入属性和单元格进行匹配,主要是通过录入属性的名称和单元格的名称进行匹配,将录入属性的数据项设置为对应单元格的数据,并将单元格添加到动态表单中;4.7)对于表单中的单元格,通过界面解析程序获得该单元格的位置信息,将其绘制到界面的特定位置;根据单元格的大小信息,在界面中绘制出单元格的范围;根据单元格的类型,选择具体的控件展示在上述位置和范围中;根据单元格数据,往控件中填充数据。本发明利用了元数据驱动的动态表单技术,将表单中的功能操作和结构描述进行分离,通过元数据的描述来驱动表单结构的生成和表单功能的使用。该方法能有效地提高表单系统的可扩展性。图1为本发明方法的基本原理图;图2是根据本发明向动态表单写入数据的示例过程的逻辑流程图;图3是根据本发明使用动态表单展示用户数据的示例过程的逻辑流程图;图4是IDS系统构成图;图5是业务模型、用户界面、数据库之间的关系图。具体实施例方式本发明为一种下面结合附图详细说明。本发明提供了一种基于元数据驱动的动态表单方法。请参阅图1,本发明方法的基本原理是将用户表单中相对固定的功能操作,比如表单提交、表单查询等,采用程序的行为控制流来封装;而表单结构、表单中各数据录入方式等和不同的功能操作存在不同关联关系的,则采用元数据进行描述。这样向用户提供的表单服务的功能逻辑就可以被元数据来表达和控制。这就将表单功能模块中相对稳定的部分和可变部分进行了明确分开,对表单结构等可变部分采用元数据来描述,提高了表单结构的可操纵性。该方法包括以下步骤1.对表单中的单元格进行分类,对每一种类型的单元格建立相应的表单功能集。表单是单元格的集合,对表单内部操作的功能集就是对一系列单元格操作的功能的集合。将表单中的单元格进行分类,其类型包括标题单元格和数据录入单元格。标题单元格仅用于展示或指示作用,在用户使用表单时不需要对其进行任何操作。数据录入单元格的种类包括文本输入框类型、下拉列表类型、图像类型等等,其类型还可以根据用户要求进行扩展。根据每种类型的单元格,对其需要实现的表单功能进行归纳,形成和单元格类型对应的表单功能集。该对应关系主要是通过功能集的名称与单元格类型进行关联的。比如文本类型(Text)的单元格,对应的功能集为(TextCellFimction),该功能集实现了对文本单元格的数据保存、展现以及验证等处理方法。对每一种类型的单元格建立相应的功能集,该功能集一般包括数据添加、数据读取、数据格式验证等功能。对于每一种单元格类型,将用户对该类单元格的功能集通过应用程序来实现。62.通过元数据描述规则,描述单元格结构,形成元数据库。表单中的单元格结构是单元格的平面摆放结构,以及单元格本身形状大小等信息的集合。通过系统定义的元数据描述规则,对表单中的每一个单元格的结构进行描述,形成表单结构的元数据信息。定义单元格元数据描述的主要规则如下·CellName单元格名称·Optional单元格是否为选填项,如果单元格是选填项,则在用户提交表单时不进行非空验证·Writable单元格是否为可录入项,如果单元格是不可录入项,则不允许用户在该单元格中录入数据·BeginRow单元格的开始行參BeginColumn单元格的开始列·RowSpan单元格跨行数·ColumnSpan单元格跨列数·Type单元格类型·DataTypeLen单元格允许输入字符长度·PropertyName单元格对应元数据库中的列名,如果该值为空,则说明该单元格非用户录入项另外,规则中还包括对单元格的描述信息(Comment),单元格字体的大小(FontSize),单元格字体颜色(FontColor)等等辅助信息。例如,某单元格的结构描述如下所示<CellName=〃参数关系示意图〃Optional=“True“Writable="True“BeginRow=“19"BeginColumn="1"RowSpan=“27"ColurComment="“FontSize="9"FontColor=“Black"FontAlignment="MiddleLeft“Type=“Picture“DataTypeLen=“255“PropertyInTemplate=“True“Data=〃“Format=““Cellorder=“1〃State="0〃StateComment=““/>通过单元格元数据描述规则,可知该元数据信息描述了表单中一个叫“参数关系示意图”(CellName=“参数关系示意图”)的单元格,它是可选填项(Optioanl=“True”),可录入的(Writable=“True”);单元格从第19行(BeginRow=“19”),第1列(BeginColumn=“1”)开始;该单元格的种类是图片类型(Type=“Picture,,)。上述描述信息就描述了表单中一个完整单元格的各项结构信息。若干单元格的描述信息就组合成了对完整表单结构的描述。上述元数据信息的集合就是元数据库,在实际的应用中元数据库可以采用多种存储方式。比如存储在XML文件中、存储在数据库中或者以上两者相结合的方式。3.通过元数据引擎从元数据库中获取表单元数据信息,向表单动态地加载元数据。系统建立表单元数据引擎,表单元数据引擎是用来处理元数据的系统程序,它包括表单元数据获取程序和表单元数据解析程序。其中表单元数据获取程序是数据库访问程序,通过访问元数据库中的元数据存储表,读取元数据信息;表单元数据解析程序是将获取到的元数据信息,解析成界面描述。界面描述和单元格的元数据描述基本相似,不同之处在于指定了单元格在界面展示时使用的控件,以及控件中的数据。元数据引擎从元数据库中获取对应表单中各个单元格的元数据信息,在用户界面中根据每一个单元格的位置和大小进行绘制。图2是根据本发明向动态表单写入数据的示例过程的逻辑流程图。在块502,元数据引擎根据元数据库中对表单数据种类(表单数据种类是对用户需要通过动态表单录入的数据的分类,得到的种类和用户的具体业务相关)的描述信息,获取该数据种类下的所有可录入的单元格的元数据描述(简称为可录入项属性)。它对应了动态表单界面中每一个供用户录入数据信息的单元格。当所有的可录入项属性获取完毕,处理过程转入到块503。在块503,元数据引擎根据元数据库中对表单结构的描述,获取所有可录入项属性。包括标题单元格和数据录入单元格。获取完毕后,处理过程转入到块504。在块504,将在块502获取的可录入项属性和在块503获取的单元格进行匹配,并将匹配上的单元格数据设置到可录入项属性中。匹配是按照单元格中的名称和可录入项属性名称进行的,名称一致时则认为该单元格和该可录入项属性是一对。一旦匹配完成,处理过程就转入判定块505。在判定块505处,需要做出判定所有单元格均被处理了吗?动态表单中所有的单元格都需要进行匹配。如果还有单元格没有进行匹配,过程返回块504处继续匹配。如果所有的单元格都已经处理完成,所有设置了单元格数据的可录入项属性就形成了属性数据集,处理过程将进入到块506。在块506中,根据属性数据集,组织成有效的数据库sql语句,将用户在动态表单中填写的数据写入到数据库中。写入完成后,过程转入块507,至此整个处理过程结束。4.选择表单功能集,动态生成用户表单。元数据引擎对于每一个单元格通过单元格元数据信息中关于单元格类型的描述,选择单元格具体的显示控件;并按照对应关系获取相应的功能集,将此表单功能集设置到该控件的相关事件中,当用户对单元格进行操作时,响应的事件就会调用系统对不同单元格类型实现的功能方法,从而动态地生成用户表单。图3是根据本发明使用动态表单展示用户数据的示例过程的逻辑流程图。在块602处,通过数据种类编号构造系统数据库表,再利用数据编号查询该表对应的用户数据。返回用户数据后,处理过程就转入到块603。在块603,元数据引擎根据元数据库中对模板数据种类的描述信息,获取该数据种类下的所有录入项的属性。录入项属性对应了动态表单界面中每一个供用户录入数据信息的单元格。当所有的录入项属性获取完毕,处理过程就转入到块604。在块604,将在块602中获得的数据设置到块603中获得的录入项属性中,设置规则是通过数据的列编号和录入属性的编号进行匹配,如果数据的列编号和录入属性列编号一致时,则将数据设置到录入项属性的数据项中。设置完成后,处理过程就转入到块605。在块605,通过数据编号获取该数据所使用的表单。获取展示数据的表单信息后,处理过程就转入到块606。在块606,根据表单信息获取整个表单结构信息,主要是表单中各单元格的信息,包括单元格的类型,单元格的位置等等。获取完成后,处理过程就转入到块607。8在块607,将录入属性和单元格进行匹配,主要是通过录入属性的名称和单元格的名称进行匹配的,将录入属性的数据项设置为对应单元格的数据。并将单元格添加到动态表单中。处理完成后,处理过程就转入到判断块608。在判断块608中,需要做出判定所有单元格都处理了吗?动态表单中所有录入单元格都需要进行数据设置。如果还有单元格没有设置数据,则处理过程跳回到块607继续处理。如果所有单元格都设置数据完成,则处理过程就转入到块609。在块609,将各单元格组织成动态表单对象,界面解析程序将该对象生成对应的用户界面。界面展示结束后,处理过程就转入到块610,处理过程结束。通过元数据驱动的动态表单技术有非常良好的可扩展性,只要能够通过应用程序实现的表单功能,都可以在修改相应的元数据描述信息后,扩充到表单系统当中。当系统处理新增加的表单结构时,会通过元数据引擎选择合适的表单功能进行处理。本发明已经在一个IDS(InterfaceDataSheet)系统中得到完全实施。该系统采用B/S、C/S混合架构,使用IIS作为应用服务器,Oscar数据库作为数据库服务器。我们成功的实现了用户各个业务模型,并利用这些业务模板完成了IDS系统中的数据结构和用户操作界面。整个系统结构图如图4所示。从图4中可以看出根据用户自定义的业务模型,系统根据业务模型中的样式信息生成用户界面文件存储在应用服务器上;系统根据业务模型中的结构信息在数据库服务器生成存储结构。图5反映了业务模型、用户界面、数据库之间的关系。首先,用户自定义业务模型,模型中包含样式描述信息(单元格描述、数据验证规则描述)、结构描述信息(元数据描述、数据结构描述)。利用业务模型中的元数据描述信息作为单元格描述信息的一部分,为用户操作界面与数据库建立了联系,而业务模型就是桥梁。其次,用户在浏览业务模型时,系统根据业务模型中样式描述信息生成用户界面,提供给用户进行数据操作并保存为一个数据文件。最后把数据文件传回到应用服务器,根据业务模型并经过引擎解析后,把数据信息保存到相应的数据库中。系统可以根据业务模型中的结构描述信息对已经填入的数据进行综合查询。通过本发明的应用,该系统成功实现了数据采集界面和存储结构的自动生成,自动适应了各种不同的业务,具备了良好的扩展性。与此同时,自定义业务模型对于人员没有额外的技术要求,便于系统的实施和推广。权利要求一种基于元数据驱动的动态表单方法,其特征在于包括以下步骤1)对表单中的单元格进行分类,对每一种类型的单元格建立相应的表单功能集;2)通过元数据描述规则,描述单元格结构,形成元数据库;3)通过元数据引擎从元数据库中获取表单元数据信息,向表单动态地加载元数据;4)选择表单功能集,动态生成用户表单。2.如权利要求1所述的基于元数据驱动的动态表单方法,其特征在于在所述步骤1)中,对每种类型的单元格,根据其需要实现的表单功能进行归纳,形成和单元格类型对应的表单功能集。3.如权利要求2所述的基于元数据驱动的动态表单方法,其特征在于所述表单功能集和单元格类型的对应关系是通过功能集的名称与单元格类型进行关联的。4.如权利要求1所述的基于元数据驱动的动态表单方法,其特征在于在所述步骤2)中,元数据描述规则包括CellName单元格名称;Optional单元格是否为选填项,如果单元格是选填项,则在用户提交表单时不进行非空验证;Writable单元格是否为可录入项,如果单元格是不可录入项,则不允许用户在该单元格中录入数据;BeginRow单元格的开始行;BeginColumn单元格的开始列;RowSpan单元格跨行数;ColumnSpan单元格跨列数;Type单元格类型;DataTypeLen单元格允许输入字符长度;PropertyName:单元格对应元数据库中的列名,如果该值为空,则说明该单元格非用户录入项。5.如权利要求4所述的基于元数据驱动的动态表单方法,其特征在于所述元数据描述规则还包括以下辅助信息Comment对单元格的描述信息;FontSize单元格字体的大小;FontColor单元格字体颜色。6.如权利要求1所述的基于元数据驱动的动态表单方法,其特征在于所述元数据库是表单中的各单元格结构的元数据信息的集合。7.如权利要求1所述的基于元数据驱动的动态表单方法,其特征在于所述步骤3)进一步细分为以下子步骤[3.1)元数据引擎根据元数据库中对表单数据种类的描述信息,获取该数据种类下的所有可录入的单元格的元数据描述;[3.2)元数据引擎根据元数据库中对表单结构的描述,获取所有可录入项属性;[3.3)对获取的可录入项属性和单元格进行匹配,并将匹配成功的单元格数据设置到可录入项属性中;.3.4)根据属性数据集,组织成有效的数据库sql语句,将用户在动态表单中填写的数据写入到数据库中。8.如权利要求1所述的基于元数据驱动的动态表单方法,其特征在于所述步骤4)进一步细分为以下子步骤.4.1)通过数据种类编号构造系统数据库表,再利用数据编号查询该表对应的用户数据;.4.2)元数据引擎根据元数据库中对模板数据种类的描述信息,获取该数据种类下的所有录入项的属性,录入项属性对应了动态表单界面中每一个供用户录入数据信息的单元格;.4.3)将获得的数据设置到录入项属性中,设置规则是通过数据的列编号和录入属性的编号进行匹配,如果数据的列编号和录入属性列编号一致时,则将数据设置到录入项属性的数据项中;.4.4)通过数据编号获取该数据所使用的表单;.4.5)根据表单信息获取整个表单结构信息,主要是表单中各单元格的信息,包括单元格的类型,单元格的位置等等;.4.6)将录入属性和单元格进行匹配,主要是通过录入属性的名称和单元格的名称进行匹配,将录入属性的数据项设置为对应单元格的数据,并将单元格添加到动态表单中;.4.7)对于表单中的单元格,通过界面解析程序获得该单元格的位置信息,将其绘制到界面的特定位置;根据单元格的大小信息,在界面中绘制出单元格的范围;根据单元格的类型,选择具体的控件展示在上述位置和范围中;根据单元格数据,往控件中填充数据。全文摘要本发明涉及基于元数据驱动的动态表单方法,包括以下步骤1)对表单中的单元格进行分类,对每一种类型的单元格建立相应的表单功能集;2)通过元数据描述规则,描述单元格结构,形成元数据库;3)通过元数据引擎从元数据库中获取表单元数据信息,向表单动态地加载元数据;4)选择表单功能集,动态生成用户表单。本发明将用户表单中相对固定的功能操作采用程序的行为控制流来封装;而表单结构、表单中各数据录入方式等和不同的功能操作存在不同关联关系的则采用元数据进行描述。这就将表单功能模块中相对稳定的部分和可变部分进行了明确分开,对表单结构等可变部分采用元数据来描述,提高了表单结构的可操纵性。文档编号G06F17/30GK101968800SQ20101028960公开日2011年2月9日申请日期2010年9月21日优先权日2010年9月21日发明者刘祺,刘霞,刘鹏,周永辉,李海峰,王嘉春,王德鑫,白仲陶,秦巍,蒋志勇,谢政,赵伶丰,赵飞申请人:北京空间飞行器总体设计部;天津神舟通用数据技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1