一种报表生成方法和系统与流程

文档序号:12010106阅读:274来源:国知局
一种报表生成方法和系统与流程
本发明涉及基于互联网技术开发的报表应用,更具体地说,涉及一种报表生成方法和系统。

背景技术:
目前很多软件项目实现的报表应用,都在项目需求阶段确定报表的类型或形式,开发者根据此特定需求通过硬编码形式实现,而没有考虑用户对报表定制的需求,用户或业务人员只能查看预先确定的报表,不能根据自己的业务需求做个性化的定制。业界报表工具的期望是覆盖所有用户需求,用户或第三方通过使用现有的报表工具支持的功能来满足需求。这种报表的生成方法非常僵硬而不灵活,用户只能在报表工具支持的功能范围内来实现表报,报表的制作无法按照用户的不同需要进行灵活调整,一旦出现用户需要的功能报表工具不能支持的情况,相应的报表就无法实现,而用户或第三方只能将对该功能的需求反馈给报表工具提供方,期望在报表工具的下一版本中得以满足。

技术实现要素:
针对现有报表的生成方法只允许用户在报表工具支持的功能范围内实现表报,无法实现根据用户的业务需要定制报表的缺陷,提供一种报表的生成方 法和系统,通过与用户交互性的可视化图形操作生成报表的定义并存储与服务器,用户通过向服务器请求以获取相应的表报或数据,实现了报表的个性化定制。本发明解决其技术问题采用的技术方案是:提供一种报表生成系统,包括通信连接的客户端和服务器,所述客户端包括混聚(Mash-up)编辑器和报表引擎,所述服务器包括Mash-up引擎;其中,所述Mash-up编辑器用于通过交互性的可视化图形操作生成报表的Mash-up定义,并将所述Mash-up定义保存到所述服务器;所述Mash-up定义包括直接或间接关联的数据节点和操作符节点,所述操作符节点用于运行业务逻辑,所述数据节点为所述操作符节点运行相应业务逻辑所需的数据输入以及相应的数据输出;所述Mash-up编辑器还用于向所述服务器请求用于唯一标识生成的Mash-up定义中各节点的ID;所述报表引擎用于向所述服务器发送请求信息,所述请求信息包括所要请求的数据节点的ID;所述Mash-up引擎用于查询所要请求的数据节点的ID所属的Mash-up定义,根据查询到的Mash-up定义构建生成该数据节点的节点序列,执行所述节点序列中的操作符节点并将执行结果返回所述报表引擎。优选地,所述服务器还包括:报表管理器,用于接收所述请求信号,对所要请求的最终数据节点的ID所属的Mash-up定义进行合法性验证,若通过验证,则将所要请求的最终数据节点的ID发送到所述Mash-up引擎。优选地,所述Mash-up引擎根据Mash-up节点序列算法构建生成最终数据节点的节点序列,所述Mash-up节点序列算法包括步骤:A、查询所要请求的数据节点的ID所属的Mash-up定义;B、确定查询到的Mash-up定义中与该数据节点有直接或间接关联的所有节点;C、按照执行顺序将确定的所有节点中的操作符节点构建成生成所要请求的数据节点的节点序列,确定的所有节点中的数据节点作为操作符节点的关联引用保存。优选地,所述节点序列中的操作符节点包括服务器端操作符节点和客户端操作符节点;所述Mash-up引擎执行所述服务器端操作符节点,并将执行结果、以及包括所述客户端操作符节点的剩余的节点序列发送到所述报表引擎,所述报表引擎还用于执行节点序列中的所述客户端操作符节点。优选地,所述客户端操作符节点运行的业务逻辑包括根据用户指定条件处理所述Mash-up引擎返回的执行结果和/或绘制报表。提供一种报表生成方法,包括以下步骤:S1、通过设置在客户端的混聚(Mash-up)编辑器生成报表的Mash-up定义,所述Mash-up定义包括直接或间接关联的数据节点和操作符节点,并为所述Mash-up定义中的各节点分配ID,将所述Mash-up定义保存到服务器;其中,所述操作符节点用于运行业务逻辑,所述数据节点为所述操作符节点运行相应业务逻辑所需的数据输入以及相应的数据输出;S2、通过设置在客户端的报表引擎,向所述服务器发送请求信息,所述请求信息包括所要请求的数据节点的ID;S3、通过设置在服务器端的Mash-up引擎查询所要请求的数据节点的ID所属的Mash-up定义,根据查询到的Mash-up定义构建生成所要请求的数据节点的节点序列,执行所述节点序列中的操作符节点,并将执行结果返回所述报表引擎。优选地,在步骤S2和S3之间还包括步骤:S4、通过设置在服务器端的报表管理器接收所述请求信息,对所要请求的 数据节点的ID所属的Mash-up定义进行合法性验证,若通过验证,则将所要请求的数据节点的ID发送到所述Mash-up引擎。优选地,步骤S3包括以下步骤:S3a、所述Mash-up引擎查询所要请求的数据节点的ID所属的Mash-up定义;S3b、所述Mash-up引擎确定查询到的Mash-up定义中与所要请求的数据节点直接或间接关联的所有节点;S3c、所述Mash-up引擎按照执行顺序将确定的所有节点中的操作符节点构建成生成所要请求的数据节点的节点序列,确定的所有节点中的数据节点作为操作符节点的关联引用保存;S3d、所述Mash-up引擎执行所述节点序列中的操作符节点,并将执行结果返回所述报表引擎。优选地,所述节点序列中的操作符节点包括服务器端操作符节点和客户端操作符节点,步骤S3d中,所述Mash-up引擎执行所述服务器端操作符节点,并将执行结果、以及包括所述客户端操作符节点的剩余的节点序列发送到所述报表引擎;所述方法还包括步骤:S5、所述报表引擎执行节点序列中的所述客户端操作符节点。优选地,所述客户端操作符节点运行的业务逻辑包括根据用户指定条件处理所述Mash-up引擎返回的执行结果和/或绘制报表。本发明的报表生成方法和系统具有以下有益效果:通过Mash-up编辑器提供交互性的可视化图形操作以生成报表的Mash-up定义,并为Mash-up定义中的各节点分配ID,然后将Mash-up定义保存到服务器,用户通过报表引擎向 服务器发送请求信息并接收Mash-up引擎执行生成所要请求的数据节点的节点序列的结果,以获取按业务需要定制的表报或数据。附图说明图1为本发明的报表生成系统第一实施例的系统框图;图2为Mash-up定义示例图;图3为Mash-up节点序列算法的实施流程图;图4为Mash-up引擎执行服务器端操作符节点的流程图;图5为本发明的报表生成系统第二实施例的系统框图;图6为本发明的报表生成方法第一实施例的流程图;图7为本发明的报表生成方法第二实施例的流程图。具体实施方式以下结合附图和实施例对本发明作进一步的解释说明。图1为本发明的报表生成系统100第一实施例的系统框图,如图1所示,在本实施例中,系统100包括通信连接的客户端110和服务器120,其中,客户端110包括Mash-up编辑器111和报表引擎112,服务器120包括Mash-up引擎121。在本实施例中,Mash-up编辑器111用于通过交互性的可视化图形操作生成报表的Mash-up定义,Mash-up定义包括直接或间接关联的数据节点和操作符节点,Mash-up编辑器111为Mash-up定义中的各节点分配ID,然后将Mash-up定义保存到服务器120。其中,操作符节点用于运行业务逻辑,数据节点为操作符节点运行相应业务逻辑所需的数据输入以及相应的数据输出。Mash-up编辑器111一次向服务器120请求多个全局唯一的ID,并缓存于本地,当用户每次通过Mash-up编辑器111增加一个节点,Mash-up编辑器111从缓存中取一个ID分配给该新增的节点,直到缓存于本地的ID取完后,Mash-up编辑器111又会向服务器120请求多个ID。Mash-up编辑器111向用户提供了一种可视化编辑界面,让用户方便地实现报表编辑或定制,将报表的实现过程分割为若干个通用的逻辑单元,每个逻辑单元用一个图形节点表示,技术上称为操作符节点(OperatorNode)。将每个逻辑单元的数据输入和输出当作一个数据单元,用图形表示,技术上称为数据节点(DataNode)。将操作符节点和数据节点用有向线段连接起来,形成Mash-up定义(Mash-upDefinition),有向线段的终点代表一个报表。图形节点只是操作符节点或数据节点在Mash-up编辑器111上的可视形式,连线代表其输入输出关系,所有图形信息(如坐标,长宽,颜色等)以XML形式保存。对图形属性的编辑即为对其代表的操作符节点或数据节点属性的编辑,如修改报表颜色、名称和描述等都会反映到其代表的实际节点。操作符节点和数据节点信息最终都在客户端110转换为JSON格式在服务端120与客户端110之间进行传输。图2为通过Mash-up编辑器111编辑的一个报表的Mash-up定义,DN表示数据节点,ON表示操作符节点,DN16和DN18为生成的两个报表,以DN18为例,其所属的Mash-up定义包括操作符节点ON10、ON17,数据节点DN00、DN101和DN18,其中,DN00为ON10运行相应的业务逻辑所需的数据输入,DN101为其数据输出,同时DN101也为ON17运行其业务逻辑所需的数据输入,最后输出报表DN18。以DN18所属的Mash-up定义为例,Mash-up编辑器111为数据节点DN00、 DN101、DN18分配的ID分别为1000、1002、1004,为该定义中操作符节点ON10、ON17分配的ID分别为1001、1003。报表引擎112用于向服务器120发送请求信息,请求信息包括所要请求的数据节点的ID,例如所要请求的数据节点为DN18,请求信息中包括该节点ID为1004。Mash-up引擎121用于查询所要请求的数据节点的ID所属的Mash-up定义,根据查询到的Mash-up定义构建生成所要请求的数据节点的节点序列,执行该节点序列中的操作符节点并将执行结果返回报表引擎112。在本实施例中,Mash-up引擎121根据Mash-up节点序列算法构建生成所要请求的数据节点的节点序列,所述Mash-up节点序列算法包括步骤:A、查询所要请求的数据节点的ID所属的Mash-up定义;B、确定查询到的Mash-up定义中与该数据节点有直接或间接关联的所有节点;C、按照执行顺序将确定的所有节点中的操作符节点构建成生成所要请求的数据节点的节点序列,并将确定的所有节点中的数据节点作为操作符节点的关联引用保存。例如,所要请求的数据节点为DN18,其ID为1004,Mash-up引擎121查询1004所属的Mash-up定义,确定在该定义中与DN18直接或间接关联的所有节点:DN00、DN101、ON10、ON17,然后按照执行顺序构建生成DN18的节点序列为:ON10,ON17。而数据节点DNOO和DN101作为操作节点ON10和ON17的关联引用保存。所谓关联引用是指数据节点与操作符节点之间的引用关系,例如,DN101为ON10的输出,同时为ON17的输入。此构建算法只会返回与所要请求的数据节点相关联的所有直接或间接的父节点序列以及作为关联引用保存的数据节点,最顶层的父节点在队列头部(如ON10),最底层父节点在队列尾部(例如ON17)。其中,在构建的节点序列中的操作符节点可能包括服务器端操作符节点和客户端操作符节点,例如,当所要请求的数据节点为DN18,其所属定义中包括服务器端操作符节点ON10和客户端操作符节点ON17。Mash-up引擎121执行服务器端操作符节点,并将执行结果、包括客户端操作符节点的剩余的节点序列、以及作为剩余的节点序列的关联引用保存的数据节点发送到报表引擎112,报表引擎112执行节点序列中的客户端操作符节点。客户端操作符节点运行的业务逻辑包括根据用户指定条件处理Mash-up引擎返回的执行结果和/或绘制报表。例如,ON17运行的业务逻辑可以是根据用户指定的条件修改Mash-up引擎返回的执行结果,即数据节点DN101,此时,DN18不是报表而是经过修改后的数据。再例如,ON17运行的业务逻辑可以是绘制表格,则DN18即为生成的报表。另外,由于Mash-up编辑器111每个数据节点都分配了ID,所以,所要请求的数据节点可以是在定义中任意位置的数据节点,例如,所要请求的数据节点可以是DN101,此时Mash-up引擎121按照执行顺序构建生成DN101的节点序列为:ON10。数据节点DN00和DN101被关联引用保存。其中ON10为服务器端操作符节点,因此,返回DN101到报表引擎112。图3为Mash-up节点序列算法的实施流程图。首先根据所要请求的数据节点ID查询其所属Mashup定义。初始队列seq用于存放最终需要返回的结果。输入队列inputSeq用于存放下一个循环中需要遍历的节点。当前队列queue用于存放当前遍历的节点,初始化queue时会把当前请求的节点放入此队列。循环遍历queue队列,直到queue为空时,结束遍历,返回seq作为结果。开始循环遍历queue,从queue中出队列一个节点,假设此节点为node,若node是数据节点,则其上一个节点必为操作符节点且是唯一节点(参见图2和表1, node为DN16时,则其上一个节点必为操作符节点,即ON15。生成所要请求的节点所属的定义中作为输入的第一个数据节点到所要请求的节点的方向为从上到下。),假设此时node的上一个节点为nextNode,将nextNode置入inputSeq,设置nextNode与node的输入输出关系(参见图2和表1,若node为DN16时,设置的输入输出关系为:node为nextnode的输出,即DN16为ON15的输出)。最后将inputSeq所有节点置入queue,继续下一个循环。若node为操作符结点,则与其关联为若干操作符节点,所以要循环遍历这些关联的操作符节点,以设置这些关联的操作符节点与node的关联关系,并将这些关联的操作符节点置入inputSeq。此时,由于node是操作符结点,所以要将其置入seq,作为最终结果返回。若node已存在于seq中,则将其设置为队列头部,否则直接将其置入seq头部。最后将inputSeq所有节点置入queue,继续下一个循环。参见图2,若所要请求的数据节点为DN16为例,按照图3所示的Mash-up节点序列算法的计算过程的中间状态表格为:表1节点序列算法计算过程的中间状态表完成初始化工作后,将所要请求的数据节点DN16插入queue中,因此,此时的queue不为空,从queue中取一个节点(即取DN16)并删除该节点,这个过程实际上是将DN16推入堆栈并将DN16从堆栈中推出(POPDN16),此时,生成DN16的节点进入堆栈(即ON15进入堆栈)。下一步,将ON15推出堆栈,ON15的输入节点DN13、DN14进入堆栈,此时得知操作符节点为ON15,其输入为DN13、DN14,其输出为DN16。随后,将DN13推出堆栈,则DN13的输入节点ON11入堆栈,此时得知ON11为操作符节点,其输出为DN13。依次类推,将DN16所属定义中的所有节点推入堆栈又推出,最终确定了生成DN16的节点序列为:ON1,ON5,ON6,ON7,ON11,ON12,ON15。也就是seq中存放的节点。所有与节点序列中的操作符节点关联的数据节点都被关联引用保存,从图3可以发现,这些数据节点没有置入seq的操作。图4为Mash-up引擎121执行服务器端操作符节点的流程图,如图4所示,Mash-up引擎121取得生成所要请求的数据节点的节点序列;创建并运行上下文(context);取节点序列中的下一个操作符节点,判断该操作符节点是否为空,是则结束执行,将执行结果返回报表引擎112,若该操作符节点不为空,则初始化当前操作符节点的输入、输出参数;判断该操作符节点是否为客户端 操作符节点,若是则将执行结果以及包括客户端操作符节点的剩余的节点序列返回报表引擎112,若否则执行该操作符节点,执行后再取下一个操作符节点,直至完成所有服务器端操作符节点的执行。报表引擎112将执行剩余的节点序列,最后一个操作符节点被执行完成即可得到相关报表。本发明的报表生成系统100允许用户或业务人员随意根据自己的需要通过Mash-up编辑器111创建或删除报表,不需要开发人员参与;除平台所支持操作符及数据源外,应用或第三方开发人员可遵循同样的规则实现新操作符及数据源,因此功能及适用范围可以功能扩展。图5为本发明的报表生成系统100第二实施例的系统框图,如图5所示,系统100还包括报表管理器122。报表管理器122用于接收请求信号,对所要请求的最终数据节点的ID所属的Mash-up定义进行合法性验证,若通过验证,则将所要请求的最终数据节点的ID发送到所述Mash-up引擎121;若为通过验证,可忽略该请求和/或提示进行修复。在本实施例中,其余情况与本发明系统100第一实施例相同,在此不再赘述。图6为本发明的报表生成方法第一实施例的流程图,如图6所示,在本实施例中,本发明的方法包括以下步骤:S1、通过设置在客户端110的Mash-up编辑器111生成报表的Mash-up定义,所述Mash-up定义包括直接或间接关联的数据节点和操作符节点,并为所述Mash-up定义中的各节点分配ID,将所述Mash-up定义保存到服务器120;其中,所述操作符节点用于运行业务逻辑,所述数据节点为所述操作符节点运行相应业务逻辑所需的数据输入以及相应的数据输出;S2、通过设置在客户端110的报表引擎112,向服务器120发送请求信息,所述请求信息包括所要请求的数据节点的ID;S3、通过设置在服务器120端的Mash-up引擎121查询所要请求的数据节点的ID所属的Mash-up定义,根据查询到的Mash-up定义构建生成所要请求的数据节点的节点序列,执行所述节点序列中的操作符节点,并将执行结果返回所述报表引擎112。其中,步骤S3包括以下步骤:S3a、Mash-up引擎121查询所要请求的数据节点的ID所属的Mash-up定义;S3b、Mash-up引擎121确定查询到的Mash-up定义中与所要请求的数据节点直接或间接关联的所有节点;S3c、所述Mash-up引擎121按照执行顺序将确定的所有节点中的操作符节点构建成生成所要请求的数据节点的节点序列,确定的所有节点中的数据节点作为操作符节点的关联引用保存;S3d、Mash-up引擎121执行所述节点序列中的操作符节点,并将执行结果返回所述报表引擎112。图7为本发明的报表生成方法第二实施例的流程图,如图7所示,在本实施例中,在步骤S2和S3之间还包括步骤:S4、通过设置在服务器120端的报表管理器122接收所述请求信息,对所要请求的数据节点的ID所属的Mash-up定义进行合法性验证,若通过验证,则将所要请求的数据节点的ID发送到Mash-up引擎121。在本实施例中,所述节点序列中的操作符节点包括服务器端操作符节点和客户端操作符节点,步骤S3d中,Mash-up引擎121执行服务器端操作符节点,并将执行结果、以及包括所述客户端操作符节点的剩余的节点序列发送到报表引擎112。本发明的方法还包括步骤:S5、报表引擎112执行节点序列中的所述客户端操作符节点。在本实施例中,所述客户端操作符节点运行的业务逻辑包括根据用户指定条件处理Mash-up引擎121返回的执行结果和/或绘制报表。在本实施例中,其余情况与本发明的方法的第一实施例相同,在此不再赘述。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。另外,本发明各实施例中的技术特征可以单独使用,也可以组合使用。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1