首页> 中国专利> 包括表、矩阵和混合设计的灵活报告设计的系统和方法

包括表、矩阵和混合设计的灵活报告设计的系统和方法

摘要

报告的列和/或行可被声明性地定义为动态或静态。声明性的定义可由任何标记来表示。如果列或行被声明性地指定为动态,则它可被扩展成多个列或行。如果列或行被指定为静态,则它仍为单个列或行,以仅仅表现出规定的列或行数据。列和行的子组也可被声明性地定义为动态或静态。静态列或行可不包含子列/行,或可包含多个静态列/行、多个动态列/行、或两者的任意组合。类似地,动态列或行也可包含上述组合。

著录项

  • 公开/公告号CN1713181A

    专利类型发明专利

  • 公开/公告日2005-12-28

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN200510074014.9

  • 发明设计人 C·A·海斯;J·D·卡尔森;

    申请日2005-05-23

  • 分类号G06F17/30;G06F17/24;

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人张政权

  • 地址 美国华盛顿州

  • 入库时间 2023-12-17 16:50:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-08

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20090121 终止日期:20190523 申请日:20050523

    专利权的终止

  • 2015-05-13

    专利权的转移 IPC(主分类):G06F17/30 变更前: 变更后: 登记生效日:20150421 申请日:20050523

    专利申请权、专利权的转移

  • 2009-01-21

    授权

    授权

  • 2007-08-22

    实质审查的生效

    实质审查的生效

  • 2005-12-28

    公开

    公开

说明书

技术领域

本发明涉及生成报告,尤其涉及用于创建可在计算机化的过程中由数据填充的报告设计的技术,其中该技术不但考虑了报告设计中的灵活性,也考虑了生成和理解设计的简明性。

背景技术

在任何企业中,关于其诸方面的数据随时被累积。该数据可用于报告企业的状态。例如,就销售企业来说,可关于项目的每次销售累积销售数据,包括销售员、消费者、销售员的区域、消费者的区域、销售量、售出的项目的量、销售日期、售出的项目的递送日期等等。根据这些销售数据,随后可能的是生成按年、按月、按消费者按年、按项目按季度、按销售员按递送日期、按区域按星期等等详细描述销售的报告。

填充报告的数据一般将累积在数据库中。如这里所使用的术语数据库是用于数字化的记录数据的仓库。为了将数据库中的数据过滤成用于报告的适当组织的列和行,报告设计者可在报告设计中定义希望得自于数据库的特定数据。例如,报告设计者可规定他希望在报告的第一列中为“销售者姓名”。

报告设计者随后可编写程序,该程序识别对报告设计的第一列(销售者姓名)指示出的字段、查询数据库中所有的销售者姓名、以及将他们一个个地放置在报告的第一列中。作为编写其自己的程序来执行该任务的替代,报告设计者可使用提供该功能的商业软件。这些软件可允许报告设计者在报告设计中简单地规定他希望存在于第一报告列中的数据类型。商业软件随后将自动地分析报告设计、查询数据库、以及将所希望的数据放置在报告的第一列中。在用于任何数量的列或行的报告的商业产品中,该操作也是可行的。

图2例示出一个示例性的报告设计。该示例性的报告设计提供了销售者列201、1990销售列202、以及总销售列205。该报告设计可提交给能够从数据库中抽取对应的数据以填充实际的报告的支持软件。图3给出了这样一种实际报告可能表现出的样子。图3示出了经填充的销售者列301、经填充的1990销售数据列302、以及经填充的总销售列305。

图5中描述了用于用适当的数据填充报告设计的示例性报告处理软件。报告处理软件510可包括用于适当地解释存储于多个数据源520和521中的任何一个的数据的多个数据扩展(data extension),其中数据源可以是例如数据库。报告处理软件还可包括若干翻译扩展(rendering extension),以便以适当的文件格式正确地输出报告,文件格式例如超文本标记语言(HTML)530、可扩展标记语言(XML)531、或者某些其它文件格式532。报告设计500在这里也被称作为报告定义,它由报告处理软件使用来从数据源520、521收集数据,将数据编译成适当结构化的报告,以任一文件格式530、531、532来输出报告。该处理在通过被引用而完全结合于此的美国专利申请10/400,734中有更为详细的描述。

不同的报告是设计用于不同的数据类型和数据量。虽然某些报告是相当简单地,但是其它报告给出多种类型的数据,并可表示出数据之间的复杂关系。对于公共数据关系的一个例子,参考图1,第一列中的单独的一个字段(例如Acme 101a)可与第二列中的若干字段(例如102a、102b和102c)相关联。为此,报告处理软件必须能够定位报告的各种字段中的数据。Bob的折扣店(Bob’sDiscount)101b不能出现在紧接着Acme 101a之下的一个单元中;相反,Bob的折扣店101b必须设置于视觉上对应于Bob的折扣店数据,例如102d、102e、102f。从而,报告处理软件必须以比简单地将数据集中于列和行中更为智能的方式来填充报告。该例子是报告设计中的潜在复杂性的一个小的尝试,本领域的技术人员将理解到其全部范围。这里应该强调的是,虽然实际报告的外观看上去是简单的,但是利用商业软件支持报告设计的技术却是不简单的,因为所希望的设计具有多样性,以及需要精确地填充以各种不同方式设计的报告。

虽然报告设计者可总能够创建定制的计算机程序来适当地填充某一特定的报告,但是许多报告设计者并不具备编写这种定制程序的专门技术或希望。此外,编写这些计算机程序对于报告设计者来说可能是浪费时间。因此,常常呼吁报告设计者凑合着使用商业软件产品提供的可利用的计算机程序,或者花费可观的时间来创建用于定制报告设计的计算机程序。因此,对于商业报告设计软件来说,报告设计中的灵活性是所希望的属性。如同所有软件一样,简单性也是所希望的属性,因为用户能够更为容易地访问可容易理解的特征。

由于上述情况,呼吁商业软件公司提供实际上可适应的各种报告设计的报告设计软件。这可能是困难的任务。如果做得好,该任务包含一种用于规定报告设计的容易理解的技术,它既是灵活的又是高度精确的,允许设计者传送用于报告的数据的内容和布局。传统上,通过为报告设计提供两种主要的选项:表和矩阵,已经解决了该任务。

下面连同附图1和4的简单讨论将指出传统的表报告设计和矩阵报告设计的优点和局限。首先,图1示出可使用表设计生成的报告的某些典型特征。如图1所提示的那样,表设计允许报告设计者仅使用固定的列。这些被称为是静态列104。换言之,报告设计者使用表设计能够按需规定用于消费者101、年份102、销售103等等的列,以包含用于报告的所有希望的数据。

相反,表的行可以是动态的。例如,参考动态行105。这些行105可以按需扩展以足够呈现出更多或更少量的报告数据。例如,参考动态行105:随着时间的进行,可扩展报告的年102a和102b,以便百报告年2003和2004。可添加额外的行来为报告中的这些行提供所有对应的数据。这允许报告设计者年年重复使用单个报告设计,或者使用相同的报告设计来呈现出变化的范围的数据。

表报告设计还可包括页眉行和页脚行。在图1中,规定例如消费者101、年102和销售103的列名称的顶部行是页眉行。规定销售的总计101c的底部行是页脚行。页眉行和页脚行中的每一个都包含与非页眉/页脚行的数据类型不同类型的数据的单元,并且通常在这些行中汇总数据。

表报告设计还可包含嵌套组,每组具有页眉行和页脚行。图1通过为消费者101a和101b给出嵌套的页眉和页脚行来例示出该特征。仅具有Acme101a的行和仅具有Bob的折扣店101b的行都是页眉行。包含小计102c和102f的行是页脚行。同样,这些嵌套的页眉和页脚行101a、101b、102c和102f中的每一个都包含与非页眉/页脚行不同的信息。

最后,表报告设计能够规定最内部的组内的细节行。表设计的该方面没有在图1的实际表中表现出。这种细节行的一个例子是例如:如果对于Acme的2001年销售103a来说希望额外的数据,可以在报告设计中规定一细节行,它将额外信息插入于指示出Acme的2001年销售103a的一行下面的一行中。

总而言之,根据本领域的当前状态,使用表设计的报告设计者能够规定固定的或静态的列,以及静态的或动态的行。任何数量的页眉和页脚行也都是可行的。处理报告设计的软件随后将把所有规定的数据置于适当的列和行中。对于动态行,可按需要生成行,以容纳数据。

连同商业上可用的报告生成软件,报告设计者可用的其它设计选项是矩阵。图4给出了暴露出这样一种设计的特征的示例性矩阵。如可从图4的实际报告推测出的那样,用于矩阵的报告设计允许动态列450。包含用于2001(401)和2002(402)的每年的销售数据的列可按需得到补充用于其它年份。例如,如果数据可用于2003和2004,则这些数据可被自动地添加到报告中,而不需要在报告设计中为这些年份规定额外的列。矩阵中的每个列组可包含页眉430和页脚430。然而,注意到,矩阵的动态列虽然比表设计具有优点,但是它并不具有报告设计中所希望的更多的灵活性。例如,使用当前的商业报告设计软件,动态列450不能包含嵌套的动态列。虽然能够根据每种不同的情况编写定制程序来实现这个目的,但是生成这种定制程序对于报告设计者来说是难以克服的障碍。

矩阵报告设计还允许静态和动态行,例如470和460。在图4中,提供页眉440用于例如2001(401)、2002(402)和小计(403)的列名称。对应于零售和批发部分的行组并未被提供行页眉和页脚,但是这是可以提供的。提供页脚行470用于总数422数据。元素404和423是动态行组460的实例。就这一点而言,在报告设计中,可把矩阵中的一个或多个行规定为动态行。当与数据相结合时,这种动态行可扩展以容纳可用的数据。在图4的例子中,可用的数据显然包含零售404和批发413数据。然而,注意到动态行460仅包含静态嵌套行461。本领域的当前状态不允许静态和动态行的任何数量的进一步组合,而这可能是报告设计中所希望的。

总而言之,矩阵考虑到用若干固定行或可由行页眉和页脚进一步描绘的简单的动态行来表现报告数据。静态和动态列可按需用于显示数据。动态列/行还可进一步由页眉和页脚列来描绘,以便在报告中提供其它相关信息。

因此,表和矩阵报告设计都提供了某些有用的特征,但是它们受限于允许报告设计者规定报告的特征的方式。用于报告设计的更为灵活的同时又便于理解的格式将通过允许可通过标准化的商业软件容易地实现的更宽范围的设计来改进报告,所述标准化的商业软件不要求定制的附加物来适当地呈现报告的数据。

根据支持报告设计的领域的当前状态,至今还没有认识到在对希望用于数据的表示的各种报告设计的支持中提供额外的灵活性和简便性的需要。

发明内容

提供了用于设计报告的系统和方法。可把报告的或报告的某一区域的列和/或行声明性地定义为动态或静态。可用任何标记来代表声明性定义。例如,可把方括号、文本字体、文本颜色、某些其它标记、或者它们的不存在指定为声明。如果声明性地将列指定为动态,则它可被扩展成多个列或行。这种扩展可按需用于容纳用于报告设计的数据。如果把列或行指定为静态,则它保持为单个列或行,以仅仅表示规定的列或行数据。

此外,根据报告设计者的需要,还可声明性地把列和行的子组定义为动态或静态。静态列可能不包含子列,或它可包含多个静态列、多个动态列或两者的任意组合。类似地,动态列也可包含任意数量的静态列、任意数量的动态列、或两者的任意组合,这指示出在扩展时,每个动态列将包含指定的子列。这同样适用于行。

附图说明

图1例示出可使用表报告设计生成的报告。用于这种报告的表报告设计以静态列、动态行、以及任意数量的行页眉和页脚为特征。

图2例示出示例性报告设计。该设计指示出具有三列的报告。当报告处理软件处理时,生成填充有数据的实际报告。这种实际报告的例子在图3中给出。

图3例示出由假象的报告处理软件使用图2的示例性报告设计生成的实际报告。该报告处理软件已经收集了对应于图2中指定的列的数据,并将数据放置在列中。

图4例示出使用矩阵报告设计生成的报告。用于这种报告的报告设计以具有列页眉和列页脚的动态列、以及可能的具有行页眉和行页脚的动态行为特征。注意,仅静态行461嵌套于动态行460中。

图5例示出用于将报告设计与数据结合以生成实际报告的过程。报告处理软件确定报告设计所要求的数据,从数据源收集合适的数据,填充实际报告,并输出实际报告。可使用数据扩展来理解来自数据源的数据,同时,可使用翻译扩展来以请求的文件格式生成实际报告。

图6例示出实施本发明的设计技术的一般化的报告设计。

图7例示出使用本发明的各种技术提供关于每年的和区域性的销售的报告的示例性报告设计。

图8例示出可使用图7的设计生成的实际报告。

图9例示出适用于连同本发明的各方面一起使用的示例性计算环境的最基本的属性。

图10例示出使用提供的各种设计技术中的某些技术生成的报告。图10是可从诸如图11之类的报告设计生成的报告的例子。

图11例示出将某些列、行、子列和子行声明为动态或静态的示例性报告设计。可从这种设计生成的示例性报告示于图10。

图12例示出图11的报告设计中的各种项目的内容类型。报告设计中的列、子列和子行可被声明为动态或静态,以产生诸如图10之类的报告。

具体实施方式

在下面的说明和附图中提出了某些特定细节,以给出对本发明的各种实施例的全面理解。然而,在下面的揭示中,并未给出通常与计算和软件技术相关联的某些已知的细节,以便避免对本发明的各种实施例造成累赘。此外,相关技术领域的技术人员将理解到他们能够在不用下面描述的一个或多个细节的情况下就能够实践出本发明的其它实施例。最后,虽然参考下面揭示中的步骤和顺序描述了各种方法,但是这种说明仅仅是用于提供本发明的实施例的清楚的实现方式,不应把各步骤和步骤顺序看作实践本发明的要求。

报告是数据的汇编,用于在可视表面上以列和行来显示。报告中的数据可以是任何数据。典型的报告可包括用于企业的金融数据,例如各种产品的销售的收入总和、与各种产品相关的支出、与各种产品相关的利润等等。其它报告可包括消费者信息,例如姓名、包括电话号码、地址和电子邮件地址的联系信息、以及产品偏好、一年的总购买数、专门折扣店等等。报告还可用于通过汇编雇员姓名、工作的小时数、完成量、计划的休假期、特殊需求等等,来跟踪雇员。这些例子仅仅是可包含于报告之中的可能数据的非常小的一个子集。人们可能希望关于任何努力汇编的任何数据都可置于报告之中。实际报告的进一步的例子在图1、图3、图4和图8中给出。附图中的报告显示出数据比典型的报告的稍微少一点,这是为了简化说明。更为典型的报告可包括数十个、数百个或数千个行和列,以供显示报告的所有数据的需要。

报告可被划分成区域,可根据不同的报告设计来设计报告的不同区域。此外,单个报告设计可规定报告中的遵循不同设计的各种区域。报告的该特征在美国专利申请10/400,734中有更为详细的阐述。出于本文档的目的,术语报告应被解释成表示整个和完整的报告,或者满足设计选择的同类组的报告的区域。

报告设计是报告的模版,用于显示出什么数据将被显示在实际报告中,以及数据的布局。报告设计可包括采用诸如XML或HTML之类的适当的计算机可读语法的计算机可读指令集。报告设计的该实施例的例子在下面的说明中给出。这种设计还可图形化地具体体现在例如图10中,图10是这里所给出的计算机可读指令集的图形化实施例。在图形化表示的报告设计的情况下,报告设计软件一般用作为提供报告设计参数和生成报告定义文件的辅助工具。

报告设计软件一般使用GUI用于图形化地表示报告设计。例如,报告设计软件可在计算机屏幕GUI向设计者呈现若干空的列和行。设计者可使用鼠标或其它控制设备来选择各种列和行中的任何一个。设计者随后可通过从多个菜单选项中进行选择输入报告所希望的数据,或者可借助于通过利用键盘输入直接键入识别信息来识别数据来输入数据。报告设计者使用各种输入设备输入的信息可随后存储于报告定义文件中。该文件提供了报告设计者所创建的报告定义的紧凑表示,并可采用任意文件格式,例如XML、HTML、.txt、.doc等等。

简单的报告设计可指示出表的多个列,例如图2。不管是直接生成的还是利用报告设计软件的帮助,报告设计都可由报告处理软件通过用适当的数据填充报告数据中所指示出的适当的列和行来生成实际报告。报告处理软件包括用于汇编报告的任何软件。适用于本发明的其它方面的报告处理软件的某些一般概念示于图5。这种软件510执行查询数据源520、521的功能,以检索报告设计或报告定义500中所规定的数据。可使用一个或多个数据扩展511来适当地解释来自数据源520、521的数据。软件510随后将检索出的数据汇编成报告定义500所规定的布局。使用一个或多个翻译扩展可把输出报告翻译成任何文件格式,例如530、531、532。本领域的技术人员将认识到诸如支持面向对象编程的语言中创建的对象之类的单独的软件组件可用于执行报告处理软件510的各种功能。

图6中例示出的实施例意图给出本发明的许多方面,以清楚地进行阐述。例示出的报告设计并不是使用这里所揭示出的技术作出的唯一报告设计。相反,本发明的技术支持灵活的报告设计,适用于报告设计者可能希望的无限种类的报告。图6的示例性设计是有用的,因为它说明了报告设计的许多潜在的特征。然而,实际上,图6的设计可能有点不实用。可使用图6的某些特征而不实用其它特征来生成一个简单的可理解的报告。因此,图6更多地是作为本发明的诸方面的说明,而不是使用本发明的一个具体的实践例子。针对于现实报告的更多的实际实施例,使用本发明的技术的其它报告设计示于图7和图11。图11的代码版本在本说明书中给出。

如图6所示,使用本发明的诸方面所提供的技术,可把列和行声明性地定义为动态或静态。在图6中,方括号[]用于声明性地把列或行定义为动态,而没有方括号则是用于声明性地把列或行定义为静态。声明的目的至少是两个方面:首先,它允许报告设计者容易地看到哪些列和行是动态的,哪些是静态的。其次,它可由报告处理软件用来识别哪些列和行是静态的,哪些是动态的,以用于用数据填充报告。

本发明的各种实施例中,可在可扩展标记语言(XML)模式(schema)或XML文档类型定义(XML Document Type Definition)中将用于把列或行识别为动态或静态的一个或多个声明标准化。这允许报告设计者使用标准化的声明,并确保他们的设计将由被指示用于识别这些声明的报告设计软件适当地处理。例如,如果把方括号[]定义为XML模式中的一个识别动态行或列的属性,则报告设计者可把方括号[]置于那些他们希望成为动态的行或列中,并且报告处理软件将如此地解释那些动态行和列。没有方括号[]的行和列将不被识别为动态,并因此按默认方式被识别为静态行和列。

声明可以是任何标记。如发明内容部分所简单讨论的那样,这种标记可以是方括号、文本字体、文本颜色、某些其它标记、或没有这些标记。此外,文本点大小、存在诸如星号*或字母(D)之类的特定符号、或对诸如“动态”或“静态”之类的识别单词的使用,都可用于将行或列声明为动态或静态。本发明不限于用于声明性地把列或行定义为动态或静态的特定标记。相反,本发明包括对任何声明的,来在报告设计中把列或行定义为动态或静态。

报告的列是相关报告数据所位于其中的垂直带。列可由列的顶行中的列标题来标识。列可划分成列的子组,列的子组还可被进一步向下划分成子组。因此,用于“汽车”的第一列可被划分成FORD_(福特)和TOYOTA_(丰田)子组。这些列中的每一列可进一步被划分成型号子组,例如FORD_列中的FOCUS_、TAURUS_和BRONCO_,以及TOYOTA_列中的CAMRY_、COROLLA_和TERCEL_。这些型号列中的每一个可进一步被划分成颜色列,如红色、蓝色和绿色。列的进一步划分可按需继续进行到任何级别的子组划分。这一概念在图6中表现出,例如,列600被划分成列603、604、605、606和607。列607被进一步划分成列613和614。这些列的每一个,不论是上层列还是在某一级别的子组划分中存在的列,在这里都被成为是列。在需要的情况下,术语子组列、嵌套列等等将被用于指示出列的适当特征。

类似地,报告的行是相关报告数据所位于其中的水平带。行可划分成行的子组,行的子组可进一步向下划分成任何级别的子组。因此,用于“汽车”的第一行可被划分成FORD_(福特)和TOYOTA_(丰田)子组。这些行中的每一行可进一步被划分成型号子组,例如FORD_行中的FOCUS_、TAURUS_和BRONCO_,以及TOYOTA_行中的CAMRY_、COROLLA_和TERCEL_。这些型号行中的每一个可进一步被划分成颜色行,如红色、蓝色和绿色。行的进一步划分可按需继续进行到任何级别的子组划分。这一概念在图6中表现出,例如,行650被划分成行652、653、654和655。行653被进一步划分成行658和659。这些行的每一个,不论是上层行还是在某一级别的子组划分中存在的行,在这里都被成为是行。在需要的情况下,术语子组行、嵌套行等等将被用于指示出行的适当特征。

在生成实际报告时,报告处理软件将不把诸如图6所示之类的在报告设计中声明为静态的列或行扩展成多个列或行。重新参考上述声明性定义的讨论,可通过任何标记或没有标记来将列或行定义为静态。考虑图6的列602,该列已通过没有方括号[]被声明为静态列。该特征暗示出当从图6的设计生成实际报告时,将仅有一个静态列602。

例如,假设指定列602列出雇员的主要的电子邮件地址。每个雇员仅具有一个主要的电子邮件地址。数据库中还可以存在其它的电子邮件信息,例如第二或第三电子邮件地址,但是这些地址并非报告所需。为了实现这个目的,可标识静态列,例如列602,可把列的内容标识为“主要的电子邮件地址”。从这种设计生成实际报告的报告处理软件将从数据库中检索主要的电子邮件地址,并将它们置于列中。它将不试图检索其它电子邮件地址或生成实际报告的其它列来容纳其它的电子邮件地址。

关于静态列602所讨论的原理同样适用于静态行。静态行不会由报告处理软件扩展成多个行。考虑静态行657。可把该行标识为包含诸如“主要的产品ID”之类的信息。数据库中可能存储了用于各种产品的多个产品ID,但是这些ID并非实际报告所需。该行是静态行,从而将不会生成多个行以传达各种产品ID。

相反,报告设计中声明为动态的列或行,例如609,可按需被复制以容纳用于规定的列或行的所有可用数据。考虑列615,该列被声明性地定义为动态列。报告设计者可能已确定数据将加入可能跨越多个列的报告中。然而,所需的列数是未知的,或可变的,或可能仅仅是太大以至于输入报告设计中的所有这些列将是繁重的工作。在这些情况下,报告设计者可规定动态列615。该列可由报告处理软件自动地将其扩展成多个列。这种扩展可按需进行,以便容纳对动态列规定的所有数据。

例如,如果指定列615用于每年的销售数据,可能存在已知这种数据的众多年份,并且,随着一年又一年,将有额外的数据添加到数据库中。报告设计者可以规定有名的动态列,例如[每年销售],而不是规定所希望的数据的每一年的静态列。报告设计者可进一步规定某一范围的所希望的数据,例如1990至2001,或者规定符合描述的所有可用数据都是所希望的。报告处理软件在从图6的设计生成实际报告时,能够在动态列615的位置上生成多个每年销售。第一列可对应于1990销售,第二列可对应于1991销售,依此类推。就这一点而言,动态列可与组织在一起的数据一起使用,从而可对其作出查询用于多个列的所希望的数据。

同样,该原理可适用于动态行。动态行是报告设计中标识为可由报告处理软件扩展成多个行的行。例如,可根据报告处理软件检索的数据按需将动态行660进行扩展。如果动态行660是用于表示指示出列中所标识的产品的生产团队领队的“每年团队领队”,则动态行600可按需被扩展成多行以容纳1990团队领队、1991团队领队、1992团队领队等等。报告设计者不需要规定每一年,而是能够规定某一范围所希望的数据,例如1990-1997,或者简单地规定所有可用的数据。

本发明的诸方面允许报告设计者在报告设计中按某一报告的需要来声明动态和静态行和列。而且,可分别在另一行或列中声明嵌套的动态和静态行或列的任意组合。例如,动态列可包含动态和静态嵌套列。

在动态列中嵌套动态和静态列的这种能力例示于图6。动态列604嵌套于动态列600中。在生成实际报告时,动态列600可按需扩展成任何数量的列,以报告数据。动态列600的这种扩展将生成动态列604的多个实例。动态列604的每个实例可随后被扩展来容纳用于动态列604的该实例的适当的数据。

诸如606之类的静态列也可嵌套于诸如600之类的动态列中。在生成用于这种报告设计的报告中,单个静态列606可置于动态列600的每个经扩展的实例中。当填充报告时,报告处理软件能够首先扩展动态列600,然后适当地填充诸如静态列606之类的嵌套列。

从图6的上述解释和实践中,应该清楚地认识到动态列可不包含嵌套列、包含一个或多个静态列、一个或多个动态列、或静态列和动态列的任何组合。对于静态列来说同样如此。静态列可包含动态列。其例子是静态列601,它包含动态列609。报告设计中的此类情况将生成包含可扩展的子组列的单个静态列。类似的,静态列可不包含嵌套列,例如静态列602,但也可包含一个或多个动态列、一个或多个静态列、或两者的任意组合。

虽然出于简单的目的,上述讨论针对列,但是清楚的是,行也可包含动态和静态的嵌套行的任意组合。诸如650之类的动态行可包含其它动态行,如653。在该情况下,动态行650可按需被扩展成多个行,以容纳可用的数据。650的每个实例将包含动态行653的实例。该嵌套的动态行随后也可被按需扩展,以容纳为行653所请求的可用数据。

动态行还可包含嵌套的静态行。就这一点而言,动态行650包含静态行655。650的每个实例在扩展之后都将包含静态行655的实例。653的每个实例又可随后按需被数据填充。注意,在行和列的情况下,这种嵌套的类别不需要包含与嵌套的行或列的所有其它实例完全相同的数据。相反,可修改用于填充行或列的查询,来适应于动态父类行或列的实例,以用用于该特定实例的适当数据来填充嵌套行或列。

静态行还可包含动态行。这例示于图6中,其中静态行651包含嵌套的动态行656。在该情况下,正如同列一样,单个静态父行651包含可按需被扩展来容纳规定的数据的动态行。

注意到,除了显示静态和动态行和列之外,图6示出了行和列页眉和页脚。这种行和列页眉和页脚实际上是静态行和列。图6中,这是通过页眉和页脚行和列的描述符没有方括号[]来指示出的。一般来说,使用本发明的技术声明为动态或静态的行和列将不会被简单地命名为图6所例示的“动态行”或“静态行”。相反,可根据要置于其中的数据来命名这些行和列。就这一点而言,页眉行652指示出它是描述其下面的数据的标题。页脚行654类似地向报告设计的观察者传达了将加入654的数据是用于包含于上述行中的数据的页脚数据。这同样适用于页眉列603和页脚列605。这些是静态列,可简单地被命名来至少部分地描述将包含于这些列中的数据。该概念将进一步参考图7和图8来解释。

图6抽象化地提出了本发明的许多方面,这有助于阐述。图7和图8给出了报告设计的具体例子,以及它如何能被报告处理器使用来生成实际报告。图7提出了示例性报告设计,图8例示出该设计如何被填充数据。因此,这些图进一步揭示和澄清了用于灵活的报告设计的系统和方法的优点。

图7的示例性报告设计示出三个静态上层列:年700、区域701以及小计702。报告设计针对示出年销售、区域销售和小计销售的报告。标题为“年”700的静态列进一步被划分成两个嵌套列:用于每年销售703的动态列和示出增长率704的静态列。用于区域的静态列也包含嵌套列:用于区域705的单个动态列,其中“区域”表示区域销售。用于小计的静态列不包含嵌套列。

图7中的报告设计的行是包含嵌套页眉列707和动态的商店列708的动态类别列706。因此,在扩展时,706的每个实例将包括707和708的实例,如参考图8所能看见的那样。还有一个用于总计数据的静态行709。

图7中的细节单元:元素710-717,能够提供关于将填充这些单元的额外信息。虽然用于报告的信息可从行和列描述符中提供的信息中完整收集,但是细节单元中的信息给出了额外的设计选择。从而,可能不要求将任何信息置于诸如710之类的细节单元中,因为从信息的上下文中可以清楚的知道该单元是用于某一年的某一商店的销售信息。然而,总计行较不透明。例如,可能不清楚的是如果在细节单元中不提供信息,单元713可能希望平均增长图。

图8提供了可从图7的报告设计中生成的实际报告。用于每年销售703的动态列被扩展成两个列,用于1990的列(803)用于1991的列(804)。用于区域705的动态列被扩展成两个列,西部806和东部807。此外,类别动态行706被扩展成两个类别:零售808和批发811。注意,虽然静态列700、701和702中的标题仍然存在于实际报告中,见800、801和802,但是用于类别行706的标题已经在图8的实际报告中被省去。这是呈现优先选择的问题,可通过额外的声明性标记,例如斜体字,来完成。

图8中,用于商店的动态行在动态扩展的类别行的每一个中被扩展成每类别两个商店。这可假设为报告设计,如列708中指示出的约束的结果,该约束可能已指示出仅关心每个类别中的最上面的两个商店。也可能仅仅是可用数据的结果一用于这四个商店的数据可能是仅可用的数据。在前一种情况下,在行说明中将声明该限制,在后一情况中,不必进行声明。

图10、图11和图12以及下面给出的示例性XML报告定义给出了实现本发明的各种技术的报告设计的最终实例。图10给出了可从图11的报告设计中产生的示例性报告。图11示意性地表示出可又如下所述的XML实现的报告设计。图12揭示了图11给出的示意性表示中的对象类型。

图10、图11和图12的列和行的编号被配置成说明这些图中相类似的元素。例如,图12的动态列组1200对应于图11中的[年]1200a列,以及对应于图10中的2001(1200b)和2002(1200c)列。这种相关性允许在图之间做出容易的引用和参考,以及显示出报告设计中标识的列1200b如何能够识别用于实际报告的数据(在这里是每年销售数据),以及声明性地定义(在这里是通过方括号)列是作为动态列。

图11示出用于称为“类型”的标题的静态列1202a,它包含用于类型子组的动态列1203a。如可从图10中看出,这些类型子组是“新鲜”1203b和“冷冻”1203c。该例子说明了使用本发明的技术的报告设计的功能优点。

图11还给出了若干静态列1201a和1204a,如可通过参考图12来进行核对的那样,它把列1201和1204标识为静态。注意,页脚1201列仅仅是静态列的一个例子。诸如1204之类的静态列还可为将信息置于与周围数据无关的报告之中的目的而提供。

图11中给出的报告设计的行也结合了本发明某些技术,允许灵活的报告设计。如此,静态行1250a可包含动态行组1253a。此外,动态行1251a可包含静态行1252a和动态行1253a。这允许如图10所例示那样可重复列出页眉行和子行。在图10中的每个动态扩展的组中,来自报告设计的静态行1252a重复一次。参考图10中的1252b和1252c。动态行1253a按需被重复以容纳图10中的数据。参考图10中的1253b、1253c、1253d和1253e。使用本发明的技术的这种单个报告设计的具体例子不使用静态和动态行或列的所有可能组合,然而,对现有技术报告设计系统和方法所做出的贡献和优点应该是清楚的。

下面的XML定义说明了实施本发明的技术的报告的元素如何可以机器可读语言来具体实施。示意性地做出的声明归纳为XML文件中定义的元素和属性。使用本发明的诸方面的报告设计者可使用允许示意性准备和以自动化的处理准备如下给出的例子那样的定义文件的程序。可选地,可直接编写报告定义文件而不用报告设计软件的辅助来实践本发明。在参考下面的例子的过程中,术语“tablix”用于声明使用这里所描述的技术的报告设计的一个实例。

用干图10、图11和图12的示例性XML定义:

<Tablix>

   <RowGroupings>

    <Grouping>

         <Header>Retail</Header>

         <SubGroupings>

                <Grouping>

                         <GroupBy>=Category</GroupBy>

                      <SubGroupings>

                            <Grouping>

                                  <StaticType>header</StaticType>

                                  <Header>=Category</Header>

                            </Grouping>

                            <Grouping>

                                  <GroupBy>=Region</GroupBy>

                                  <Header>=Region</Header>

                            </Grouping>

                      </SubGroupings>

                 </Grouping>

                 <Grouping>

                      <Header>Net Deficit</Header>

                 </Grouping>

           </SubGroupings>

       </Grouping>

       <Grouping>

           <Header>Wholesale</Header>

       </Grouping>

   </RowGroupings>

   <ColumnGroupings>

       <Grouping>

          <GroupBy>=Year</GroupBy>

               <Header>=Year</Header>

   </Grouping>

      <Grouping>

               <StaticType>footer</StaticType>

               <Header>Total</Header>

      </Grouping>

      <Grouping>

               <Header>Type</Header>

               <SubGroupings>

                     <Grouping>

                               <GroupBy>=Type</GroupBy>

                               <Header>=Type</Header>

                     </Grouping>

               </SubGroupings>

       </Grouping>

       <Grouping>

               <Header>Yearly Growth</Header>

       </Grouping>

   </ColumnGroupings>

   <Rows>

    <Row>

          <Cell/>

          <Cell/>

          <Cell/>

          <Cell/>

     </Row>

     <Row>

          <Cell>=Sum(Sales)</Cell>

          <Cell>=Sum(Sales)</Cell>

          <Cell>=Sum(Sales)</Cell>

          <Cell>=Growth</Cell>

     </Row>

     <Row>

          <Cell>=Sum(Sales)</Cell>

          <Cell>=Sum(Sales)</Cell>

          <Cell>=Sum(Sales)</Cell>

          <Cell>=Avg(Growth)</Cell>

     </Row>

     <Row>

          <Cell>=Sum(Sales)</Cell>

          <Cell>=Sum(Sales)</Cell>

          <Cell>=Sum(Sales)</Cell>

          <Cell>=Avg(Growth)</Cell>

     </Row></Rows></Tablix>

示例性的计算环境

本发明的技术意图与一个或多个计算机一起使用。特别是,实施这里所揭示的方法的报告设计产品可能提供图形用户界面(GUI)来帮助使用声明性元素来规定如本说明书所教示的报告的品质。这种图形用户界面和支持计算硬件和软件是本领域所已知的,下面给出简要的说明以更为具体地指出这种系统的特征,但不试图描述已知计算技术的操作细节。

参考图9,用于实施本发明的示例性系统包括诸如设备900之类的计算设备。在其最基本的配置中,设备900一般包括处理单元902和存储器904。根据计算设备的确切配置和类型,存储器904可以是易失性的(如RAM)、非易失性的(如ROM、闪存存储器等)或两者的某种组合。此外,设备900还可具有大容量存储器(可移动的908和/或不可移动的910),例如磁盘或光盘或磁带或光带。类似地,设备900还可具有诸如键盘和鼠标之类的输入设备914,和/或诸如给出如上所述的GUI作为促进报告设计的图形辅助的显示器之类的输出设备916。设备900的其它方面可包括使用有线的或无线的媒介对其它设备、计算机、网络、服务器等的网络连接。所有这些设备都是本领域所已知的,不许在此累述。

应理解,这里所描述的各种技术可连同硬件或软件或在适当的情况下为两者的组合来实施。从而,本发明的方法和装置或其某些方面或部分可采用记录于诸如软盘、CD-ROM、硬盘或任何其它机器可读存储媒介中的程序代码(即指令)的形式,在程序代码被载入并执行于诸如计算机之类的机器中时,机器变为实践本发明的装置。在程序代码执行于可编程计算机上的情况下,计算设备一般包括处理器、处理器可读的存储媒介(包括非易失性和/或存储元素)、至少一个输入设备、以及至少一个输出设备。例如可通过使用数据处理API、可重复使用的控件等之类的可实施或利用本发明的用户界面技术的一个或多个程序较佳的以高级程序或面向对象的编程语言来实施,以于其它计算机系统通信。然而,可按需以汇编或机器语言来实施程序。在任何情况下,语言可以是编译的或解释的语言,并与硬件实现相结合。

本发明可在计算机可读指令的一般上下文环境中来描述,计算机可读指令例如可由一个或多个计算机或其它设备执行的程序模块。一般地,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。典型地,程序模块的功能性可按照各种实施例中的需要进行组合或分布。

虽然示例性实施例涉及在一个或多个独立的计算机系统的上下文环境中使用本发明,但是,本发明不限于这些,而是可连同各种计算环境一起来实施,例如网络或分布式计算环境。进一步,本发明可跨越多个处理芯片或设备来实施,存储器可类似地在多个设备之间有效。这些设备可包括个人计算机、网络服务器、手持设备、超级计算机、或集成于诸如汽车和飞机之类的其它系统中的计算机。因此,本发明不应局限于任一单个实施例,而是应在根据其范围进行解释。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号