数据展示方法、电子装置及存储介质转让专利

申请号 : CN201910434187.9

文献号 : CN110209766B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王德品

申请人 : 招商局金融科技有限公司

摘要 :

本发明涉及数据处理技术,提供了一种数据展示方法、电子装置及存储介质。该方法接收用户发出的数据展示请求,所述请求包括待展示的数据,从预设数据库中获取预先配置的模板文本,将所述模板文本分割为若干个语法单元,基于分割后的语法单元,对各语法单元进行解析,构建模板文本的语法树及筛选链语法,基于筛选链语法,为各语法单元构建语法单元的语法树,并将语法单元的语法树的节点变量替换为待展示的数据,之后对语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本反馈至所述用户。利用本发明,可以提高了数据展示的效率。

权利要求 :

1.一种数据展示方法,应用于电子装置,其特征在于,所述方法包括:接收步骤:接收用户端发出的数据展示请求,所述请求包括待展示的数据;

分割步骤:从预设数据库中获取预先配置的模板文本,利用预设的文本分割规则,将所述模板文本分割为若干个语法单元,其中,所述利用预设的文本分割规则,将所述模板文本分割为若干个语法单元包括:识别所述模板文本中预设类型的关键字及该关键字的文本范围,基于所述关键字的文本范围将所述模板文本分割成若干块文本内容,将分割后的每块文本内容作为一个语法单元;

第一构建步骤:基于分割后的语法单元,对各所述语法单元进行解析,构建所述模板文本的语法树及筛选链语法;

第二构建步骤:基于所述筛选链语法,为各所述语法单元构建语法单元的语法树,并将所述语法单元的语法树的节点变量替换为所述待展示的数据;及反馈步骤:对所述语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本并反馈至所述用户端。

2.如权利要求1所述的数据展示方法,其特征在于,所述接收步骤还包括:对所述用户端的用户进行身份验证,用户身份验证通过则执行所述分割步骤,用户身份验证失败则拒绝所述数据展示请求并生成预警信息反馈至所述用户端。

3.如权利要求1所述的数据展示方法,其特征在于,所述对预设类型的节点对应的作用域执行预设操作,包括:识别所述预设类型的节点的作用域;

对所述预设类型的节点的作用域内的目标数据执行预设操作,所述预设操作包括赋值操作、语句替换操作;

并根据预设操作后的结果更新所述语法单元的语法树。

4.如权利要求1至3任意一项所述的数据展示方法,其特征在于,所述反馈步骤包括:预先为所述目标模板文本设置密钥,在发送过程中利用所述密钥对所述目标模板文本进行加密发送,当用户输入的密钥验证成功时解密所述目标模板文本供用户查看。

5.一种电子装置,该电子装置包括存储器及处理器,其特征在于,所述存储器上存储数据展示程序,所述数据展示程序被所述处理器执行,实现如下步骤:接收步骤:接收用户端发出的数据展示请求,所述请求包括待展示的数据;

分割步骤:从预设数据库中获取预先配置的模板文本,利用预设的文本分割规则,将所述模板文本分割为若干个语法单元,其中,所述利用预设的文本分割规则,将所述模板文本分割为若干个语法单元包括:识别所述模板文本中预设类型的关键字及该关键字的文本范围,基于所述关键字的文本范围将所述模板文本分割成若干块文本内容,将分割后的每块文本内容作为一个语法单元;

第一构建步骤:基于分割后的语法单元,对各所述语法单元进行解析,构建所述模板文本的语法树及筛选链语法;

第二构建步骤:基于所述筛选链语法,为各所述语法单元构建语法单元的语法树,并将所述语法单元的语法树的节点变量替换为所述待展示的数据;及反馈步骤:对所述语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本并反馈至所述用户端。

6.如权利要求5所述的电子装置,其特征在于,其特征在于,所述对预设类型的节点对应的作用域执行预设操作,包括:识别所述预设类型的节点的作用域;

对所述预设类型的节点的作用域内的目标数据执行预设操作,所述预设操作包括赋值操作、语句替换操作;

并根据预设操作后的结果更新所述语法单元的语法树。

7.如权利要求5所述的电子装置,其特征在于,所述反馈步骤包括:预先为所述目标模板文本设置密钥,在发送过程中利用所述密钥对所述目标模板文本进行加密发送,当用户输入的密钥验证成功时解密所述目标模板文本供用户查看。

8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括数据展示程序,所述数据展示程序被处理器执行时,可实现如权利要求1至4中任一项所述数据展示方法的步骤。

说明书 :

数据展示方法、电子装置及存储介质

技术领域

[0001] 本发明涉及数据处理领域,尤其涉及一种数据展示方法、电子装置及存储介质。

背景技术

[0002] 在报表中,需要一些描述性的文本,对不同的维度的内容进行展示,比如分支机构的展示,里面的数据也需要按照实时数据计算替换。
[0003] 目前,数据替换通常是在文本中加入变量,展示报表的时候将变量替换掉,然而当新增的机构时,则需要修改描述性文本的模板,当新增的机构数量巨大时,导致修改量大,报表数据容易出现错误,造成展示效率低的问题。
[0004] 因此,提供一种高效的数据展示方法,已成为本领域技术人员亟待解决的技术问题。

发明内容

[0005] 鉴于以上内容,本发明提供一种数据展示方法、电子装置及存储介质,其目的在于提高数据展示的效率。
[0006] 为实现上述目的,本发明提供一种数据展示方法,该方法包括:
[0007] 接收步骤:接收用户端发出的数据展示请求,所述请求包括待展示的数据;
[0008] 分割步骤:从预设数据库中获取预先配置的模板文本,利用预设的文本分割规则,将所述模板文本分割为若干个语法单元;
[0009] 第一构建步骤:基于分割后的语法单元,对各所述语法单元进行解析,构建所述模板文本的语法树及筛选链语法;
[0010] 第二构建步骤:基于所述筛选链语法,为各所述语法单元构建语法单元的语法树,并将所述语法单元的语法树的节点变量替换为所述待展示的数据;及
[0011] 反馈步骤:对所述语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本并反馈至所述用户端。
[0012] 优选的,所述接收步骤还包括:
[0013] 对所述用户端的用户进行身份验证,用户身份验证通过则执行所述分割步骤,用户身份验证失败则拒绝所述数据访问请求并生成预警信息反馈至所述用户端。
[0014] 优选的,所述分割步骤包括:
[0015] 识别所述模板文本中预设类型的关键字及该关键字的文本范围,基于所述关键字的文本范围将所述模板文本分割成若干块文本内容,将分割后的每块文本内容作为一个语法单元。
[0016] 优选的,所述对预设类型的节点对应的作用域执行预设操作,包括:
[0017] 识别所述预设类型的节点的作用域;
[0018] 对所述预设类型的节点的作用域内的目标数据执行预设操作,所述预设操作包括赋值操作、语句替换操作;
[0019] 并根据预设操作后的结果更新所述语法单元的语法树。
[0020] 优选的,所述反馈步骤包括:预先为所述目标模板文本设置密钥,在发送过程中利用所述密钥对所述目标模板文本进行加密发送,当用户输入的密钥验证成功时解密所述目标模板文本供用户查看。
[0021] 为实现上述目的,本发明还提供一种电子装置,该电子装置包括:存储器及处理器,其特征在于,所述存储器上存储数据展示程序,所述数据展示程序被所述处理器执行,实现如下步骤:
[0022] 接收步骤:接收用户端发出的数据展示请求,所述请求包括待展示的数据;
[0023] 分割步骤:从预设数据库中获取预先配置的模板文本,利用预设的文本分割规则,将所述模板文本分割为若干个语法单元;
[0024] 第一构建步骤:基于分割后的语法单元,对各所述语法单元进行解析,构建所述模板文本的语法树及筛选链语法;
[0025] 第二构建步骤:基于所述筛选链语法,为各所述语法单元构建语法单元的语法树,并将所述语法单元的语法树的节点变量替换为所述待展示的数据;及
[0026] 反馈步骤:对所述语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本并反馈至所述用户端。
[0027] 优选的,所述分割步骤包括:
[0028] 识别所述模板文本中预设类型的关键字及该关键字的文本范围,基于所述关键字的文本范围将所述模板文本分割成若干块文本内容,将分割后的每块文本内容作为一个语法单元。
[0029] 优选的,所述对预设类型的节点对应的作用域执行预设操作,包括:
[0030] 识别所述预设类型的节点的作用域;
[0031] 对所述预设类型的节点的作用域内的目标数据执行预设操作,所述预设操作包括赋值操作、语句替换操作;
[0032] 并根据预设操作后的结果更新所述语法单元的语法树。
[0033] 优选的,所述反馈步骤包括预先为所述目标模板文本设置密钥,在发送过程中利用所述密钥对所述目标模板文本进行加密发送,当用户输入的密钥验证成功时解密所述目标模板文本供用户查看。
[0034] 为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括数据展示程序,所述数据展示程序被处理器执行时,可实现如上所述数据展示方法中的任意步骤。
[0035] 本发明提出的数据展示方法、电子装置及存储介质,通过接收用户端发出的数据展示请求,从预设数据库中获取预先配置的模板文本,将模板文本分割为若干个语法单元,并对各语法单元进行解析,构建模板文本的语法树及筛选链语法,基于筛选链语法,为各语法单元构建语法单元的语法树,并将语法单元的语法树的节点变量替换为待展示的数据,之后对语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本并反馈至所述用户端。利用本发明,当代展示数据的维度发生变化时,不需重新修改模板文本,从而提高了数据展示的效率。

附图说明

[0036] 图1为本发明数据展示方法较佳实施例的应用环境图;
[0037] 图2为本发明电子装置较佳实施例的示意图;
[0038] 图3为图2中数据展示程序较佳实施例的模块示意图;
[0039] 图4为本发明数据展示方法较佳实施例的流程图;
[0040] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0041] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0042] 参照图1所示,是本发明数据展示方法较佳实施例的应用环境图。电子装置1安装有数据展示程序10。多个用户端3通过网络2连接电子装置1。网络2可以为互联网、云网络、无线保真(Wi-Fi)网络、个人网(PAN)、局域网(LAN)和/或城域网(MAN)。网络环境中的各种设备可以被配置为根据各种有线和无线通信协议连接到通信网络。这样的有线和无线通信协议的例子可以包括但不限于以下中的至少一个:传输控制协议和互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、文件传输协议(FTP)、ZigBee、EDGE、IEEE 802.11、光保真(Li-Fi)、802.16、IEEE 802.11s、IEEE 802.11g、多跳通信、无线接入点(AP)、设备对设备通信、蜂窝通信协议和/或蓝牙(Blue Tooth)通信协议或其组合。用户端3可以为桌上型计算机、笔记本、平板电脑、手机,或其它安装有应用软件,可以通过网络2与电子装置1进行通信的终端装置。数据库4可以包含不同类型的模板文本。
[0043] 参照图2所示,为本发明电子装置1较佳实施例的示意图。
[0044] 该电子装置1包括但不限于:存储器11、处理器12、显示器13及网络接口14。所述电子装置1通过网络接口14连接网络,获取原始数据。其中,所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of  Mobile communication,GSM)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi、通话网络等无线或有线网络。
[0045] 其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述电子装置1的外部存储设备,例如该电子装置1配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器11还可以既包括所述电子装置1的内部存储单元也包括其外部存储设备。本实施例中,存储器11通常用于存储安装于所述电子装置1的操作系统和各类应用软件,例如数据展示程序10的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0046] 处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述电子装置1的总体操作,例如执行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行数据展示程序10的程序代码等。
[0047] 显示器13可以称为显示屏或显示单元。在一些实施例中显示器13可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。显示器13用于显示在电子装置1中处理的信息以及用于显示可视化的工作界面,例如显示数据统计的结果。
[0048] 网络接口14可选地可以包括标准的有线接口、无线接口(如WI-FI接口),该网络接口14通常用于在所述电子装置1与其它电子设备之间建立通信连接。
[0049] 图2仅示出了具有组件11-14以及数据展示程序10的电子装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
[0050] 可选地,所述电子装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子装置1中处理的信息以及用于显示可视化的用户界面。
[0051] 该电子装置1还可以包括射频(Radio Frequency,RF)电路、传感器和音频电路等等,在此不再赘述。
[0052] 在上述实施例中,处理器12执行存储器11中存储的数据展示程序10时可以实现如下步骤:
[0053] 接收步骤:接收用户端发出的数据展示请求,所述请求包括待展示的数据;
[0054] 分割步骤:从预设数据库中获取预先配置的模板文本,利用预设的文本分割规则,将所述模板文本分割为若干个语法单元;
[0055] 第一构建步骤:基于分割后的语法单元,对各所述语法单元进行解析,构建所述模板文本的语法树及筛选链语法;
[0056] 第二构建步骤:基于所述筛选链语法,为各所述语法单元构建语法单元的语法树,并将所述语法单元的语法树的节点变量替换为所述待展示的数据;及
[0057] 反馈步骤:对所述语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本并反馈至所述用户端。
[0058] 关于上述步骤的详细介绍,请参照下述图3关于数据展示程序10实施例的程序模块图以及图4关于数据展示方法实施例的流程图的说明。
[0059] 在其他实施例中,所述数据展示程序10可以被分割为多个模块,该多个模块被存储于存储器12中,并由处理器13执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。
[0060] 参照图3所示,为图2中数据展示程序10一实施例的程序模块图。在本实施例中,所述数据展示程序10可以被分割为:接收模块110、分割模块120、第一构建模块130、第二构建模块140及反馈模块150。
[0061] 接收模块110,用于接收用户端发出的数据展示请求,所述请求包括待展示的数据。
[0062] 在本实施例中,以展示某机构在某个城市的业绩报表为例,请求中可以包括待展示的内容(例如,要展示某个城市的业绩情况,待展示的内容指标可以为:城市、销售额、支出、净利润率等),也可以包括待展示内容的存储路径及标识。也就是说,待展示的内容可以是用户在提交请求时一并录入的,也可以是在用户提交报表展示请求之后,从请求中指定的地址中获取的。
[0063] 获取用户待展示内容的方法包括:提供用户交互界面供用户输入特征数据,获取该用户输入的各项数据,或者从预先存储的用户输入的数据中提取出部分数据作为待展示内容。
[0064] 在一个实施例中,所述接收模块110还对发起数据展示请求的用户端的用户进行用户身份信息验证,用户身份信息验证通过则执行后续步骤,用户身份信息验证失败则拒绝所述数据展示请求并生成预警信息反馈至用户端。
[0065] 分割模块120,用于从预设数据库中获取预先配置的模板文本,利用预设的文本分割规则,将所述模板文本分割为若干个语法单元。
[0066] 在本实施例中,对文本遍历,识别预先配置的模板文本中预设类型的关键字及该关键字的文本范围,基于关键字的文本范围将所述模板文本分割成若干块文本内容,将分割后的每块文本内容作为一个语法单元,例如:普通文本单元,while关键字单元及运算单元等。
[0067] 其中,预先配置的模板文本可以为:
[0068] 文字:
[0069]
[0070]
[0071] 以上述模板文本为例,具体的分割规则为:从预设数据库中获取到预先配置的模板文本后,从第一行第一个字符‘文’开始读取,当读到第一个关键字while的时候,识别出while关键字的范围(第2行的右括号到第8行),将文本初步分割为3部分,第一部分文本,第二部分while部分,第三部分第8行括号之后的文本。
[0072] 在本实施例中,预先配置的模板文本可以具有循环、分支、变量计算的功能:
[0073] 循环:在模板中,配置了while(code1),需要得到‘code1’的总数,才能够得到循环的次数;
[0074] 分支:在模板中,配置了switch(code2)。针对case(code2),需要对每一种机构进行分支处理,针对case(‘深圳’),则只需要对code2=‘深圳’的值做汇总处理。
[0075] 变量计算:假设处在case(‘深圳’)的范围内,针对普通替换,则只需要将其替换为‘深圳’。该模板不需要去单独计算其它值,当展示机构增加的时候,也不需要去修改模板。
[0076] 第一构建模块130,用于基于分割后的语法单元,对各所述语法单元进行解析,构建所述模板文本的语法树及筛选链语法。
[0077] 以上述模板文本为例,对各分割后的语法单元进行解析。
[0078] 第一块为没有关键字的文本语法单元。
[0079] 第二块为while语法单元,while是控制类型的关键字,所以需要对while语法单元的节点添加筛选链,筛选链的关键字是while的参数字段名字‘code1’,此时筛选链的状态从‘null’变为‘code1=?’,将第二部分作为文本,同理得到需要替换的变量${code1}—变量a,变量a处在筛选链‘code1=?’中,继续读取到switch关键字,识别到switch参数是{code2},所以将switch单元作为文本继续读取,新增筛选链项‘code2=?’到筛选链中,此时switch单元内部的筛选链变成了‘code1=?’,‘code2=?’。以此类推,完成语法树和筛选链语法的构建。
[0080] 筛选链是一个嵌套层级关系的链表,每一个节点都有对应的筛选链,表示当前节点所处的状态。筛选链的作用就是判断这条语句是否属于这个节点。例如,在某个节点之下,某一节点的所有取值必须受其父节点的约束和影响,判断一个值是否在当前节点上,需要借助父节点的状态来判断,即筛选链,能够准确的对分支循环进行控制和计算。
[0081] 语法树(abstract syntax tree)是文本的抽象语法结构的树状表现形式,是基于寄存器的带类型的三地址码,具有语句和表达式两种形式,语法树中的每个节点都表示文本中的一种结构。一段文本由一系列语句构成的,而一条语句又分解为若干表达式。
[0082] 例如,从语法上分析一条赋值语句‘x=3+5’,首先执行算术表达式‘3+5’,结果为‘8’,然后通过赋值表达式‘x=8’,将变量‘x’赋值为‘8’。将表达式的运算符作为树根(如上例中的‘+’、‘=’),参与运算的变量和常量(‘x’、‘3’、‘5’等)作为树叶,就得到了表达式对应的语法树,若干表达式对应的语法树组成了一条语句对应的语法树,而若干语句的语法树就组成了整段文本的语法树。
[0083] 第二构建模块140,用于基于所述筛选链语法,为各所述语法单元构建语法单元的语法树,并将所述语法单元的语法树的节点变量替换为所述待展示的数据。
[0084] 以前文所述的预选配置的模板为例,语法树构建好了之后,输入数据到语法树中,读取到while节点的时候,while的参数code1有3个值—[A,B,C],所以while部分会重复跑3次,第一次筛选链为‘code1=A’,第二次筛选链为‘code1=B’,第三次筛选链为‘code1=C’,当筛选链为A的时候,读到变量a,此时查询筛选链,只有第1条和第2条数据符合条件,这两条数据的‘code1’的值都是A,所以此时变量a替换成了A。
[0085] 在筛选链code1=A的时候,进入switch部分,switch的参数为code2,做分支参数,此时筛选链为‘code1=A’,所以只有第1条和第2条数据能够进到switch部分,switch的case(‘aa’)中,筛选链变成了‘code1=A’,‘code2=aa’,此时符合筛选链的数据只有第一条了,所以sum(code4)的值只是2,case(‘cc’)没有数值对应,则删除case(‘cc’)部分的节点。以此类推,根据筛选链完成语法树的变量替换操作。
[0086] 其中,在while节点内部,有2个重要的因子,一个是while的参数,参数代表着循环的次数,另一个因子就是while单元内部的文本,该文本实质上也是一颗语法树,准确来说是while节点上的子树,所以可以把这颗子树作为一个单独的语法单元。由于while是有条件的,替换变量的时候需要计算while参数此时的状态,所以需要往筛选链里面加入while参数此时的状态值。
[0087] 例如:在while语法单元内部,需要进行计算add(a,b)的当前状态下的值,借助筛选链对所有数据进行筛选,假如有1000条数据,处在这个筛选链状态的数据只有200条,那么对这200条数据进行汇总,得到a的和为A,b的和为B,再将A与B相加得到的C,得知C为add(a,b)在当前状态下的值。
[0088] 反馈模块150,用于对所述语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本并反馈至所述用户端。
[0089] 基于所述语法树的结构,利用深度优先算法遍历语法树,对所述语法树的各个节点进行遍历得到各个节点的类型,遍历到预设的节点时,根据节点的类型对该节点对应的作用域执行预设的操作。例如,对于对普通文本节点,执行语句操作;对于算数函数节点,执行函数处理操作。
[0090] 在本实施例中,根据待操作节点数据的逻辑执行顺序,对所述语法树的各个节点按序进行遍历。由于语法树代表了待操作节点数据的执行架构,因而,待操作节点数据的逻辑执行顺序也决定了语法树中各个节点的执行顺序。
[0091] 对预设类型节点对节点对应的作用域执行预设操作,包括:
[0092] 识别所述预设节点的作用域,根据所述预设节点的类型,对所述预设节点的作用域内的目标数据进行预设的操作,并根据替换处理后的结果,更新所述语法树。预设的操作可以为如下操作:赋值操作、函数处理操作、逻辑操作、语句操作、成员表达式处理操作、解密操作等。
[0093] 在本实施例中,还可以预先为所述目标模板文本设置密钥,在发送过程中利用所述密钥对所述目标模板文本进行加密发送,防止用户账号被盗用的情况,当用户输入的密钥验证成功时解密所述目标模板文本供用户查看。
[0094] 此外,本发明还提供一种数据展示的方法。参照图4所示,为本发明数据展示方法的实施例的方法流程示意图。电子装置1的处理器12执行存储器11中存储的数据展示程序10时实现数据展示的方法的如下步骤:
[0095] 步骤S10:接收用户端发出的数据展示请求,所述请求包括待展示的数据。
[0096] 在本实施例中,以展示某机构在某个城市的业绩报表为例,请求中可以包括待展示的内容(例如,要展示某个城市的业绩情况,待展示的内容指标可以为:城市、销售额、支出、净利润率等),也可以包括待展示内容的存储路径及标识。也就是说,待展示的内容可以是用户在提交请求时一并录入的,也可以是在用户提交报表展示请求之后,从请求中指定的地址中获取的。
[0097] 获取用户待展示内容的方法包括:提供用户交互界面供用户输入特征数据,获取该用户输入的各项数据,或者从预先存储的用户输入的数据中提取出部分数据作为待展示内容。
[0098] 在一个实施例中,所述接收模块110还对发起数据展示请求的用户端的用户进行用户身份信息验证,用户身份信息验证通过则执行后续步骤,用户身份信息验证失败则拒绝所述数据展示请求并生成预警信息反馈至用户端。例如,接收模块110将用户的身份信息与预设的具备请求权限的白名单进行匹配,当白名单中存在与用户身份信息匹配的数据时,认为用户具备权限;当白名单中不存在与用户身份信息匹配的数据时,认为用户不具备权限。
[0099] 步骤S20:从预设数据库中获取预先配置的模板文本,利用预设的文本分割规则,将所述模板文本分割为若干个语法单元。
[0100] 在本实施例中,对文本遍历,识别预先配置的模板文本中预设类型的关键字及该关键字的文本范围,基于关键字的文本范围将所述模板文本分割成若干块文本内容,将分割后的每块文本内容作为一个语法单元,例如:普通文本单元,while关键字单元及运算单元等。
[0101] 其中,预先配置的模板文本可以为:
[0102] 文字:
[0103]
[0104] 以上述模板文本为例,具体的分割规则为:从预设数据库中获取到预先配置的模板文本后,从第一行第一个字符‘文’开始读取,当读到第一个关键字while的时候,识别出while关键字的范围(第2行的右括号到第8行),将文本初步分割为3部分,第一部分文本,第二部分while部分,第三部分第8行括号之后的文本。
[0105] 在本实施例中,预先配置的模板文本可以具有循环、分支、变量计算的功能:
[0106] 循环:在模板中,配置了while(code1),需要得到‘code1’的总数,才能够得到循环的次数;
[0107] 分支:在模板中,配置了switch(code2)。针对case(code2),需要对每一种机构进行分支处理,针对case(‘深圳’),则只需要对code2=‘深圳’的值做汇总处理。
[0108] 变量计算:假设处在case(‘深圳’)的范围内,针对普通替换,则只需要将其替换为‘深圳’。该模板不需要去单独计算其它值,当展示机构增加的时候,也不需要去修改模板。
[0109] 步骤S30:基于分割后的语法单元,对各所述语法单元进行解析,构建所述模板文本的语法树及筛选链语法。
[0110] 以上述模板文本为例,对各分割后的语法单元进行解析。
[0111] 第一块为没有关键字的文本语法单元。
[0112] 第二块为while语法单元,while是控制类型的关键字,所以需要对while语法单元的节点添加筛选链,筛选链的关键字是while的参数字段名字‘code1’,此时筛选链的状态从‘null’变为‘code1=?’,将第二部分作为文本,同理得到需要替换的变量${code1}—变量a,变量a处在筛选链‘code1=?’中,继续读取到switch关键字,识别到switch参数是{code2},所以将switch单元作为文本继续读取,新增筛选链项‘code2=?’到筛选链中,此时switch单元内部的筛选链变成了‘code1=?’,‘code2=?’。以此类推,完成语法树和筛选链语法的构建。
[0113] 筛选链是一个嵌套层级关系的链表,每一个节点都有对应的筛选链,表示当前节点所处的状态。筛选链的作用就是判断这条语句是否属于这个节点。例如,在某个节点之下,某一节点的所有取值必须受其父节点的约束和影响,判断一个值是否在当前节点上,需要借助父节点的状态来判断,即筛选链,能够准确的对分支循环进行控制和计算。
[0114] 语法树(abstract syntax tree)是文本的抽象语法结构的树状表现形式,是基于寄存器的带类型的三地址码,具有语句和表达式两种形式,语法树中的每个节点都表示文本中的一种结构。一段文本由一系列语句构成的,而一条语句又分解为若干表达式。
[0115] 例如,从语法上分析一条赋值语句‘x=3+5’,首先执行算术表达式‘3+5’,结果为‘8’,然后通过赋值表达式‘x=8’,将变量‘x’赋值为‘8’。将表达式的运算符作为树根(如上例中的‘+’、‘=’),参与运算的变量和常量(‘x’、‘3’、‘5’等)作为树叶,就得到了表达式对应的语法树,若干表达式对应的语法树组成了一条语句对应的语法树,而若干语句的语法树就组成了整段文本的语法树。
[0116] 步骤S40:基于所述筛选链语法,为各所述语法单元构建语法单元的语法树,并将所述语法单元的语法树的节点变量替换为所述待展示的数据。
[0117] 以前文所述的预选配置的模板为例,语法树构建好了之后,输入数据到语法树中,读取到while节点的时候,while的参数code1有3个值—[A,B,C],所以while部分会重复跑3次,第一次筛选链为‘code1=A’,第二次筛选链为‘code1=B’,第三次筛选链为‘code1=C’,当筛选链为A的时候,读到变量a,此时查询筛选链,只有第1条和第2条数据符合条件,这两条数据的‘code1’的值都是A,所以此时变量a替换成了A。
[0118] 在筛选链code1=A的时候,进入switch部分,switch的参数为code2,做分支参数,此时筛选链为‘code1=A’,所以只有第1条和第2条数据能够进到switch部分,switch的case(‘aa’)中,筛选链变成了‘code1=A’,‘code2=aa’,此时符合筛选链的数据只有第一条了,所以sum(code4)的值只是2,case(‘cc’)没有数值对应,则删除case(‘cc’)部分的节点。以此类推,根据筛选链完成语法树的变量替换操作。
[0119] 其中,在while节点内部,有2个重要的因子,一个是while的参数,参数代表着循环的次数,另一个因子就是while单元内部的文本,该文本实质上也是一颗语法树,准确来说是while节点上的子树,所以可以把这颗子树作为一个单独的语法单元。由于while是有条件的,替换变量的时候需要计算while参数此时的状态,所以需要往筛选链里面加入while参数此时的状态值。
[0120] 例如:在while语法单元内部,需要进行计算add(a,b)的当前状态下的值,借助筛选链对所有数据进行筛选,假如有1000条数据,处在这个筛选链状态的数据只有200条,那么对这200条数据进行汇总,得到a的和为A,b的和为B,再将A与B相加得到的C,得知C为add(a,b)在当前状态下的值。
[0121] 步骤S50:对所述语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本并反馈至所述用户端。
[0122] 在本实施例中,基于所述语法树的结构,利用深度优先算法遍历语法树,对所述语法树的各个节点进行遍历得到各个节点的类型,遍历到预设的节点时,根据节点的类型对该节点对应的作用域执行预设的操作。例如,对于对普通文本节点,执行语句操作;对于算数函数节点,执行函数处理操作。
[0123] 在本实施例中,根据待操作节点数据的逻辑执行顺序,对所述语法树的各个节点按序进行遍历。由于语法树代表了待操作节点数据的执行架构,因而,待操作节点数据的逻辑执行顺序也决定了语法树中各个节点的执行顺序。
[0124] 对预设类型节点对节点对应的作用域执行预设操作,包括:
[0125] 识别所述预设节点的作用域,根据所述预设节点的类型,对所述预设节点的作用域内的目标数据进行预设的操作,并根据替换处理后的结果,更新所述语法树。预设的操作可以为如下操作:赋值操作、函数处理操作、逻辑操作、语句操作、成员表达式处理操作、解密操作等。
[0126] 在本实施例中,还可以预先为所述目标模板文本设置密钥,在发送过程中利用所述密钥对所述目标模板文本进行加密发送,防止用户账号被盗用的情况,当用户输入的密钥验证成功时解密所述目标模板文本供用户查看。
[0127] 此外,本发明实施例还提出一种计算机可读存储介质,该计算机可读存储介质可以是硬盘、多媒体卡、SD卡、闪存卡、SMC、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器等等中的任意一种或者几种的任意组合。所述计算机可读存储介质中包括数据展示程序10,所述数据展示程序10被处理器执行时实现如下操作:
[0128] 接收步骤:接收用户端发出的数据展示请求,所述请求包括待展示的数据;
[0129] 分割步骤:从预设数据库中获取预先配置的模板文本,利用预设的文本分割规则,将所述模板文本分割为若干个语法单元;
[0130] 第一构建步骤:基于分割后的语法单元,对各所述语法单元进行解析,构建所述模板文本的语法树及筛选链语法;
[0131] 第二构建步骤:基于所述筛选链语法,为各所述语法单元构建语法单元的语法树,并将所述语法单元的语法树的节点变量替换为所述待展示的数据;及
[0132] 反馈步骤:对所述语法单元的语法树的各个节点进行遍历得到各节点的类型,对预设类型的节点对应的作用域执行预设的操作,得到目标模板文本并反馈至所述用户端。
[0133] 本发明之计算机可读存储介质的具体实施方式与上述数据展示方法的具体实施方式大致相同,在此不再赘述。
[0134] 需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
[0135] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,电子装置,或者网络设备等)执行本发明各个实施例所述的方法。
[0136] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。