使用矢量字段处理数据的制作方法

文档序号:6348243阅读:155来源:国知局
专利名称:使用矢量字段处理数据的制作方法
技术领域
本说明涉及使用矢量字段处理数据。
背景技术
一些计算机系统提供用于指定规则的接口,所述规则用于在各种数据处理应用中做出自动化决定。例如,与处理表示信用卡交易或航线飞行常客程序的数据相联系的决定可以由一组给定的规则来控制。在某些情况下,这些规则以人类可读形式描述。计算机系统可以提供用于用户定义或编辑这些规则的接口,然后将这些规则合并进数据处理系统。

发明内容
在一个方面,概括地说,一种方法包括接收用于基于一个或多个输入值生成输出值的具有至少一个规则例的规则;生成用于从输入数据集接收数据的转换,并且基于所述规则转换所述数据包括产生用于输出数据集中的至少一个输出变量的第一系列的值,在所述第一系列的值中的至少一个包括第二系列的值,并且提供相应于所述输出数据集中的至少一个输出变量的输出字段用于存储所述第二系列的值。多个方面可以包括一个或多个如下特征。所述转换可以包括在由图表示的基于图的应用的组件中,所述图中的顶点表示组件,并且所述图中的顶点之间的有向链接表示组件之间的数据的流动。包括转换的第一图组件可以提供从输入数据集到所述转换的数据的流动。所述第一图组件可以是可执行的计算组件,并且所述图可以包括第二图组件,该第二图组件是表示输入数据集的数据存储组件。产生用于输出数据集中的至少一个变量的第一系列的值可以包括产生用于输出表格的行,每行定义用于包括所述输出变量的一组变量的值的记录。提供用于存储第二系列的值的输出字段可以包括提供用于存储预定数量的第二系列的值的阵列,所述预定数量是可修改为用户指定数量的默认数量。所述输出字段可以包括表格中的单元格。接收所述规则可以包括接收规则表格的至少一行,该行相应于规则例,并且具有包括输入值、预定值或从一个或多个输入值计算的值中的一个或多个或其组合的输出。所述规则例可以包括下述中的一个或多个具有等于阈值的输入值、具有高于阈值的输入值、具有低于阈值的输入值、具有属于一组值的输入值、具有匹配多个值的模式的输入值、具有对另一输入值的关系、具有对另一组规则的输出值的关系、或者具有对存储器中的值的关系。
所述输入数据集可以包括具有用于标量变量和矢量变量的值的记录。所述记录中的至少一个可以包括用于存储预定数量的记录的阵列,所述预定数量是可修改为用户指定数量的默认数量。所述记录中的至少一个包括内部参考表格以对于所述记录中的至少一个中的子记录定义关键字关系。所述方法还可以包括响应于规则,基于所述内部参考表格中的关键字关系、对于输出数据集中的输出变量产生第二系列的值。所述方法还可以包括响应于规则中的规则例,触发所述规则例以产生用于所述输出数据集中的输出变量的值。触发规则例可以包括基于满足所述规则中的至少一个规则例的输入数据集中的标量值来触发所述规则。触发规则例可以包括基于满足所述规则中的至少一个规则例的输入数据集中的矢量中的每个值来触发所述规则。触发规则例可以包括基于应用于满足所述规则中的至少一个规则例的输入数据集中的矢量的聚集函数的输出来触发所述规则。生成所述转换可以包括将所述规则中的多个规则例中的每一个变换为逻辑表达式以形成多个逻辑表达式,以及将所述多个逻辑表达式编译成为计算机可执行的代码。编译所述多个逻辑表达式可以包括组合表达式、优化单独的表达式以及优化表达式组中的一个或多个。在另一方面,概括地说,一种计算机可读介质,存储用于更新基于图的计算中的组件的计算机程序,所述基于图的计算具有通过链接表示数据流动的元素来连接的数据处理组件,所述计算机程序包括用于导致计算机执行如下操作的指令接收用于基于一个或多个输入值产生输出值的具有至少一个规则例的规则,生成用于从输入数据集接收数据的转换,并且基于所述规则转换所述数据包括产生用于输出数据集中的至少一个输出变量的第一系列的值,在所述第一系列的值中的至少一个包括第二系列的值,以及提供相应于所述输出数据集中的至少一个输出变量的输出字段用于存储所述第二系列的值。在另一方面中,一种系统包括用于接收用于基于一个或多个输入值产生输出值的具有至少一个规则例的规则的装置,处理器,被配置为生成用于从输入数据集接收数据的转换,并且基于所述规则转换所述数据包括产生用于输出数据集中的至少一个输出变量的第一系列的值,在所述第一系列的值中的至少一个包括第二系列的值,以及用于提供相应于所述输出数据集中的至少一个输出变量的输出字段以存储所述第二系列的值的装置。本发明的其他特征和优点从如下描述和权利要求中将变得清楚。


图1是描绘示例转换的示意图。图2是示例转换生成器。图3和图4是示例规则集。图5是示例多激发(Fire-Many)规则集。图6、图7和图8是示例输出、规则和结果表格片段(tab)。图9是描绘标量和矢量的计算的示意图。图IOA和图IOB示出具有记录矢量的示例输入记录。
具体实施例方式商业规则可以被表示为标准的集合,例如,所述标准可用于将数据从一种格式变换到另一种格式、做出关于数据的决定或基于输入数据的集合生成新数据。例如,在图1 中,在航班预定系统中的记录102指示在航线中的乘客姓名104、乘客在本年度已经飞行的英里106、乘客的机票的等级108以及乘客的当前排110。商业规则可以指示这样的乘客应该被分类在登机组“1”内,例如,组118。商业规则对于人类来说通常是容易理解的,例如, “头等舱乘客在组1”中,但是在将商业规则用于操作数据之前、可能需要将其转换为计算机可以理解的语言。因此,为了实现商业规则,生成转换112以从一个或多个数据源,例如,输入数据集100接收输入记录(例如,记录10 并且将指示乘客姓名104和组118的输出记录(例如,记录114)产生到输出数据集120中。输入数据集和输出数据集还被称为数据流。为了对于非技术性的用户简化转换112的创建,典型地提供编辑器工具(未示出) 以便以用户熟悉的格式输入被称作规则集或规则组的商业规则集。随后,所述规则组指导计算机系统生成转换112,转换112更进一步指导计算机系统利用输入数据集100做什么以及产生什么到输出数据集120中。相应于单个转换的规则或规则集可以包括根据输入记录对于规则集的输出变量计算不同值的一个或多个规则例。当规则中的规则例被触发时,认为所述规则,更具体地,所述规则例被激发(fire)。例如,在规则中仅可以激发一个规则例。 在某些例子中,在规则中可以激发多于一个的规则例。在某些例子中,当规则例被激发时, 可以认为整个规则正在被激发。在一些实现方式中,例如,如果在输入数据集中的输入标量或矢量值满足规则例或规则中的一个或多个条件,则所述规则例或规则被触发或激发。规则集还可以包括其他规则集。其他规则集可以对于额外的或替换的输出变量产生值。例如, 规则集可以直接地包含或间接地参考被称为“内含(included) ”规则集的其他规则集。在图2中示出示例转换生成系统。生成器150从编辑器巧4接收规则集152作为输入并且生成转换156。取决于系统结构以及转换和商业规则的目的,可以将生成的转换 156提供给基于图的计算系统158作为用于图的组件或作为整个图本身。基于图的计算系统158可以提供允许程序员通过使用组件作为建立块(building block)来建立基于图的应用的计算环境。经常通过有向图来表示基于图的应用,其中图中的顶点表示组件(数据存储组件或可执行的计算组件二者之一),并且图中的有向链接(link)或“边”表示在组件之间的数据的流动。数据流图(也简称为“图”)是模块化实体。每个图可以由一个或多个其它图组成,并且具体的图可以是更大的图中的组件。例如,生成器150可以是被配置为使用标准工具以接收规则集152并且输出转换 156的编译器、客户定制的程序或者基于图的计算。为那些本领域技术人员已知的用于产生以及随后更新转换156的任何技术都可用于生成转换156。例如,在2007年4月10日提交的题目为 “Editing and Compiling Business Rules” 的美国专利申请 No. 11/733,434 中描述了用于产生转换的技术,通过引用将其全面包含于此。在某些例子中,转换156相应于输入记录102生成用于输出变量的仅一个值。在这种方案中,规则集最多仅可以激发一次。因此,使用转换156可能不能容易地解决一些问题,例如,数据质量问题。在某些例子中,输出数据集120中的输出变量可以包括“一次写入(Write-Once)输出”。通常,“一次写入输出”是对于给定输入记录典型地被写入一次,并且对于给定输入记录仅存储一个值的输出变量。产生这种变量的规则集被称作“一次激发 (Fire-Once) ” 规则。在某些例子中,“多激发”规则可以产生“累积(accumulator) ”输出变量,例如,对于给定输入记录能够接收一系列的值,而不是仅一个值。对于输入记录,“多激发”规则将激发被触发的规则集中的每个规则例,而不仅仅是,例如,被触发的第一个规则例。在某些例子中,规则集可以以如图3所示的表格(或“电子表格(spreadsheet) ”) 格式被录入,其中在单元格中行和列交叉。表格200中的触发器列202、204、206、208相应于用于可得到的输入数据值的标准,并且行210a-210h相应于规则例,S卩,与可得到的输入数据值相关的标准的集合。处于触发器列和可应用的规则例行210η的交叉点的单元格包含用于触发列和规则例的标准。如果对于在其中规则例具有标准的各个触发器列来说,图 1中的记录102的数据值满足触发标准,那么规则例210η就应用于给定的记录。如果应用了规则例210η,则基于一个或多个输出列212生成输出。如上所述,通常,其所有的输入关系都得以满足的规则例可以称为“被触发(triggered)”,并且规则集被称作“被激发 (fired) ”。每个输出列212相应于一个潜在的输出变量,处于列212和可应用的行210η的交叉点的相应单元格中的值确定用于那个变量的输出一如果有的话。在某些例子中,单元格可以包含分配给变量的值或者它可以包含被评估以生成输出值的表达式,如下面将讨论的那样。虽然在图3中仅示出一个输出列,但是在某些例子中可以存在多于一个的输出列。可以存在若干不同类型的触发器列,包括相应于变量的列、包含表达式但是对其计算一次然后将其当作变量对待的列、以及仅包含表达式的列。仅包含表达式的列在某些方面比那些与变量相应的列或者当作变量对待的列简单。例如,这种触发器列可以包含如下类型的单元格值中的一个用于定义触发器列标准 表达式。如果表达式评估为非零(non-zero)或非空(non-NULL)的值则该条件将被认为为真。 关键字“任意(any)”,或空串。该条件总为真。触发器列中的每个空单元格等于一个明确地包含关键字“任意”的单元格。 关键字“其它(else)”。如果在该单元格的左边的全部单元格都相同的行中,在该单元格上面的包含“其它”的单元格都不为真,则该条件为真。 关键字“相同(same)”。如果该单元格上面的单元格为真则该条件为真。相应于变量的列(列变量)可以具有两种类型的单元格。单元格的一种类型是表达式单元格。那些单元格完全像在仅包含表达式的列中的单元格一样动作(behave)。然而,关键字“本身(this)”可被用于表达式中以指向列变量。单元格的另一种类型是比较值。用于比较值的示例语法如下comparison_value: = compound—value ( “or,,compound—value)水compound—value: : = simple_value ( “and,,simple_value)氺simple_value: : = [ “not,,] (value_expression | simple function | membership— expr)value_expression:: = [operator]value_elementoperator:: =“>,,| “<,,| “> =,,| “< =,,| “! =,,| “ =,,| “equals,,value_element: : = constant | constant | variable | “( "expression “),,
simple_function: =“is_null”| "is_blank”| "is_valid”| "is_defined”| "is_ bzero,,membership_expr: : = “in” “[ “value—element (( “,,, | “to” | “or”)value— element)* “]”其中“*”意味着一项(term)被重复零次或多次。可以使用任何适合的程序语言或语法。示例包括C、Java、DML或ftOlog。根据运算符、函数或从属关系(membership)表达式将列变量相对于比较值进行比较。在图3的示例中,开头两个列202和204包含利用“> =”运算符的比较值。因此,如果用于该列的值大于或等于相应的数字则标准被满足。如果没有运算符,如在“座位等级”列中的那样,则假定“相等(equal)”。常量可以是在基础系统中使用的任何编程语言或语法中的任何合法的常量。表达式是在使用的语言中的任何合法的表达式,其返回将要相对于列变量进行比较的相容的数据类型。在某些例子中,比较值内部的表达式被装入括号中以避免歧义。在图3的示例中,第一行210a仅在一个列202中具有标准,指示如果旅客的经常飞行英里的总数大于1,000, 000,那么不管任何其它列可能具有什么值都应用该规则例。在该情况下,针对该用户的“乘机组(Boarding Group) ”输出变量被设置为组1。同样地,第二规则例210b指示任何在头等舱的乘机者都在组1中。在一些例子中,规则被顺次评估, 因此一个超过1,000, 000英里且持头等舱票的旅客将在组1中,但是将仅触发第一规则例 210a。规则例210a_210h(图3)也可以表示为独立的简单规则,各自在它们自己的表格中,如图4所示。规则220a-220d分别相应于图3的行210a-210d,而规则220e具有相应于合起来的行210e-210h的四个规则例。用户可以分别地创建这些独立规则,而非生成图3 中示出的整个表格。每个规则例(至少隐含地)包含用于各个触发器列的值以及用于各个输出列的值(该值可以为空,即,有效设置为“任意”)。当多个规则生成相同的输出时,将这些规则排序并且对它们按次序进行考虑,直到针对输入触发一个规则中的规则例并且生成输出为止。如果没有触发规则中的规则例,那么就处理生成相同输出的下一个规则。如果在任一规则中都没有例对于某一输出触发,那么就使用默认值。在一些例子中,编辑器的用户接口可以用于用图识别包含表达式的单元格。因此, 用户可以理解两个表达式之间的差异,其中一个表达式将独立地被评估为真或假,另一个表达式返回与列变量相比较的值。当用户打字时,他可以例如通过在开头处打星号,来指示特定单元格将是一个表达式单元格。对于相应于输出变量的列,单元格可以包含下列中的一个 值。该值将分配给输出变量。 表达式。该表达式的值将分配给输出变量。如果表达式评估为空(NULL),那么该字段得到空值,除非输出字段不可为空。在输出字段不可为空但得到空值的情况下,生成错误。 关键字“空(null)”。如果输出字段可为空,那么该字段将分配为空。否则,生成错误。 空字串。如果输出字段具有默认值,则分配该默认值。否则,单元格被当作好像它包含关键字“空(null)”一样对待。
关键字“相同(same)”。输出字段被赋以在上面的单元格中所计算的相同的值。除表达式之外,可以允许用户向规则中的任何单元格附加注解,可以响应于用户交互(例如,单击或“悬停(hovering)”光标)来显示所述注释。在一些实现方式中,规则集,例如,在下面的表格1中示出的规则集可以包括对于单个输入记录生成多个输出记录的多个规则例。
权利要求
1.一种方法,包括接收用于基于一个或多个输入值产生输出值的具有至少一个规则例的规则,生成用于从输入数据集接收数据的转换,并且基于所述规则转换所述数据包括产生用于输出数据集中的至少一个输出变量的第一系列的值,在所述第一系列的值中的至少一个值包括第二系列的值,以及提供相应于所述输出数据集中的至少一个输出变量的输出字段用于存储所述第二系列的值。
2.如权利要求1所述的方法,其中,所述转换包括在由图表示的基于图的应用的组件中,所述图中的顶点表示组件,并且所述图中的顶点之间的有向链接表示组件之间的数据的流动。
3.如权利要求2所述的方法,其中,包括转换的第一图组件提供从输入数据集到所述转换的数据的流动。
4.如权利要求3所述的方法,其中,第一图组件是可执行的计算组件,并且所述图包括第二图组件,该第二图组件是表示输入数据集的数据存储器组件。
5.如权利要求1所述的方法,其中,产生用于输出数据集中的至少一个变量的第一系列的值包括产生用于输出表格的行,每行定义具有用于包括所述输出变量的一组变量的值的记录。
6.如权利要求1所述的方法,其中,提供用于存储第二系列的值的输出字段包括提供用于存储预定数量的第二系列的值的阵列,所述预定数量是可修改为用户指定数量的默认数量。
7.如权利要求1所述的方法,其中,所述输出字段包括表格中的单元格。
8.如权利要求1所述的方法,其中,接收所述规则包括接收规则表格的至少一行,该行相应于规则例,并且具有包括输入值、预定值或从一个或多个输入值计算的值中的一个或多个或其组合的输出。
9.如权利要求8所述的方法,其中,所述规则例包括下述中的一个或多个具有等于阈值的输入值、具有高于阈值的输入值、具有低于阈值的输入值、具有属于一组值的输入值、 具有匹配多个值的模式的输入值、具有对另一输入值的关系、具有对另一组规则的输出值的关系、或者具有对存储器中的值的关系。
10.如权利要求1所述的方法,其中,所述输入数据集包括具有用于标量变量和矢量变量的值的记录。
11.如权利要求10所述的方法,其中,所述记录中的至少一个包括用于存储预定数量的记录的阵列,所述预定数量是可修改为用户指定数量的默认数量。
12.如权利要求10所述的方法,其中,所述记录中的至少一个包括内部参考表格以对于所述记录中的至少一个中的子记录定义关键字关系。
13.如权利要求12所述的方法,还包括响应于规则,基于所述内部参考表格中的关键字关系、对于输出数据集中的输出变量产生第二系列的值。
14.如权利要求1所述的方法,还包括响应于规则中的规则例,触发所述规则例以产生用于所述输出数据集中的输出变量的值。
15.如权利要求14所述的方法,其中,触发规则例包括基于满足所述规则中的至少一个规则例的输入数据集中的标量值来触发所述规则。
16.如权利要求14所述的方法,其中,触发规则例包括基于满足所述规则中的至少一个规则例的输入数据集中的矢量中的每个值来触发所述规则。
17.如权利要求14所述的方法,其中,触发规则例包括基于应用于满足所述规则中的至少一个规则例的输入数据集中的矢量的聚集函数的输出来触发所述规则例。
18.如权利要求1所述的方法,其中,生成所述转换包括将所述规则中的多个规则例中的每个变换为逻辑表达式以形成多个逻辑表达式,以及将所述多个逻辑表达式编译成为计算机可执行的代码。
19.如权利要求18所述的方法,其中,编译所述多个逻辑表达式包括组合表达式、优化单独的表达式以及优化表达式组中的一个或多个。
20.一种计算机可读介质,存储用于更新基于图的计算中的组件的计算机程序,所述基于图的计算具有通过链接表示数据流动的元素来连接的数据处理组件,所述计算机程序包括用于导致计算机执行如下操作的指令接收用于基于一个或多个输入值产生输出值的具有至少一个规则例的规则,生成用于从输入数据集接收数据的转换,并且基于所述规则转换所述数据包括产生用于输出数据集中的至少一个输出变量的第一系列的值,在所述第一系列的值中的至少一个包括第二系列的值,以及提供相应于所述输出数据集中的至少一个输出变量的输出字段用于存储所述第二系列的值。
21.—种系统,包括用于接收用于基于一个或多个输入值产生输出值的具有至少一个规则例的规则的装置,处理器,被配置为生成用于从输入数据集接收数据的转换,并且基于所述规则转换所述数据包括产生用于输出数据集中的至少一个输出变量的第一系列的值,在所述第一系列的值中的至少一个包括第二系列的值,以及用于提供相应于所述输出数据集中的至少一个输出变量的输出字段以存储所述第二系列的值的装置。
全文摘要
公开一种方法,包括接收用于基于一个或多个输入值生成输出值的具有至少一个规则例(210a-h)的规则(152);生成用于从输入数据集(100)接收数据的转换(112,156),并且基于所述规则(152)转换所述数据包括生成用于输出数据集(120)中的至少一个输出变量(508,801)的第一系列的值(813),在所述第一系列的值(813)中的至少一个包括第二系列的值(816),并且提供相应于所述输出数据集(120)中的至少一个输出变量(508,801)的输出字段用于存储所述第二系列的值(816)。
文档编号G06F7/00GK102301324SQ201080006214
公开日2011年12月28日 申请日期2010年1月29日 优先权日2009年1月30日
发明者J.古尔德, S.斯图德 申请人:起元技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1