一种web报表数据异步填充的实现方法转让专利

申请号 : CN201610110466.6

文献号 : CN105786786B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李伟龙薛军利刘本熙李洪营

申请人 : 浪潮通用软件有限公司

摘要 :

本发明公开了一种web报表数据异步填充的实现方法,包括数据处理单元、报表编译单元和异步填充单元,其中数据处理单元内置数据引擎模块,其具体实现过程为:首先通过数据引擎模块对报表数据进行整理,然后移交到报表编译单元;报表编译单元对报表数据中涉及的单元格格式和公式格式进行预处理,随后将预处理的数据移交异步填充单元;异步填充模块解析预处理的数据后进行界面格式填充完;最后将填充完的报表数据在UI界面进行展示。本发明的一种web报表数据异步填充的实现方法与现有技术相比,大大提高了报表的加载速率,保证数据计算准确性,提高报表的展现效率,能极大提高客户对产品的满意度,实用性强,易于推广。

权利要求 :

1.一种web报表数据异步填充的实现方法,其特征在于,通过数据处理单元、报表编译单元和异步填充单元实现,其中数据处理单元内置数据引擎模块,其具体实现过程为:一、首先通过数据引擎模块对报表数据进行整理,然后移交到报表编译单元;

二、报表编译单元对报表数据中涉及的单元格格式和公式格式进行预处理,随后将预处理的数据移交异步填充单元;

所述报表编译单元包括公式预编译单元和格式预编译单元两部分,数据引擎模块处理后的数据顺序发送到公式预编译单元、格式预编译单元后进行公式编译预处理、格式编译预处理,公式预编译单元对公式编译预处理过程为:数据引擎加工后得到的结果移交给公式预编译单元处理;

公式预编译单元根据公式数据递归形成公式树,记录公式之间的关联引用和指向指针;

公式部分包括自定义公式、表内公式、表间公式,根据不同的公式类型来加载不同的预编译策略,同时相同引用的指针做缓存处理提高复用效率,所述预编译策略包括将动态公式预编译成MAP表对表格位置进行重新索引,实现单元格在纵向和横向扩展时与单元格公式的实时位置更新;

三、异步填充单元解析预处理的数据后进行界面格式填充;

四、最后将填充完的报表数据在UI界面进行展示。

2.根据权利要求1所述的一种web报表数据异步填充的实现方法,其特征在于, 在数据处理单元内的数据引擎模块与报表编译单元的公式预编译单元之间采用HTTP协议进行数据传输,数据格式采用JSON来进行语义化描述,网络传输采用ProtocolBuffer进行压缩。

3.根据权利要求1所述的一种web报表数据异步填充的实现方法,其特征在于,格式预编译单元对格式编译预处理过程为:公式预编译单元预编译的结果、数据引擎模块的结果都会交给格式单元处理,首先根据单元的格式数据来形成格式树加载格式以及位置信息,初始化加载方式,初始化公式信息,同时对报表的数据和填充进行重组;格式信息与公式信息进行预整合,形成完整的报表描述结构,最终形成一个待处理填充的格式描述的数据结构。

4.根据权利要求1所述的一种web报表数据异步填充的实现方法,其特征在于,异步填充单元的具体填充过程为:首先接收格式预编译单元的编译结果,解析成填充指令,然后将指令交给异步填充单元,用JavaScript启用WebWorker进行多线程异步填充,这里的异步填充单元采用两种填充模式:块填充,即对数据进行块级别的填充;

扩展填充,即扩展为公式指令标记为扩展的单元格,进行横向和纵向的扩展填充。

5.根据权利要求1所述的一种web报表数据异步填充的实现方法,其特征在于,报表数据在UI界面进行展示的具体过程为:界面格式填充完之后,回调公式计算模块,该公式计算模块采用的公式计算方式为异步延时加载的方式,即计算和展现独立操作,独立线程解析公式结果,填充方式采取由左到右、由上到下的加载方式;最后进行公式缓存复用,对于相同的公式结果进行缓存不再进行重复计算,计算后统一回调展现UI界面。

说明书 :

一种web报表数据异步填充的实现方法

技术领域

[0001] 本发明涉及通信信息技术领域,具体地说是一种web报表数据异步填充的实现方法。

背景技术

[0002] 随着网络化信息系统的发展,越来越多的企业部署基于Web的信息系统。 然而在企业ERP中核心的报表部分就成了功能的主要关注点。传统的企业报表依赖于第三方插件,加载效率慢,对用户的体验以及工作效率都有影响,而web报表由于浏览器限制也不能达到高效的展现以及灵活的配置。基于WEB报表系统的现状,现提供一种web报表数据异步填充的实现方法。通过该方法使传统Web报表填充展现数据更加高效灵活,对操作进行原子化处理,通过异步手段逐步优化展现逻辑,以达到提高WEB报表的展现效率的目的。

发明内容

[0003] 本发明的技术任务是针对以上不足之处,提供一种web报表数据异步填充的实现方法。
[0004] 一种web报表数据异步填充的实现方法,包括数据处理单元、报表编译单元和异步填充单元,其中数据处理单元内置数据引擎模块,其具体实现过程为:
[0005] 首先通过数据引擎模块对报表数据进行整理,然后移交到报表编译单元;
[0006] 报表编译单元对报表数据中涉及的单元格格式和公式格式进行预处理,随后将预处理的数据移交异步填充单元;
[0007] 异步填充模块解析预处理的数据后进行界面格式填充完;
[0008] 最后将填充完的报表数据在UI界面进行展示。
[0009] 在数据处理单元内,数据引擎模块与预编译单元之间的数据传输采用HTTP协议,数据格式采用JSON来进行语义化描述,网络传输采用ProtocolBuffer进行压缩。
[0010] 所述报表编译单元包括公式预编译单元和格式预编译单元两部分,数据引擎模块处理后的数据顺序发送到公式预编译单元、格式预编译单元后进行公式编译预处理、格式编译预处理。
[0011] 公式预编译单元对公式编译预处理过程为:
[0012] 数据引擎加工后得到的结果移交给公式预编译单元处理;
[0013] 公式预编译单元根据公式数据递归形成公式树,记录公式之间的关联引用和指向指针;
[0014] 公式部分包括自定义公式、表内公式、表间公式,根据不同的公式类型来加载不同的预编译策略,同时相同引用的指针做缓存处理提高复用效率;
[0015] 动态公式预编译成MAP表对表格位置进行重新索引,这样的达到了单元格在纵向和横向扩展的时机与单元格公式的实时位置更新。
[0016] 格式预编译单元对格式编译预处理过程为:
[0017] 公式预编译单元预编译的结果、数据引擎的结果都会交给格式单元处理,首先根据单元的格式数据来形成格式树加载格式以及位置信息,初始化加载方式,初始化公式信息,同时对报表的数据和填充进行重组;格式信息与公式信息进行预整合,形成完整的报表描述结构,最终形成一个待处理填充的格式描述的数据结构。
[0018] 异步填充单元的具体填充过程为:
[0019] 首先接收格式预编译单元的编译结果,解析成填充指令,然后将指令交给异步填充单元,用JavaScript启用WebWorker进行多线程异步填充,这里的异步填充单元采用两种填充模式:
[0020] 块填充,即对数据进行块级别的填充;
[0021] 扩展填充,即扩展为公式指令标记为扩展的单元格,进行横向和纵向的扩展填充。
[0022] 报表数据在UI界面进行展示的具体过程为:界面格式填充完之后,回调公式计算模块,该公式计算模块采用的公式计算方式为异步延时加载的方式,即计算和展现独立操作,独立线程解析公式结果,填充方式采取由左到右、由上到下的加载方式;最后进行公式缓存复用,对于相同的公式结果进行缓存不再进行重复计算,计算后统一回调展现UI界面。
[0023] 本发明的一种web报表数据异步填充的实现方法和现有技术相比,具有以下有益效果:
[0024] 本发明适用于Web报表系统中快速的展现报表格式以及数据,通过该流程方法,对数据进行预处理,可以快速的加载报表格式、异步填充报表数据、进行公式的计算以及用户的私有逻辑控制等;其中对公式树进行了预编译、公式单元格的延时加载、格式树的轻量级描述、填充报表时的动态模式、异步模式,都大大提高了报表的加载速率;另外此模式同时保证数据安全,保证数据计算准确性,提高报表的展现效率,能极大提高客户对产品的满意度,实用性强,易于推广。

附图说明

[0025] 附图1为本发明的工作原理示意图。

具体实施方式

[0026] 下面结合附图和具体实施例对本发明作进一步说明。
[0027] 如附图1所示,本发明的一种web报表数据异步填充的实现方法,包括数据处理单元、报表编译单元和异步填充单元,其中数据处理单元内置数据引擎模块,采用前后端分离,支持自定义的取数接口;传输过程数据格式压缩优化。报表编译单元用于单元格格式和公式格式预处理,提高报表速度;采用树形数据结构的方式来存放公式,用来表达公式的依赖关系;引入的公式指令,通过指令驱动报表填充,对自定义公式以及表内表间公式进行了优化,即去重、缓存;格式部分使用轻量级数据结构JSON进行描述,节省内存且数据结构语义化。异步填充单元利用WEB(HTML5)特性对填充逻辑进行多线程异步操作,提升用户体验;填充模式分策略加载,即块填充、扩展填充,提高加载的性能;公式计算结果缓存化、公式引用实时更新、公式结果延迟加载,保证了数据的准确性。
[0028] 基于上述结构,本发明的具体实现过程为:
[0029] 首先通过数据引擎模块对报表数据进行整理,然后移交到报表编译单元;
[0030] 报表编译单元对报表数据中涉及的单元格格式和公式格式进行预处理,随后将预处理的数据移交异步填充单元;
[0031] 异步填充模块解析预处理的数据后进行界面格式填充完;
[0032] 最后将填充完的报表数据在UI界面进行展示。
[0033] 在数据处理单元内,数据引擎模块与预编译单元之间的数据传输采用HTTP协议,数据格式采用JSON来进行语义化描述(轻量易读),网络传输采用ProtocolBuffer进行压缩(整体传输体积小)、通过此方式来对WEB报表的取数单元进行了性能以及效率的提升,减少了网络的开销,提高了查询效率。
[0034] 所述报表编译单元包括公式预编译单元和格式预编译单元两部分,数据引擎模块处理后的数据顺序发送到公式预编译单元、格式预编译单元后进行公式编译预处理、格式编译预处理。
[0035] 公式预编译单元对公式编译预处理过程为:
[0036] 数据引擎加工后得到的结果移交给公式预编译单元处理;
[0037] 公式预编译单元根据公式数据递归形成公式树,记录公式之间的关联引用和指向指针;
[0038] 公式部分包括自定义公式、表内公式、表间公式,根据不同的公式类型来加载不同的预编译策略,同时相同引用的指针做缓存处理提高复用效率;
[0039] 动态公式预编译成MAP表对表格位置进行重新索引,这样的达到了单元格在纵向和横向扩展的时机与单元格公式的实时位置更新。
[0040] 格式预编译单元对格式编译预处理过程为:
[0041] 公式预编译单元预编译的结果、数据引擎的结果都会交给格式单元处理,首先根据单元的格式数据来形成格式树加载格式以及位置信息,初始化加载方式,初始化公式信息,同时对报表的数据和填充进行重组;格式信息与公式信息进行预整合,形成完整的报表描述结构,最终形成一个待处理填充的格式描述的数据结构。
[0042] 异步填充单元的具体填充过程为:
[0043] 首先接收格式预编译单元的编译结果,解析成填充指令,然后将指令交给异步填充单元,用JavaScript启用WebWorker进行多线程异步填充,这里的异步填充单元采用两种填充模式:
[0044] 块填充,摒弃了传统的单元格填充方式,引入数据区域的概念,对数据进行块级别的填充,提高了填充效率。
[0045] 扩展填充,扩展为公式指令标记为扩展的单元格,进行横向和纵向的扩展填充,此时单元格的初始位置也会发生变化,单元格的公式引用会随着扩展模式的填充而更改。
[0046] 报表数据在UI界面进行展示的具体过程为:界面格式填充完之后,回调公式计算模块,该公式计算模块采用的公式计算方式为异步延时加载的方式,即计算和展现独立操作,独立线程解析公式结果,填充方式采取由左到右、由上到下的加载方式;最后进行公式缓存复用,对于相同的公式结果进行缓存不再进行重复计算,计算后统一回调展现UI界面。
[0047] 本发明针对Web报表应用,充分利用Web开发技术的灵活性,前端后端分离,采用了全新的异步方式进行数据填充,引入新的流程方法,对填充数据进行步骤分解:引入取数单元、对报表取数进行优化压缩,减少了网络开销以及传输效率、引入了预编译单元,对报表格式描述的数据结构进行了底层优化,提高了数据的加载效率和可操作易用性,同时引入公式指令单元,对传统的公式方式进行了优化以及分组处理,并引入公式缓存和公式引用概念,提高公式计算效率。最后引入了异步填充单元、采用多线程异步处理,公式计算结果最后延时加载,改善了传统web浏览器方式展现UI的卡顿现象,提高了产品的体验。
[0048] 通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
[0049] 除说明书所述的技术特征外,均为本专业技术人员的已知技术。