具体实施方式
概述:
作为组织和企业正常运作程序的一部分,报表的产生、管理、和利用是很普遍的。报表通常被认为是根据预定的分布和预定的格式呈现出的一组数据的集合。在某些情况下,包括在报表生成中的一个或多个操作,其用来在报表数据上进行生成新的报表数据或者是来更好地组织现有的报表数据。例如,轿车销售店可以利用报表来跟踪轿车的销售。存储的数据可以反映出每次销售的的销售代表、轿车型号、和日期。典型的报表可以展示出那个轿车销售店的总的销售额。不需要进行一个单独的对所有的销售的结算来产生总的销售额图并存储起来,所述的报表产生机制能够将结算操作作为报表产生的一部分包括进来。
随着计算技术的出现,报表产生、管理和利用已经变的明显更加容易了。目前,有几种计算应用程序能够帮助多个参与用户产生、管理、和利用报表。通常,这些计算应用程序与数据存储器和/或数据源协同工作来检索所期望的数据。这些数据然后根据预定的分布和格式进行格式化,并被作为一个报表呈现给多个参与用户。在某些情况下,计算应用程序产生的报表将在所述的数据上进行一个或多个中间操作,从而为所述的报表产生新的数据。在大多数情况下,所产生的报表作为具有单一描述定义的离散文件格式而存在。用不同的表述来说,产生报表的计算应用程序通常产生适合于该计算应用程序本身而不是其他协作计算应用程序的数据格式的报表,由此而致使在完全不同的计算应用程序之间实现报表的重新利用是很费劲的。
在这种情况下,由目前的应用程序产生的报表不利于其自身的简单重新利用性和/或互操作性。在大多数情况下,生成一个具有在报表定义上有变化的新的报表比重新利用已经生成的报表更有效。当完全不同的应用程序试着去利用非本地的报表时,复杂性的水平就会增加。例如,一个拥有其自己的本地描述扩展名的第一数据库计算应用程序将首先不得不对由一个拥有第二描述扩展名的第二计算应用程序产生的报表进行转换。所述转换过程可能引入多种错误,包括数据错误,其在某些情况下,能够致使所述报表的不能使用。
而且,报表生成计算应用程序不使用一个独立描述的永久数据格式来存储报表。而目前做法是用一种代表本地描述扩展名的数据格式来存储所述的报表。其中,所述的报表数据不是永久不变的(即,随着存储在数据存储器的数据的变化而变化)。如此,在生成的报表上运行以时间为驱动的查询变得极其困难。用不同的描述来说,就是目前的报表生成计算应用程序不能产生在时间上持续的报表。运行于一个数据存储器上的报表将导致只能反映在报表生成时在数据存储器中的数据值。
本发明的目的是通过提供一种系统和方法来改善现有做法的缺点,所述的系统和方法揭示了一种将具有独立描述的永久数据格式的报表展示为系统化的可查询的数据源。特定地,提供了一个能够根据报表定义来操作数据的典型的计算应用程序。所述的报表定义尤其包括:与要在报表中增加的所期望的数据相关的信息、分布信息、和格式信息。所述的典型计算应用程序根据协作数据存储器的报表定义,对数据进行检索从而增加所期望的。一旦收集到这些数据,所述的典型的计算应用程序为报表数据定义一个图表,并以一种中间数据格式存储所述的报表。所述的中间数据格式是一种独立描述的永久数据格式。这样,所生成的具有一个关联图表的报表被展示为数据源,其具备数据源提供给协作应用程序的所有的好处。而且,由于是作为一种独立描述的永久数据格式被存储,目前的再利用性得到了解决,除此之外,采用现在的系统和方法,在一组生成的报表上进行以时间驱动的查询也更容易执行。
A、典型的计算环境
图1描述了一个适合于实现本发明的计算系统环境100的例子。所述的计算系统环境100只是适合计算环境的其中一个例子,并不是为了表明对本发明的功能性和应用范围的任何限制。该计算环境100也不应该被解释为对在典型操作环境100所展示的任何一个或多个元件的组合的任何依赖和需要。
可以采用多种其它常规用途或特殊用途的计算系统环境或配置来操作本发明。众所周知的适合本发明使用的计算系统、环境和/或配置的例子包括:个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的计算机、机顶盒、可编程的消费类电子产品、网络PC机、迷你计算机、大型计算机以及包括任何上述系统或设备的分布式计算环境等,但并不局限于此。
本发明在一般情况下可以被描述为计算机可执行指令,例如可被计算机执行的程序模块。通常,程序模块包括用来执行特殊任务或实现抽象数据类型的规程、程序、对象、元素、数据指令等。本发明也可以在分布式计算环境来实施,其任务可以通过由通信网络或其他数据传输介质相连的远程处理设备来执行。在分布式计算环境中,程序模块和其他数据可以放置于包括有记忆存储设备的本地和远程计算机存储媒体中。
参考图1,实现本发明的典型系统包括以计算机110形式给出的一般用途的计算设备。计算机110的组件可以包括一个处理单元120、一个系统存储器130、和一个系统总线121,但并不局限于此。所述的总线将所述系统存储器及各种系统组件耦合到处理单元120。所述系统总线121可以是总线结构的几种类型中的任何一种,包括存储器总线或存储器控制器、外设总线、和采用多种总线体系的局部总线。作为例子,但不局限于此,所述总线体系包括工业标准体系(ISA)总线、微通道体系(MCA)总线、增强型ISA(EISA)总线、视频电子产品标准协会(VESA)本地总线、和外围设备互连(PCI)总线(也称之为Mezzanine总线)。
计算机110典型地包括许多计算机可读介质。计算机可读介质可以是任何能够被计算机110访问的有效介质,包括可变和不可变的介质、可移动的和不可移动的介质。作为例子,但不局限于此,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括可变和不可变的、可移动的和不可移动的,其可以用任何方法和技术来实现信息的存储,所述的信息例如可以是计算机可读指令、数据结构、程序模块或其他数据。计算机存储介质包括:RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字通用盘(DVD)或其他光盘存储器、盒式磁带、磁带、磁盘存储器或其他磁式存储设备,或其他任何能够用来存储期望信息并能被计算机110访问的介质,但并不局限于此。通信媒质典型包括计算机可读指令、数据指令、程序模块或如载波或其他传输机制的调制数据信号中的其他数据,还包括任何信息传送介质。“调制数据信号”一词的意思是一种含有一个或多个字符集的信号或者是以这样一种方式进行改变从而在该信号中进行信息编码。作为例子,但不局限于此,通信介质包括有线介质,例如有线网络或直接有线连接,和无线介质,例如声波、射频(RF)、红外线和其他无线介质。上述任何介质的组合也都应该被包括到计算机可读介质的范围之内。
系统存储器130包括以可变和/或不可变形式的存储器存在的计算机存储介质,例如ROM131和RAM132。一个基本输入/输出系统133(BIOS)典型地被存储在ROM131中,该系统包含诸如在启动期间帮助在计算机110中的元件之间传送信息的基本程序。RAM132典型地包含能够被处理单元120很快访问和/或将要操作的数据和/或程序模块。作为例子,但不局限于此,图1示出了操作系统134、应用程序135、其他程序模块136、和程序数据137。
计算机110也可以包括其他可移动/不可移动、可变的/不可变的计算机存储介质。仅仅作为例子,图1示出了一个能够对不可移动、不可变的磁性介质进行读或写的硬盘驱动器140,一个能够对可移动、不可变的磁盘152进行读或写的磁盘驱动器151,和一个能够对可移动、不可变的光盘156进行读或写的光盘驱动器155,例如一个CD-ROM或其他光学介质。其他能够用在所述典型的操作环境的可移动/不可移动的、可变/不可变的计算机存储介质还包括:盒式磁带、闪存卡、数字通用盘、数字录像带、固化RAM、固化ROM等,但并不局限于此。硬盘驱动器141典型地通过一个如接口140的不可移动存储接口连接到系统总线121,磁盘驱动器151和光盘驱动器155典型地通过如接口150的可移动存储接口连接到系统总线121。
上面所讨论的及图1所示出的驱动器以及与他们相关的计算机存储介质为计算机110提供了存储计算机可读指令、数据结构、程序模块和其他数据。在图1中,例如,硬盘驱动器141展示为正在存储操作系统144,应用程序145,其他程序模块146,和程序数据147。值得注意的是这些元素既可以和操作系统134、应用程序135、其他程序模块136、和程序数据137相同,也可以不相同。操作系统144、应用程序145、其他程序模块146和程序数据在这里以不同的数字来至少展示出他们是不同的拷贝。用户可以通过象键盘162和指示设备161那样的输入设备来输入命令和信息到计算机110中,所述的指示设备一般地指鼠标、滚动球或触摸垫。其他的输入设备(没有示出)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星电视天线、扫描器等。这些和其他的输入设备经常是通过一个耦合到系统总线的用户输入接口160连接到处理器120,但是也可以通过其他的接口和总线结构进行连接,例如串行口、游戏接口或通用串行总线(USB)。监视器191或者其他类型的显示设备也被通过接口连接到系统总线121,例如视频接口190。除了显示器,计算机也可以包括其他的外围输出设备,例如喇叭197和打印机196,他们可以通过输出外设接口被连接起来。
利用与一个或多个远程计算机(例如远程计算机180)的逻辑连接,计算机110可以运行在网络环境中。所述远程计算机180可以是个人计算机、服务器、路由器、网络PC、等同设备或其他普通的网络节点,并典型地包括多个或所有的上面所述的与计算机110相关的设备,尽管在图1中只展示了一个记忆存储设备181。所述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是也可以包括其他的网络。这样的组网环境在办公室、遍布企业的计算机网络、企业内部互联网和因特网中是很平常的。
当用在LAN组网环境时,计算机110通过网络接口或适配器170连接到LAN171上。当用在WAN组网环境时,计算机110典型地包括一个调制解调器172或其他能够通过诸如因特网的WAN173建立通信的装置。内置或外置调制解调器172通过用户输入接口160或者其他合适的机制连接到系统总线121。在网络环境下,所述的与计算机110相关的程序模块或其部分可以被存储在远程记忆存储设备中。作为例子,但并不局限于此,图1示出了存储在存储设备181中的远程应用程序185。应该理解到所示的网络连接是示范性的并且也可以使用其他的在计算机间建立通信链路的手段。
B典型的网络计算环境
计算机20a,如上所述,可以作为计算机网络的一部分来应用。通常,前面对于计算机的描述也适用于在网络环境下应用的服务器计算机和客户端计算机。图1A示出一个典型的网络环境,服务器通过网络来和客户计算机进行通信,本发明可以在此得以应用。如图1A所示,许多服务器10a、10b等通过一个通信网络160(其可以是LAN、WAN、企业内部互联网、因特网或其他计算机网络)跟许多客户计算机20a、20b、20c或计算设备,例如移动电话15,固定电话16、和个人数字助理17,互连起来。在网络环境下,所述的通信网络160是因特网,例如,服务器10是网络服务器,客户端20通过许多公知的协议中的任何一种来和网络服务器进行通信,所述的协议,例如,可以是超文本传输协议(HTTP)或者是无线应用协议(WAP)。每个客户计算机20都能够配置浏览器180a来访问服务器10。同样地,个人数字助理17和移动电话15也能够分别配置浏览器180b和180c来显示和接收各种数据。
在操作时,用户(没有示出)可以通过和运行于客户计算设备上的计算应用程序进行交互操作,从而将报表展示为一个可作为系统化可查询的数据源,所述的报表可以存储在服务器计算机并通过在通信网160上的客户计算设备来和协作用户进行通信。用户可以通过与在客户计算设备上的计算应用程序进行交互操作来产生、管理,并操作这些报表。这些处理可以由客户计算设备向服务器计算机进行通信来实现处理和存储。服务器计算机可以作为计算应用程序的主机,以便将报表展示为可查询的系统化的数据源。
这样,在具有用来访问网络并与网络相互作用的客户计算设备和与客户计算机进行相互作用的服务器计算机的计算机网络环境中,可以利用本发明。然而,这里所描述的系统和方法可以用多种基于网络的体系来实现,而并不局限于例子所展示的。这里所描述的系统和方法将会通过参考目前展示性的实施方式来更具体地进行描述。
C.作为数据源的报表
图3示出了一个典型报表生成和管理系统的典型的示范性的体系,所述管理系统用于展示示一个报表。如图所示,典型体系300包括报表服务器320。报表服务器320进一步包括报表处理引擎325、分析业务引擎330和报表中间格式335。所述的报表中间格式335进一步包括数据345和图表340。最后,典型体系400包括报表阅读器/浏览器305和OLEDB/ADO310。在操作时,报表服务器320生成在报表数据345上操作的图表340。所述报表服务器320产生报表中间格式,该格式是具有独立描述的永久数据格式。所述中间数据格式能被报表服务器320用来通过305来显示所生成的报表。在这种情况下,中间数据格式335由报表服务器320的报表处理引擎325处理,从而在报表阅览器/浏览器305上显示该报表。所述中间格式也可以被报表服务器320使用,从而通过使用OLEDB模块310的分析业务引擎330将所生成的报表传达到协同运作的环境。
由于报表具有了系统化的中间格式,其看起来和用起来象是协作环境和协作计算应用程序的一个数据源。
D.可查询的和系统化的报表
图4示出了在报表产生和管理系统之间的典型数据流程,所述系统将报表展示为系统化可查询的数据源。如图所示,报表产生和管理系统400包括各种用来将报表展示为系统化可查询数据源的元件。明确地讲,报表产生和管理系统400包括报表处理模块420。如图所示,报表处理模块420与报表定义415进行合作并从外部数据源405和410接收数据来产生存储在中间格式425的报表。
在操作时,一个或多个协作环境可以请求一个生成的报表。在这种情况下,存储在中间数据格式的报表被传达到一个事件处理模块430,该模块整体或部分调整与请求环境的产生的报表通信。事件处理模块430确定所述请求环境的描述并以对该请求环境来说属于本地描述扩展名的格式提供整体或部分报表到该请求环境。例如,如果需要HTML描述,就使用HTML描述扩展名435。相比而言,如果需要XML描述,就使用XML描述扩展名440。如此等等,这样其他的描述可以通过其他的描述扩展名445来代表。
图5示出了一个典型的报表产生和管理系统500的示范性的高级配置。如图所示,报表产生和管理系统500包括报表处理模块525。报表处理模块525包括数据扩展名525和描述扩展名530。进一步,报表处理模块与报表定义510和数据源505进行协同运作。在运行时,向报表处理模块525请求一个报表。报表处理模块525从应用程序的报表定义字段510中获得合适的报表定义,所述应用程序用于数据源505中的数据建立。然后,利用数据扩展名535从数据源505识别数据元素,报表处理模块525处理所述的数据。然后,报表处理模块525根据适合的报表定义处理所述的数据来产生一个报表。该报表被展示为一个系统化的可查询的数据源。所述的报表然后被所述报表处理模块525存储在中间格式520供将来使用。
除了产生报表之外,报表产生和管理系统500还可以不用考虑请求环境所必需的描述来将产生的报表传达到协同工作的环境中。例如,可以使用报表产生和管理系统500来将一个已生成的报表传达到协同工作环境。在这种情况下,所生成的存储在中间格式520的报表被报表处理模块525检索并利用描述扩展名530进行处理从而产生可以被请求环境接受的描述格式的报表。
图6示出了一个典型的报表产生和管理系统的更具体的示范性配置,该系统能够将报表揭示为具有独立描述的永久数据格式的数据源。所示的报表产生和管理系统600包括一个报表服务器605,报表服务器605进而包括映射模块610,报表处理模块615和查询处理优化/执行引擎625。报表服务器605与各种协作元件协同工作,所述的协作元件包括但并不局限于报表用户接口(UI)630、报表定义650、一个第二报表服务器635、分析业务(AS)数据提供器640,和枢轴控制元件645。
当产生报表时,报表服务器605和报表定义650协作来为所期望的报表获得合适的报表定义。然后由报表处理器605的报表处理模块615来处理所述的报表定义。报表服务器605利用合适的报表定义收集合适的数据并产生代表所期望信号的系统化的可查询的数据源。然后由报表服务器605在该报表用户接口UI630上显示所述的报表。在这个预期的操作中,报表服务器605的报表处理模块615和映射模块610协同工作来映射在报表用户接口UI630上阅读和显示的所期望的报表。
在操作时,报表产生和管理系统600可以支持许多操作和功能。例如,一个报表可以在一组已经生成的报表上运行。如图6所示,通过箭头,对于一个报表之上的报表的请求被提供给报表服务器635。所述的报表服务器635处理该报表之上的报表请求并与AS数据提供器模块协同工作来完成该请求。进而,AS数据提供器640和查询处理优化/执行引擎625协同工作。该引擎与报表处理模块615协同工作来获得/产生必需的数据来满足该报表之上的报表请求。相似地,在报表上的一个OWC请求是进而由枢纽控制模块645的一个典型,所述枢纽控制模块645依次与AS数据提供器640协同工作来完成在该报表请求上的OWC。
另一个报表产生和管理系统600的用法是允许多个参与用户阅读源于远程协作环境的报表UI630上的报表。在这种情况下,所述的报表UI630与报表处理模块615协同工作。报表处理模块615与映射模块610协同工作。映射模块610将数据从一种格式转换为另一种。这样,它就可以用来将数据从独立描述的数据格式转换为用于请求环境的从属描述数据格式。然后该映射模块610与查询处理优化/执行引擎625协同工作来与一个或多个协作模块进行通信。
应该理解到在所考虑的实施方式中的报表服务器605可以包括任何的计算硬件、计算软件,以及计算硬件和计算软件的组合。
图7示出了一个将报表展示为一个系统化的可查询数据源的典型处理和后续的利用此已展示报表的处理流程图。如图所示,处理从块700开始并运行到块705,在此获得报表定义。在块710,根据获得的报表定义来为该报表创建一个图表。然后在块715获得所述的报表数据、并在块720中将在由在块710中创建的所述的图表应用到所述的报表数据。所述的系统化的报表在块725中存储为一种中间格式(根据图8A和8B所描述的处理过程)。从那儿继续运行到块730,在块730中通过执行一个检查从而确定是否已经请求了一个报表(例如。由本地环境或者协作环境所请求的)。在所提供的例子中这些情况中,环境包括计算环境和局部计算环境中的任何一种。如果一个报表已经被请求,则处理继续运行到块735,在这里数据扩展名被应用到所述的报表并且数据扩展名是在块740中提供的。在一个预期的说明性的实施方式中,所述的数据扩展名被应用到该报表的数据中来协助识别该数据段的定义。所述的描述扩展名,如上面所描述的,被用来将所用的报表转换成使用该报表的环境的描述格式。然后为了在请求该报表的环境中进行显示,在块745中对该报表进行描述。然后在块750中结束处理。然而,如果,在块730中没有请求一个报表,则处理过程就继续运行到块750并结束。
E.独立描述的永久信息
图8A示出了一个典型的处理流程,该处理用来提供一个以独立描述的永久数据格式展示的报表。如图所示,处理过程从块800开始并继续运行到块805,在这里获得所展示的系统化可查询的报表的报表图表。然后处理过程继续运行到810,在这里识别所述独立描述的永久数据格式。在一个说明性的实施方式中,所述的独立描述的永久数据格式包括一个二进制数据格式。在运行到块810时,用这里与例子所提供的方法描述一致的处理过程预测所述图表的二进制表示。进一步对所提供的例子来说,处理过程继续运行到块815,在这里,所识别出的二进制图表被应用到所期望的报表中,从而将所述的系统化报表转换成一个二进制数据格式。然后处理过程继续运行到块820,在此,将产生的二进制表示作为中间数据格式,该格式中可能存在所展示的报表。然后处理过程在块825中结束。
图8B示出了一个当为了在请求环境中使用由协作环境处理请求来整体或部分上检索揭示的报表时所进行的典型处理流程。如图所示,处理过程在块830开始并继续运行到块835,在这里所期望的报表(整体或部分)被请求并被以它的中间格式来提供(例如,独立描述的永久数据格式)。从那儿开始,处理过程继续运行到块840,在这里所述的中间格式,独立描述格式转换成一种从属描述格式,也就是,请求环境的描述格式。在一个说明性的实施方式中,转换步骤关注从所述报表图表转换到所述请求环境的扩展名的具体格式的二进制转换。在块845,系统化报表和附随的数据被释放以请求环境的描述扩展来表示。然后最终的报表在块850中给出。处理过程在块850中也结束。
图9示出了一个当在一组生成的报表上进行基于时间的查询时的典型处理流程。如图所示,处理过程在块900开始并继续运行到块905,在这里给出了所期望的快照阅读的参数。从那里开始,处理继续进行到块910,在这里系统化可查询报表被作为数据源来处理。然后在块915,数据被根据所提供的参数从该组生成的报表中进行合计(例如,从第一年到第二年的所有销售额中收集在中西部地区的从第一年到第二年的所有销售额)。所汇总的数据然后在块920中被收集并进行处理,从而提供具有所期望的快照数据的一个新的系统化的可查询的报表。处理进程到块925结束。
在图9A中所描述的处理过程使用了这里所描述的系统和方法的一个或多个特征。具体讲,这里所描述的系统和方法考虑到一种将具有独立描述的永久数据格式的报表展示为系统化可查询的数据源的机制。由于所述的报表系统化,可查询,并持久,所以当数据被从基于报表图表识别出的时间上收集起来时,基于一组这样的报表进行基于时间的查询(例如,趋势快照)是容易的。由于所述的报表是以永久的数据格式进行存储的,因此其值是可靠的。
F.结论
正如上面所提到的,当本发明的典型实施例已经结合各种计算设备和网络结构描述过之后,下面的概念就可以适用于任何的计算设备和系统,在其中据此进行仔细研究和/或进行其他的功能是所希望的,上面所述的处理过程和系统可以适用于各种应用程序和设备。虽然这里选择了典型数据结构、编程语言、名称和例子作为各种选择的代表,但并不是为了进行限制。
这里所描述的各种技术可以结合硬件或软件或,适当的时候,两者的结合来实施。这样,本发明所述的方法和装置,或者其某一方面或部分,就可以采取潜入到实体介质中的程序代码的形式来实现,例如软盘,CD-ROM,硬盘,或任何其他的机器可读的存储介质,其中,当程序码被加载并被一个机器执行时,例如一台计算机,该机器成为实现本发明的一个装置。在可编程的计算机上执行程序代码的情况下,该计算设备通常包括一个处理器,一个可以被该处理器读取的存储介质(包括可变的和不可变的记忆和/或存储元件),至少一个输入设备,和至少一个输出设备。可以利用本发明的调试界面,例如,通过使用数据处理API等来在高级程序或面向对象的编程语言来完成一个或多个程序来和一个计算机系统进行通信。然而,如果希望,所述的一个或多个程序能够以编译或机器语言来完成。无论如何,所述的语言可以是汇编的或解释语言,及与硬件实现相结合。
本发明的方法和装置也可以通过包含程序代码形式的通信来实施,所述的程序代码在一些传输介质上进行传输,例如在电线或电缆上,通过光纤,或通过任何其他形式的传输形式,其中,当所述的程序代码被接收和载入并被一机器执行时,例如EPROM,门阵列,可编程逻辑器件(PLD),客户计算机,视频录像机等,或者一个具有在上面典型实施例中所描述的具有调试能力的接收机器成为实现本发明的一个装置。当在一个一般目的的处理器上完成时,程序代码和处理器结合来提供能够调用本发明的功能性的唯一装置。此外,与本发明结合使用的任何存储技术可以总是硬件和软件的组合。
尽管本发明已经结合优选实施例进行了描述,应该明白也可以使用其他的相似的实施例或在不背离本发明的情况下对实现本发明同样功能的所描述的实施例进行修改或增加。例如,一个本领域的熟练技术人员能想到在本申请中所描述的本发明可以应用到任何的计算设备或环境,无论时有线或无线,并可以被应用到任何数量的通过通信网络连接起来的这样的计算设备。进一步,应该强调的是多种计算平台,包括手持设备操作系统和其他应用程序的特定操作系统是应当被考虑到的,尤其由于无线网络设备的数量持续增长。更进一步,本发明可以在或遍及许多处理芯片或设备上来实施,并且存储同样可以在许多设备上实现。因此,本发明不应该被限制为任何单一的实施例,而应该被解释为与所附的权利要求一致的的范围。