CN101308490B - 一种动态报表生成方法及平台 - Google Patents
一种动态报表生成方法及平台 Download PDFInfo
- Publication number
- CN101308490B CN101308490B CN2008101051043A CN200810105104A CN101308490B CN 101308490 B CN101308490 B CN 101308490B CN 2008101051043 A CN2008101051043 A CN 2008101051043A CN 200810105104 A CN200810105104 A CN 200810105104A CN 101308490 B CN101308490 B CN 101308490B
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- report
- template
- data item
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种动态报表生成方法及平台,用一种根据业务特征定义的数据集模型来组织数据、提取数据模型定义、基于数据集模型的数据绑定以及报表结构的变换规则配置,并通过报表生成引擎自动生成报表实例,形成一种生成报表的方法。通过数据项之间的导出关系和扩展关系来组织数据项,并在数据绑定时通过路径表达式来指定需要绑定到报表模板中的数据项属性。对报表结构在生成时可能发生的变化进行定义,并由报表生成引擎根据结构变换规则对报表结构进行调整,只需要通过添加新的结构变换规则,即可为数据增加新的展示方式,无需重新编码,提高了系统的可扩展性。从而使得用户可以根据不同数据的特征采用不同的展现方式,提高了报表的表达能力。
Description
技术领域
本发明属于数据处理领域,涉及一种报表生成方法及平台,具体涉及一种动态报表生成方法及平台。
背景技术
报表是企业应用软件系统中不可或缺的一部分。过计算机自动或辅助生成各种业务报表,可以实现业务的规范化管理,建立新的自动化业务工作流程和业务模式,极大地提高工作效率以及加速各行业的信息化进程。
在当前的报表生成领域,生成报表的技术方案可分为三类:第一类是采用硬编码的方式实现报表的生成。在该方式下,报表生成的需求还没有被独立出来,而是作为信息系统的一部分,报表生成一般是由项目人员编写代码实现的。该方式有很明显的缺点:针对每种不同的系统和应用,都需要重新编写代码;即使在同一个系统中,当需求发生变化时,为获得新的报表,也需要系统开发人员重新对报表生成系统进行设计。第二类报表生成方案是采用静态的电子表格类软件。最典型的实例如Microsoft的Excel电子表格软件。这类软件提供了丰富的格式编辑功能,但是只能通过手动填写报表数据。对于大数据量的动态报表的生成,仍需要通过其提供的报表开发组件进行二次开发。第三类报表生成方案是采用通用的报表生成工具,用于解决动态报表的生成。动态报表的特点是这类报表的数据量比较大,报表的数据经常需要变动,报表的格式无法在开发阶段完全确定。生成这类报表需要用户单独对报表的数据源和报表格式进行定义,然后在由计算机对报表进行批量的数据填充,导出最终的报表实例。该类方案中的代表是Business Object公司的水晶报表软件和国内润乾公司的润乾报表软件。
但是,当前领域内的报表生成工具仍存在很多问题。首先,传统工具在设置报表数据时直接依赖于底层的数据库模式,需要采用手动编写SQL语句或数据表辅助视图的方式来从数据库中指定数据,例如MS Access中的内置报表功能,因此增大了报表制作的难度,需要专门的数据库管理员参与。其次,部分行业对报表格式要求较为特殊,需要在生成报表时根据数据的具体特征动态生成不同的报表格式,例如,针对不同类型的记录,表格的每行都具有不同数量的列。传统工具如水晶报表和润乾报表没有考虑这种报表结构需要动态调整的情况,需要开发人员专门编码实现。
发明内容
本发明提供了一种动态报表生成方法及平台,用一种根据业务特征定义的数据集模型来组织数据、基于数据集模型的数据绑定以及报表结构的变换规则配置,并通过报表生成引擎自动生成报表实例,形成一种生成报表的方法。利用本发明提供的动态报表生成方法及平台,使得用户可以根据不同数据的特征采用不同的展现方式,使用者无需专业的计算机知识即可方便地根据业务需要定制和生成报表,并且提高了工作效率,加强了报表的表达能力和系统的可扩展性。
本发明一种动态报表生成方法,包括以下步骤:
步骤1:针对业务活动中的每种在生成报表时需要用到的业务实体类型,在数据集模型设计模块的数据项类型定义单元中定义一种数据项类型和该数据项类型的属性;并在数据项关系定义单元中基于对应的数据项类型之间的关联定义导出关系与扩展关系;
步骤2:正确性验证单元对由数据项类型及其相互关系组成的数据集模型进行正确性验证,如果验证通过的话,则生成数据集模型文件,转到步骤3,反之转到步骤1,重新定义数据项和它们之间的关系;
步骤3:通过报表模版编辑模块的模板结构编辑单元对模板中的静态数据内容进行布局排版和格式编辑;对模板中需要进行动态填充数据的部分,数据绑定设置单元解析数据集模型文件生成数据绑定项,以路径表达式的形式为模板绑定数据,生成报表模板文件;
步骤4:结构变换配置单元对模板结构的格式变换规则进行配置,并生成结构变换配置文件;
步骤5:模板预览单元通过将目标数据填充到报表模板文件后,在结构变换配置文件的作用下预览模板填充数据后的显示效果,如果满足格式要求则转到步骤6进行报表生成,否则转到步骤3重新编辑、绑定模板
步骤6:将需要生成报表的目标数据组织为符合数据集模型文件的数据集;模板解析单元调用表达式解析单元对报表模板文件进行解析,得到模板运行时结构后由表单生成单元生成表单页骨架;在表达式解析单元作用下将数据集中的数据填充到表单页骨架中,生成报表实例;
步骤7:表单生成单元调用结构变换单元根据结构变换配置文件中的结构变换规则动态调整报表结构;处理完毕后,将报表实例输出为报表实例文件。
所述步骤3中,数据集模型文件解析后生成的每个数据绑定项都是一个数据项类型。所有数据项类型通过相互之间的导出关系组织为一个可视化的树状结构,该树状结构以数据集模型中的某一数据项类型为根,并以由该数据项类型导出的其他数据项类型为中间节点和叶子节点。
所述步骤3中,路径表达式根据被选中的数据绑定项在树状结构中的位置动态生成,根据路径表达式对数据集模型中的一个数据项类型进行指定。
所述步骤4中,格式变换规则包括变换条件、变换目标和变换方式。变换条件是一个包含算术运算与布尔运算的数学表达式,并可以包含路径表达式作为其中的变量。变换方式是指对变换目标进行外观变换或动态合并、替换。
所述步骤6中,表达式解析单元对表达式进行解析的过程是建立在符合数据集模型的数据集基础之上,并以Java反射调用接口实现。表达式解析单元对反射调用进行了缓冲,避免了多次重复的反射调用,提高了解析的效率。
一种动态报表生成平台,包括如下模块:
数据集模型设计模块包括数据项类型定义单元、数据项关系定义单元和正确性验证单元;其中:
上述数据项类型定义单元,针对业务活动中的每种在生成报表时需要用到的业务实体类型,用于定义一种数据项类型和该数据项类型的属性;
上述数据项关系定义单元,基于对应的数据项类型之间的关联用于定义导出关系与扩展关系;
上述正确性验证单元,用于对由数据项类型及其相互关系组成的数据集模型进行正确性验证,如果验证通过的话,则生成数据集模型文件;反之重新定义数据项和它们之间的关系;
报表模版编辑模块包括模板结构编辑单元、数据绑定设置单元、结构变换配置单元和模板预览单元;其中:
上述模板结构编辑单元,用于对模板中的静态数据内容进行布局排版和格式编辑;
上述数据绑定设置单元,用于对模板中需要进行动态填充数据的部分,解析数据集模型文件生成数据绑定项,以路径表达式的形式为模板绑定数据,生成报表模板文件;
上述结构变换配置单元,用于对模板结构的变换规则进行配置,并生成结构变换配置文件;
上述模板预览单元,通过将目标数据填充到报表模板文件后,用于在结构变换配置文件的作用下预览模板填充数据后的显示效果,如果满足格式要求则进行报表生成,否则重新编辑绑定模板;
报表生成引擎包括数据映射单元、模板解析单元、表单生成单元、表达式解析单元和结构变换单元;其中:
上述数据映射单元,用于将需要生成报表的目标数据组织为符合数据集模型文件的数据集;
上述模板解析单元,用于调用表达式解析单元对报表模板文件进行解析,得到模板运行时结构;
上述表单生成单元,用于生成单元生成表单页骨架,并调用表达试解析单元对表单页骨架进行数据填充;
上述表达式解析单元,用于根据路径表达试从数据集中提取数据,并记录各表达试对应的数据项;
上述结构变换单元,被表单生成单元调用,用于根据结构变换配置文件中的结构变换规则动态调整报表结构;处理完毕后,将报表实例输出为报表实例文件。
所述数据绑定设置单元将数据集模型文件解析后,生成的每个数据绑定项都是一个数据项类型。所有数据项类型通过相互之间的导出关系组织为一个可视化的树状结构,该树状结构以数据集模型中的某一数据项类型为根,并以由该数据项类型导出的其他数据项类型为中间节点和叶子节点。
所述数据绑定设置单元解析得到的路径表达式根据被选中的数据绑定项在树状结构中的位置动态生成,根据路径表达式对数据集模型中的一个数据项类型进行指定。
所述结构变换配置单元应用的格式变换规则包括变换条件、变换目标和变换方式。变换条件是一个包含算术运算与布尔运算的数学表达式,并可以包含路径表达式作为其中的变量。变换方式是指对变换目标进行外观变换或动态合并、替换。
所述表达式解析单元对表达式进行解析的过程是建立在符合数据集模型的数据集基础之上的,并以Java反射调用接口实现的。表达式解析单元对反射调用进行了缓冲,避免了多次重复的反射调用,提高了解析的效率。
本发明的效果在于:采用本发明所述的动态报表生成方法及平台,使得使用者可以方便快速地制作和生成各种业务报表,降低了报表制作的难度,提高了工作效率,并具有以下显著优点:
1.通过一种根据业务特征定义的数据集模型来组织数据、提取数据,避免了使用者在为报表指定数据时手动编写SQL,具有更强的业务语义,从而降低了对使用者的计算机专业知识的要求;
2.当数据源涉及多个业务实体时,通过数据项之间的导出关系和扩展关系来组织数据项,并在数据绑定时通过路径表达式来指定需要绑定到报表模板中的数据项属性,从而避免了通过数据库外键关联、连接查询的方式来获取数据,进一步降低了报表生成过程对底层数据库模式的依赖性;
3.通过配置报表结构变换规则,对报表结构在生成时可能发生的变化进行定义,并由报表生成引擎根据这些规则对报表结构进行调整,从而使得用户可以根据不同数据的特征采用不同的展现方式,提高了报表的表达能力。只需要通过添加新的结构变换规则,即可为数据增加新的展示方式,无需重新编码,提高了系统的可扩展性。
附图说明
图1是本发明一种动态报表生成方法总体流程图;
图2是本发明一种动态报表生成平台实施系统结构图;
图3是本发明一种动态报表生成方法的所述实施例的业务实体关系图;
图4是本发明一种动态报表生成方法根据实施例业务特征定义的数据集模型结构图;
图5是本发明一种动态报表生成方法的所述实施例设计的报表模板;
图6是本发明一种动态报表生成方法的所述数据绑定项列表的树形结构;
图7是本发明一种动态报表生成方法的所述实施例绑定数据后的报表模板。
具体实施方式
下面结合具体的实施例对本发明一种动态报表生成方法及平台进行描述。
首先对本发明提供的报表生成平台的实施方式进行说明。如图2所示,本发明的动态报表生成平台通过三个核心模块进行实施:数据集模型设计模块,报表结构编辑模块和报表生成引擎。
数据集模型设计模块负责辅助使用者完成对数据集模型的定义和验证,该模块主要分为数据项类型定义单元、数据项关系定义单元和正确性验证单元。该模块主要采用了XMLSchema技术。数据项类型定义单元负责根据业务活动中的业务实体定义数据项类型,并定义业务实体中的属性。每个数据项类型对应XML Schema中的一个ComplexType,而数据项类型的属性则对应ComplexType中的Attribute属性定义。数据项关系定义单元负责根据各业务实体之间的业务关联定义数据项类型之间的关系,包括导出关系和扩展关系。导出关系和扩展关系都是二元关系,并包含多重性定义,即两个数据项之间的关系是一对一或是一对多。一对一的导出关系由maxOccures值为1的sequence标签定义,一对多的导出关系由maxOccures值为unbounded的sequence标签定义,扩展关系则通过ComplexType中的extension标签进行定义。定义好的数据项类型与数据项关系被输入到正确性验证单元。正确性验证单元对数据集模型的结构是否正确、属性名是否合法、是否存在未被定义类型的属性、是否存在扩展关系的闭环进行验证。验证通过后,生成数据集模型文件,该文件将作为输入传递给报表模板编辑模块中的数据绑定设置单元和报表生成引擎中的数据映射单元。
报表模板编辑模块由模板结构编辑单元、结构变换配置单元、数据绑定设置单元以及模板预览单元构成。模板结构编辑单元通过Eclipse GEF框架实现,用于以可视化地设计报表模板,提供布局排版功能和格式编辑功能。通过该单元可完成对模板静态内容的定制,如报表表头描述、各行各列的长宽和式样。然后,将包含静态内容的模板输入到数据绑定设置单元;数据绑定设置单元负责对输入的数据集模型文件进行解析,根据数据集模型中的数据项类型与数据项关系生成绑定项,使用者选择需要的绑定项绑定到模板的各个部分。绑定项通过路径表达式的形式绑定到模板中。数据绑定设置结束后,系统将模板保存为报表模板文件。报表模板文件采用了XML元数据交换(XMI)的格式进行保存。结构变换配置单元针对报表在生成时需要根据数据特征动态调整报表结构的情况,对模板结构的变换规则进行配置。变换规则包括变换条件、变换目标和变换方式。变换目标是执行格式变换的条件,当该条件为真时,执行指定的格式变换;变换目标是变换所针对的报表结构对象,这些对象一般是需动态填充数据的表格区域的一行中的若干列所对应的单元格集合;变换方式则是指如何进行格式变化,通过对所指变换目标进行外观变换或动态合并、替换来进行定义。通过对结构变换配置单元的操作,生成结构变换配置文件。报表模板文件和结构变换配置文件可以被输入到模板预览单元中,并结合选定的目标数据,生成报表模板在填充数据后的预览效果,帮助使用者验证所设计的模板是否符合使用要求。同时结构变换配置文件也输入到报表生成引擎中的结构变换单元中参与结构变换过程。
报表生成引擎负责根据之前生成的数据集模型文件、报表模板文件、结构变换配置文件,结合目标数据生成报表实例。报表生成引擎由数据映射单元、表达式解析单元、数据集、模板解析单元、结构变换单元和表单生成单元组成。数据映射单元以数据集模型文件和目标数据为输入,通过Java提供的JDBC数据库编程接口将目标数据组织为符合本发明之数据集模型的数据集,并将结果输入到数据集中以备数据提取之用。数据集是数据集模型的实例,包含若干数据项;数据项是数据集模型中数据项类型的实例,通过标准的Java Bean组件实现。数据集模型中的导出关系通过Java Bean对象的get方法表示,扩展关系通过Java Bean对象之间的继承关系表示。表达式解析单元采用了Java反射技术,负责根据路径表达式从数据集中提取数据,并记录各表达式所对应的数据项,为模板解析单元、表单生成单元和结构变换单元提供数据提取服务。由于Java反射调用会耗用较多的系统时间,表达式解析单元为了提高解析的效率,采用了缓冲的思想,将解析过的路径表达式的中间结果进行保存,在下次解析的过程中可以对该中间结果进行直接的套用,避免了重复的反射调用。模板解析单元负责对使用者在报表模板编辑模块中设计的报表模板文件进行解析,模板解析的过程需调用表达式解析单元对模板中包含的表达式进行解析,并记录各表达式对应的值,生成模板运行时结构输入到表单生成单元。模板运行时结构通过Apache POI组件中的usermodel进行表示。表单生成单元负责根据模板运行时结构生成表单骨架,将表单页骨架中的路径表达式输入给表达式解析单元,由表达式解析单元提取数据,然后表单生成单元再根据返回的数据对表单骨架进行数据填充。结构变换单元读取报表模板编辑模块中的结构变换配置文件,获取该文件中所包含的结构变换规则,通过调用表达式解析单元对变换规则中变换条件所包含的路径表达式进行解析,结构变换单元再根据变换规则中的变换方式对报表进行动态的格式调整与变换。结构变换单元在表单生成单元每填写一条表格数据后被表单生成单元调用,通过读取变换规则,对当前的表格行的结构进行处理。最后,报表生成引擎将报表实例输出到指定的系统路径,生成报表实例文件。
下面结合一个具体的实施例对本发明的报表生成方法进行描述。
在一个网上交易系统中,存在如下的业务实体:订单、订单项、客户、雇员、产品。这些业务实体用实体关系图表示如图3所示,分别包含以下属性:
订单 | 雇员 | 产品 | 订单项 | 客户 |
订单编号:ID金额:money日期:date | 雇员编号:ID姓名:name职位:position入职日期:reportDate | 产品编号:ID产品名称:name产品颜色:color产品规格:specification产品说明:description | 订单项编号:ID单价:price数量:quantity | 客户编号:ID名称:name国家:country地区:region城市:city邮政编码:post |
通过本发明的报表生成方法生成订单清单报表包括以下步骤,如图1所示:
步骤一:定义数据项类型和数据项类型之间的导出关系与扩展关系。
首先根据该系统的业务特征,通过数据集模型设计模块为报表定义数据集模型。在数据项类型定义单元中针对以上的5种业务实体,定义5种对应的数据项类型,根据各种业务实体的属性为各数据项类型添加属性定义。另外,由于本实施例的报表需要展示的是订单清单信息,因此将“订单”数据项类型定义为数据集模型的根,即由该数据项类型来导出其他的数据项类型。
针对业务实体之间的依赖与包含关联,由数据项关系定义单元在数据项类型之间定义导出关系。例如,订单包含多个订单项,订单项依赖于订单,于是在订单和订单项之间定义导出关系。对于每次导出一个数据项的情况,将导出关系的多重性定义为1;对于导出多个的情况,将多重性定义为n。例如,一个订单可包含多个订单项,因此将订单与订单项之间导出关系的多重性定义为n。特别的,在“订单——订单项”、“订单——客户”之间加入了双向的导出关系,便于进行双向的数据存取。在此基础上,考虑系统中的客户分为普通客户和重要客户两类,且需要保存重要客户的信用度信息。经过分析可知,重要客户是普通客户的一个特例,因此在数据集模型中加入了一个“重要客户”数据项类型,对“客户”数据项类型进行了扩展。定义好的数据集模型如图4所示。
步骤二:验证数据集模型的正确性。
将步骤一中定义的数据项类型与数据项关系输入到数据集模型设计模块的正确性验证单元中,对数据集模型的结构是否正确、属性名是否合法、是否存在未被定义的类型属性、是否存在扩展关系的闭环进行验证。如果通过验证,则将以上定义内容保存为数据集模型文件,输入到报表生成引擎的数据映射单元和报表模板编辑模块的数据绑定设置单元中。否则,转到步骤一,由数据项类型定义单元和数据项关系定义单元分别重新定义数据项和它们之间的关系。
步骤三:设计报表模板布局与内容,并根据数据集模型为模板绑定数据。
定义完数据集模型文件后,在报表模板编辑模块中开始进行报表模板的设计。使用者通过模板结构编辑单元新建模板,并通过模板结构编辑单元提供的布局排版功能和格式编辑功能,对模板的整体布局和内容进行组织。对模板中的静态的内容,如表头、各种描述性字段,手动填写单元格的内容,设置单元格的式样,制作出一份待绑定数据的模板。对于本实施例,设置好静态内容的模板如图5所示。报表的首部添加了清单标题、订单金额、订单日期、客户以及业务员的字段描述信息,并制作了一个用于显示订单详细信息的表格,包括订单号、产品名称、单价、数量、颜色以及规格列,其中订单号列进行了纵向的合并。
对模板中需要进行动态填充数据的部分,使用者通过数据绑定设置单元解析步骤二中生成的数据集模型文件,生成可供选择的数据绑定项列表。该数据绑定项列表以树形结构的方式组织,如图6所示。其中该树形结构的根是由本实施例的数据集模型的根数据项类型,即“订单”数据项类型来充当,第一层树节点由“订单”数据项类型的属性以及由其导出的其他数据项类型,如订单项、客户、雇员组成,以此类推。使用者在列表中选择合适的绑定项,将数据绑定到模板对应的单元格中。根据数据集模型,数据绑定设置单元自动将使用者选择的绑定项生成路径表达式,并将路径表达式设置到目标单元格中。根据本实施例的数据集模型,各绑定项对应的路径表达式如下:
绑定目标 | 路径表达式 | 绑定目标 | 路径表达式 |
订单金额 | ${order.money} | 订单日期 | ${order.date} |
客户名称 | ${order.customer.name} | 业务员姓名 | ${order.employee.name} |
订单号 | ${order.ID} | 产品名称 | ${order.orderItem.product.name} |
单价 | ${order.orderItem.price} | 数量 | ${order.orderItem.quantity} |
颜色 | ${order.orderItem.product.color} | 规格 | ${order.orderItem.product.specification} |
产品描述 | ${order.orderItem.product.description} | 产品类型 | ${order.orderItem.product.type} |
例如上表中的“单价”字段,其相应路径为:订单-订单项-单价,则相应的路径表达式为${order.orderItem.price}。数据绑定完成后,报表模板编辑模块将模板的内容保存为报表模板文件。
步骤四:配置模板结构变换规则。
数据绑定完成之后,通过结构变换配置单元对报表结构的变换规则进行配置。每个变换规则都包含变换条件、变换目标与变换方式。例如,设本实施例中对订单报表有如下格式要求:
1)对于所有单价在5000元以上的订单项,将产品名称标注为红色;
2)对所有电子类产品,用产品描述代替产品颜色列与规格列。
对应的变换规则如下:
在上表变换规则1中,对于满足变换条件${order.orderItem.product.price}>5000,即订单项所对应的产品单价大于5000元的数据项,将其产品名称${order.orderItem.product.name}对应的颜色更改为红色。由变换规则2,对于满足变换条件${order.orderItem.product.type}=‘电子类’,即产品类型为电子类的数据项,将其产品颜色${order.orderItem.product.color}、产品规格${order.orderItem.product.specification}所对应的表格列合并为一个表格列,并将其绑定内容替换为${order.orderItem.product.description},即产品描述。
格式变换规则使得报表生成引擎能够根据实际数据特征,在原有模板基础上进行动态的格式调整。每种变换规则都对应一中变换报表结构的方式。配置完成后,结构变换配置单元根据使用者配置的内容生成结构变换配置文件。
步骤五:预览模板填充数据后的效果。
完成上述步骤后,使用者可以通过模板预览单元预览模板填充数据后的显示效果,生成预览的过程需要以步骤三中生成的报表模板文件与步骤四生成的结构变换配置文件为输入,并读取用于填充模板的目标数据,来生成预览。使用者根据预览效果判断模板是否符合使用要求。如果不符合要求,则回到步骤三重新调整模板结构;如果符合要求,则进入下一步。
在经过以上步骤后,报表的数据集模型文件和报表模板文件已经定义完成。在此之后,使用者通过报表生成引擎生成报表实例文件。通过报表生成引擎生成报表实例文件包括如下步骤:
步骤六:目标数据映射后进行报表模板解析,然后将解析后的数据填充到表单页骨架中生成报表实例。
使用者首先指定选择需要生成报表的目标数据(对于本实施例,即需要生成报表的订单或订单集合),并指定需要使用的报表模板。使用者的选择被作为输入传递给报表生成引擎。报表生成引擎根据传入的目标数据,调用数据映射单元,将数据库中的目标数据组织为符合数据集模型(对于本实施例,即如图4所示的网上交易系统数据集模型)的数据集,以备之后表达式解析单元提取数据时使用。
模板解析单元对步骤三中生成的报表模板文件(对与本实施例,即如图5所示的模板)进行解析,生成模板运行时结构。本过程中,模板解析单元会调用表达式解析单元来解析报表模板文件中的表达式。
模板运行时结构被传递给表单生成单元,生成表单页骨架,然后表单生成单元调用表达式解析单元,从生成的数据集中提取数据,填充到表单页骨架中,生成报表实例。
步骤七:结构变换单元在结构变换配置文件作用下进行结构变换,对报表进行结构调整。
表单生成单元调用结构变换单元,结构变换单元根据步骤四中生成的结构变换配置文件中的结构变换规则,调用表达式解析单元解析变换规则中变换条件所包含的路径表达式,根据变换方式完成报表格式的动态调整。
上述过程完成后,报表生成引擎将报表实例输出到文件系统中,生成报表实例文件,如图7所示。由图7可知,报表生成引擎对所有电子类产品的颜色列和规格列进行了合并,用于显示描述信息;对于单价超过5000“ST-960无线彩色触摸屏”,采用红色字体对产品名称进行了显示。
Claims (10)
1.一种动态报表生成方法,其特征在于,包括以下步骤:
步骤一:针对业务活动中的每种在生成报表时需要用到的业务实体类型,在数据集模型设计模块的数据项类型定义单元中定义一种数据项类型和该数据项类型的属性;并在数据项关系定义单元中基于对应的数据项类型之间的关联定义导出关系与扩展关系;
步骤二:正确性验证单元对由数据项类型及其相互关系组成的数据集模型进行正确性验证,如果验证通过的话,则生成数据集模型文件,转到步骤三,反之转到步骤一,重新定义数据项和它们之间的关系;
步骤三:通过报表模版编辑模块的模板结构编辑单元对模板中的静态数据内容进行布局排版和格式编辑;对模板中需要进行动态填充数据的部分,数据绑定设置单元解析数据集模型文件生成数据绑定项,以路径表达式的形式为模板绑定数据,生成报表模板文件;
步骤四:结构变换配置单元对模板结构的格式变换规则进行配置,并生成结构变换配置文件;
步骤五:模板预览单元通过将目标数据填充到报表模板文件后,在结构变换配置文件的作用下预览模板填充数据后的显示效果,如果满足格式要求则转到步骤六进行报表生成,否则转到步骤三重新编辑、绑定模板;
步骤六:将需要生成报表的目标数据组织为符合数据集模型文件的数据集;模板解析单元调用表达式解析单元对报表模板文件进行解析,得到模板运行时结构后由表单生成单元生成表单页骨架;在表达式解析单元作用下将数据集中的数据填充到表单页骨架中,生成报表实例;
步骤七:表单生成单元调用结构变换单元根据结构变换配置文件中的结构变换规则动态调整报表结构;处理完毕后,将报表实例输出为报表实例文件。
2.根据权利要求1所述一种动态报表生成方法,其特征在于:所述步骤三中,数据集模型文件解析后生成的每个数据绑定项都是一个数据项类型;所有数据项类型通过相互之间的导出关系组织为一个可视化的树状结构,该树状结构以数据集模型中的某一数据项类型为根,并以由该数据项类型导出的其他数据项类型为中间节点和叶子节点。
3.根据权利要求1所述一种动态报表生成方法,其特征在于:所述步骤三中,路径表达式根据被选中的数据绑定项在树状结构中的位置动态生成,根据路径表达式对数据集模型中的一个数据项类型进行指定。
4.根据权利要求1所述一种动态报表生成方法,其特征在于:所述步骤四中,格式变换规则包括变换条件、变换目标和变换方式;变换条件是一个包含算术运算与布尔运算的数学表达式,并可以包含路径表达式作为其中的变量;变换方式是指对变换目标进行外观变换或动态合并、替换。
5.根据权利要求1所述一种动态报表生成方法,其特征在于:所述步骤六中,表达式解析单元对表达式进行解析的过程是建立在符合数据集模型的数据集基础之上,并以Java反射调用接口实现;表达式解析单元对反射调用进行了缓冲。
6.一种动态报表生成平台,其特征在于,包括如下模块:
数据集模型设计模块包括数据项类型定义单元、数据项关系定义单元和正确性验证单元;其中:
上述数据项类型定义单元,针对业务活动中的每种在生成报表时需要用到的业务实体类型,用于定义一种数据项类型和该数据项类型的属性;
上述数据项关系定义单元,基于对应的数据项类型之间的关联用于定义导出关系与扩展关系;
上述正确性验证单元,用于对由数据项类型及其相互关系组成的数据集模型进行正确性验证,如果验证通过的话,则生成数据集模型文件;反之重新定义数据项和它们之间的关系;
报表模版编辑模块包括模板结构编辑单元、数据绑定设置单元、结构变换配置单元和模板预览单元;其中:
上述模板结构编辑单元,用于对模板中的静态数据内容进行布局排版和格式编辑;
上述数据绑定设置单元,用于对模板中需要进行动态填充数据的部分,解析数据集模型文件生成数据绑定项,以路径表达式的形式为模板绑定数据,生成报表模板文件;
上述结构变换配置单元,用于对模板结构的格式变换规则进行配置,并生成结构变换配置文件;
上述模板预览单元,通过将目标数据填充到报表模板文件后,用于在结构变换配置文件的作用下预览模板填充数据后的显示效果,如果满足格式要求则进行报表生成,否则重新编辑绑定模板;
报表生成引擎包括数据映射单元、模板解析单元、表单生成单元、表达式解析单元和结构变换单元;其中:
上述数据映射单元,用于将需要生成报表的目标数据组织为符合数据集模型文件的数据集;
上述模板解析单元,用于调用表达式解析单元对报表模板文件进行解析,得到模板运行时结构;
上述表单生成单元,用于生成单元生成表单页骨架,并调用表达试解析单元对表单页骨架进行数据填充;
上述表达式解析单元,用于根据路径表达试从数据集中提取数据,并记录各表达试对应的数据项;
上述结构变换单元,被表单生成单元调用,用于根据结构变换配置文件中的结构变换规则动态调整报表结构;处理完毕后,将报表实例输出为报表实例文件。
7.根据权利要求6所述的一种动态报表生成平台,其特征在于:所述数据绑定设置单元将数据集模型文件解析后,生成的每个数据绑定项都是一个数据项类型;所有数据项类型通过相互之间的导出关系组织为一个可视化的树状结构,该树状结构以数据集模型中的某一数据项类型为根,并以由该数据项类型导出的其他数据项类型为中间节点和叶子节点。
8.根据权利要求6所述的一种动态报表生成平台,其特征在于:所述数据绑定设置单元解析得到的路径表达式根据被选中的数据绑定项在树状结构中的位置动态生成,根据路径表达式对数据集模型中的一个数据项类型进行指定。
9.根据权利要求6所述的一种动态报表生成平台,其特征在于:所述结构变换配置单元应用的格式变换规则包括变换条件、变换目标和变换方式;变换条件是一个包含算术运算与布尔运算的数学表达式,并可以包含路径表达式作为其中的变量;变换方式是指对变换目标进行外观变换或动态合并、替换。
10.根据权利要求6所述的一种动态报表生成平台,其特征在于:所述表达式解析单元对表达式进行解析的过程是建立在符合数据集模型的数据集基础之上的,并以Java反射调用接口实现的;表达式解析单元对反射调用进行了缓冲。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101051043A CN101308490B (zh) | 2008-04-28 | 2008-04-28 | 一种动态报表生成方法及平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101051043A CN101308490B (zh) | 2008-04-28 | 2008-04-28 | 一种动态报表生成方法及平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101308490A CN101308490A (zh) | 2008-11-19 |
CN101308490B true CN101308490B (zh) | 2010-06-09 |
Family
ID=40124950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101051043A Expired - Fee Related CN101308490B (zh) | 2008-04-28 | 2008-04-28 | 一种动态报表生成方法及平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101308490B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649416A (zh) * | 2015-11-07 | 2017-05-10 | 上海海典软件股份有限公司 | 一种用于药店动态报表的数据分析方法 |
CN107329942A (zh) * | 2017-06-28 | 2017-11-07 | 深圳市康必达中创科技有限公司 | 基于树形结构的报表生成方法及装置 |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599067B (zh) * | 2009-06-02 | 2010-12-29 | 广东金宇恒科技有限公司 | 一种用户自定制报表的方法 |
CN101615188B (zh) * | 2009-07-22 | 2011-04-06 | 山东中创软件工程股份有限公司 | 一种多源数据引入数据模板的方法和装置 |
CN101673276B (zh) * | 2009-09-22 | 2011-08-17 | 山东中创软件工程股份有限公司 | 一种数据模板的动态生成方法和装置 |
CN101706720B (zh) * | 2009-11-23 | 2013-07-24 | 浪潮集团山东通用软件有限公司 | 一种运行时根据用户自定义信息进行界面展示方法 |
US8825649B2 (en) * | 2010-07-21 | 2014-09-02 | Microsoft Corporation | Smart defaults for data visualizations |
CN101944162A (zh) * | 2010-09-02 | 2011-01-12 | 江苏大学 | 一种基于xml文档的电子病历模板系统及电子病历模板制作方法 |
CN102411570A (zh) * | 2010-09-20 | 2012-04-11 | 上海众融信息技术有限公司 | 用于证券分析师系统的报告生成信息处理方法及装置 |
CN102411561A (zh) * | 2010-09-21 | 2012-04-11 | 上海众融信息技术有限公司 | 一种金融服务报告的动态生成与预览信息处理方法 |
CN102479072B (zh) * | 2010-11-23 | 2014-07-09 | 金蝶软件(中国)有限公司 | 一种多表头报表的生成方法、装置及终端 |
CN102004787A (zh) * | 2010-12-07 | 2011-04-06 | 江西省电力公司信息通信中心 | 基于办公软件插件的多应用场景表单合并的方法 |
CN102810094A (zh) * | 2011-05-31 | 2012-12-05 | 中兴通讯股份有限公司 | 报表生成方法及装置 |
CN102842065A (zh) * | 2012-07-23 | 2012-12-26 | 国电南京自动化股份有限公司 | 一种基于指标建模的指标数据填报方法 |
CN103020158B (zh) * | 2012-11-26 | 2016-09-07 | 中兴通讯股份有限公司 | 一种报表创建方法、装置和系统 |
CN103384239B (zh) * | 2012-12-19 | 2017-02-08 | 航天数联信息技术(深圳)有限公司 | 一种报表生成方法和系统 |
CN103197925A (zh) * | 2013-02-25 | 2013-07-10 | 用友软件股份有限公司 | 单据展现装置和单据展现方法 |
US10997556B2 (en) | 2013-04-08 | 2021-05-04 | Oracle International Corporation | Summarizing tabular data across multiple projects using user-defined attributes |
CN104239017B (zh) * | 2013-06-19 | 2018-09-14 | 深圳联友科技有限公司 | 一种配置及调用自定义表单的规则的方法和系统 |
CN103345484B (zh) * | 2013-06-21 | 2016-06-22 | 中国工商银行股份有限公司 | 基于动态域的报表处理系统及方法 |
CN104252463B (zh) * | 2013-06-26 | 2018-09-04 | 中国银联股份有限公司 | 一种基于web系统的db2数据库管理方法 |
CN104572032A (zh) * | 2013-10-09 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种报表创建方法和电子设备 |
CN104679793A (zh) * | 2013-12-03 | 2015-06-03 | 航天信息股份有限公司 | 一种基于动态发票模板的发票开具系统 |
CN103714129B (zh) * | 2013-12-12 | 2016-09-14 | 用友网络科技股份有限公司 | 基于条件规则的动态数据结构和关系的构建装置和构建方法 |
CN103793464A (zh) * | 2013-12-19 | 2014-05-14 | 国家电网公司 | 一种基于中立格式的报表导出方法 |
CN103744654A (zh) * | 2013-12-20 | 2014-04-23 | 中电长城网际系统应用有限公司 | 基于分级分类的信息防泄漏模板的生成方法和装置 |
CN103646100A (zh) * | 2013-12-20 | 2014-03-19 | 北京中电普华信息技术有限公司 | 报表数据组织模型 |
CN104750714A (zh) * | 2013-12-30 | 2015-07-01 | 中国银联股份有限公司 | 文件生成系统及方法 |
CN104036040B (zh) * | 2014-06-30 | 2017-11-03 | 北京猎豹移动科技有限公司 | 报表生成方法及装置 |
CN105320690B (zh) * | 2014-07-30 | 2018-09-25 | 北京中海纪元数字技术发展股份有限公司 | 一种基于元数据的统计表单快速生成方法及系统 |
CN105468345B (zh) * | 2014-08-27 | 2023-06-20 | 厦门雅迅网络股份有限公司 | 一种在快消系统中实现远程改变手机端拜访作业的方法 |
CN104317601B (zh) * | 2014-10-31 | 2017-10-17 | 北京思特奇信息技术股份有限公司 | 一种文件接口开发方法及系统 |
CN105808228A (zh) * | 2014-12-31 | 2016-07-27 | 青岛中科软件股份有限公司 | 动态配置报表的生成方法 |
CN104615435A (zh) * | 2015-02-11 | 2015-05-13 | 浪潮通用软件有限公司 | 一种实现数据向导的方法和装置 |
CN106933889B (zh) * | 2015-12-31 | 2020-07-14 | 华为技术有限公司 | 用于筛选的规则的配置方法、显示方法和客户端 |
CN105740219A (zh) * | 2016-01-29 | 2016-07-06 | 浪潮软件集团有限公司 | 一种报表的自定义方法及装置 |
CN107220256A (zh) * | 2016-03-22 | 2017-09-29 | 中电科海洋信息技术研究院有限公司 | web前端展示文件的自动生成方法 |
CN105843575A (zh) * | 2016-03-23 | 2016-08-10 | 百度在线网络技术(北京)有限公司 | 信息显示方法、装置及系统 |
CN105893634A (zh) * | 2016-06-17 | 2016-08-24 | 中国银行股份有限公司 | 一种报表生成方法及装置 |
CN106227575B (zh) * | 2016-07-26 | 2019-05-07 | 浪潮通用软件有限公司 | 一种生成与解析文本文件的方法 |
CN106484825B (zh) * | 2016-09-28 | 2019-12-13 | 东软集团股份有限公司 | 一种数据处理方法及装置 |
CN107992458B (zh) * | 2016-10-26 | 2021-03-26 | 腾讯科技(北京)有限公司 | 表格规则的生成方法和装置、存储介质以及电子设备 |
CN106407171B (zh) * | 2016-11-03 | 2023-09-26 | 华能澜沧江水电股份有限公司 | 基于树形结构的安全监测自定义报表的生成系统及方法 |
CN107861926A (zh) * | 2016-12-28 | 2018-03-30 | 平安科技(深圳)有限公司 | 单证模板配置方法及装置 |
CN107038646B (zh) * | 2016-12-29 | 2020-05-22 | 平安科技(深圳)有限公司 | 数据处理方法及装置 |
CN106648680A (zh) * | 2016-12-29 | 2017-05-10 | 江西博瑞彤芸科技有限公司 | 基于动态变量的信息模板生成方法 |
CN106845827A (zh) * | 2017-01-17 | 2017-06-13 | 环境保护部卫星环境应用中心 | 支持自定制自动化的综合评分与分级方法及装置 |
CN106843891B (zh) * | 2017-02-06 | 2020-03-20 | 浪潮通用软件有限公司 | 一种基于增量的表单分层扩展方法 |
CN107357774A (zh) * | 2017-07-24 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种报表生成方法和报表系统 |
CN107786627B (zh) * | 2017-07-24 | 2020-04-14 | 平安科技(深圳)有限公司 | 资源处理系统和方法 |
CN107480119A (zh) * | 2017-08-23 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种报表模板生成方法和装置 |
CN107885709A (zh) * | 2017-09-29 | 2018-04-06 | 深圳市共济科技股份有限公司 | 一种报表生成方法、系统及存储介质 |
CN108241595A (zh) * | 2017-11-15 | 2018-07-03 | 平安科技(深圳)有限公司 | 红头文件的红头模板制作方法、应用服务器及计算机存储介质 |
CN109800397B (zh) * | 2017-11-16 | 2020-12-04 | 北大方正集团有限公司 | 数据分析报告自动生成方法、装置、计算机设备和介质 |
CN108021367B (zh) * | 2017-12-15 | 2020-11-17 | 广州赛意信息科技股份有限公司 | 一种基于元数据架构的ui开发系统及方法 |
CN110019136A (zh) * | 2017-12-28 | 2019-07-16 | 中国移动通信集团内蒙古有限公司 | 报表生成系统及报表生成方法 |
CN108563621B (zh) * | 2018-04-28 | 2022-08-05 | 国泰新点软件股份有限公司 | 一种pdf报表生成方法、装置、设备及存储介质 |
CN109117469A (zh) * | 2018-09-03 | 2019-01-01 | 平安科技(深圳)有限公司 | Excel报表文件生成方法、装置、计算机设备及存储介质 |
CN110032720A (zh) * | 2018-12-28 | 2019-07-19 | 万康源(天津)基因科技有限公司 | 一种基于xml的可视化报告排版及自动生成方法及系统 |
CN110222047B (zh) * | 2019-04-28 | 2021-03-16 | 深圳易伙科技有限责任公司 | 一种动态表单生成方法和装置 |
CN110147361A (zh) * | 2019-05-27 | 2019-08-20 | 普元信息技术股份有限公司 | 大数据环境下实现主数据编码规则维护功能的系统及其方法 |
CN110807002B (zh) * | 2019-11-05 | 2022-08-02 | 杭州安恒信息技术股份有限公司 | 一种基于工作流的报表生成方法、系统及设备和存储介质 |
CN111401023B (zh) * | 2020-03-13 | 2024-01-19 | 浙江中控技术股份有限公司 | 一种报表生成方法、装置、服务器及存储介质 |
CN112465620B (zh) * | 2020-12-30 | 2023-12-19 | 广东金赋科技股份有限公司 | 基于动态表单与规则引擎的终端填单业务联动方法及装置 |
CN113157707A (zh) * | 2021-05-20 | 2021-07-23 | 国网信息通信产业集团有限公司 | 一种不规则报表的生成方法及系统 |
CN113393296A (zh) * | 2021-06-16 | 2021-09-14 | 北京沃东天骏信息技术有限公司 | 一种数据关系的表示方法、装置、设备及存储介质 |
CN114911854A (zh) * | 2022-05-09 | 2022-08-16 | 建信金融科技有限责任公司 | 一种数据处理方法和装置 |
CN115563111A (zh) * | 2022-09-27 | 2023-01-03 | 国网江苏省电力有限公司超高压分公司 | 一种换流站系统动态模型组态方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6055541A (en) * | 1997-09-19 | 2000-04-25 | Sas Ip, Inc. | Automatic report generating system |
CN1438591A (zh) * | 2002-02-10 | 2003-08-27 | 华为技术有限公司 | 智能报表的实现方法 |
CN1614589A (zh) * | 2003-11-08 | 2005-05-11 | 鸿富锦精密工业(深圳)有限公司 | 报表生成系统及方法 |
CN101021839A (zh) * | 2007-03-23 | 2007-08-22 | 北京润乾信息系统技术有限公司 | 非线性报表生成方法 |
-
2008
- 2008-04-28 CN CN2008101051043A patent/CN101308490B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6055541A (en) * | 1997-09-19 | 2000-04-25 | Sas Ip, Inc. | Automatic report generating system |
CN1438591A (zh) * | 2002-02-10 | 2003-08-27 | 华为技术有限公司 | 智能报表的实现方法 |
CN1614589A (zh) * | 2003-11-08 | 2005-05-11 | 鸿富锦精密工业(深圳)有限公司 | 报表生成系统及方法 |
CN101021839A (zh) * | 2007-03-23 | 2007-08-22 | 北京润乾信息系统技术有限公司 | 非线性报表生成方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649416A (zh) * | 2015-11-07 | 2017-05-10 | 上海海典软件股份有限公司 | 一种用于药店动态报表的数据分析方法 |
CN107329942A (zh) * | 2017-06-28 | 2017-11-07 | 深圳市康必达中创科技有限公司 | 基于树形结构的报表生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101308490A (zh) | 2008-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101308490B (zh) | 一种动态报表生成方法及平台 | |
US7734617B2 (en) | Optimization using a multi-dimensional data model | |
US6772409B1 (en) | Specification to ABAP code converter | |
CN101727324B (zh) | 一种代码生成方法及装置 | |
US8321467B2 (en) | System and method for communicating between an application and a database | |
US7496887B2 (en) | Integration of data management operations into a workflow system | |
US6957191B1 (en) | Automated financial scenario modeling and analysis tool having an intelligent graphical user interface | |
US8812950B2 (en) | Spreadsheet software services | |
CN107145480B (zh) | 一种基于Word进行XBRL报告编制的方法 | |
CN110543303B (zh) | 一种可视化业务平台 | |
US8966357B2 (en) | User interface for establishing mappings from internal metadata to external metadata | |
CN101944082A (zh) | 一种类Excel报表处理方法 | |
CN102214243A (zh) | Xbrl分类标准版本管理系统 | |
CN102117202A (zh) | 基于j2ee架构的代码生成装置 | |
CN106372044A (zh) | 一种基于报表生成类型化维度xbrl报告的方法 | |
CN112527373A (zh) | 一种基于运行综合管理中心业务的可视化平台拓展方法 | |
CN112541692B (zh) | 科学数据管理计划生成方法及装置 | |
CN111913962B (zh) | 一种多维度年度明细资金计划编制系统及方法 | |
CN109597603A (zh) | 一种基于文档构件的需求文档自动生成方法 | |
JP2001125855A (ja) | 動的Webページ生成プログラム | |
KR100902193B1 (ko) | 보고서 작성시스템, 검색결과에 대한 맞춤 보고서 제공방법 및 시스템, 그리고, 저장매체 | |
CN114610801A (zh) | 一种行列报表模板的生成方法 | |
CN114265842A (zh) | 基于erp系统的审计数据处理方法、装置、设备和存储介质 | |
CN108228688B (zh) | 一种基于xbrl的模板生成方法、系统及服务器 | |
CN104899045A (zh) | 一种通用的软件编码辅助系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100609 Termination date: 20130428 |