映射带键实体的属性的制作方法

文档序号:19431254发布日期:2019-12-17 16:49阅读:160来源:国知局
映射带键实体的属性的制作方法

相关申请的交叉引用

本申请要求2014年3月14日递交的序列号为61/953021的美国申请的优先权。

本说明书涉及映射带键实体的属性。



背景技术:

各种系统具有将数据从输入(或“源”)系统或格式映射到输出(或“目标”)系统或格式的能力。映射过程可以包括根据映射将转换函数应用到输入数据并且将结果存储为输出数据。“映射”可以被定义为指定输入数据的属性和输出数据的属性之间的关系。映射过程可以例如导致输入数据被加载到作为输出数据的系统中,或可以导致输入数据被转换为输出数据,或两者兼具。输入数据或输出数据的内容可以包括数据值,在某些情况下,数据值表示其它数据的元数据描述特性。在一些系统中,在提取、转换和加载(etl)处理的上下文中实施映射操作。



技术实现要素:

在一个方面中,一般性地,一种计算系统包括:数据存储系统,所述数据存储系统存储表示多个实体的实体数据,每个实体具有一个或多个属性,所述多个实体中的至少一些实体每个具有多个实例,并且所述多个实例中的至少一些实例每个具有所述一个或多个属性的相应值,其中所述多个实体包括多个输入实体及多个输出实体;用于接收包括一个或多个映射的输入的数据输入设备或端口,每个映射定义一个输入实体的一个或多个输入属性与一个输出实体的一个或多个输出属性之间的对应关系,其中输入实体包括被标识为该输入实体的唯一键的一部分的一个或多个键属性,并且输出实体包括被标识为该输出实体的唯一键的一部分一个或多个键属性;用于显示被配置为接收输入数据的用户界面的输出设备或端口;以及至少一个处理器,被配置为计算在用户界面中显示的结果信息,所述结果信息表征处理所述多个输入实体的实例以根据被包括在所述输入数据中的所述一个或多个映射来生成所述多个输出实体的实例的结果。所述计算包括:处理第一输入实体的实例以生成第一输出实体的实例;基于所述一个或多个映射,确定与所述第一输出实体的一个或多个键属性的每个相对应的所述第一输入实体的一个或多个被映射的输入属性;基于所确定的一个或多个被映射的输入属性,生成所述第一输出实体的实例;计算所处理的所述第一输入实体的实例的总数;以及计算所生成的所述第一输出实体的实例的总数。

各个方面可以包括以下特征的一个或多个。

在用户界面中显示结果信息包括:与所述第一输出实体的表示相关联地显示所述第一输出实体的实例的总数。

在用户界面中显示结果信息包括:与所述第一输入实体的表示相关联地显示所述第一输入实体的实例的总数。

在用户界面中显示结果信息包括:显示表示所显示的输入实体的属性与所显示的输出实体的属性之间的一个或多个映射的多个元素;为每个元素显示图标指示对于所显示的输入实体与所显示的输出实体之间的任何映射,输入数据是否为输出属性分配:(1)具有相同名称的输入属性:(2)恒定值。

确定与输出实体的所述一个或多个键属性的每个相对应的输入实体的一个或多个被映射的输入属性包括:确定一个或多个被映射的输入属性与输出实体的相应键属性之间是否具有一对一的对应关系。

所述计算进一步包括将被映射的输入属性与输入实体的一个或多个键属性相比较以确定被映射的输入属性是否包括:(1)该输入实体的全部键属性,或(2)少于该输入实体的全部键属性的属性。

所述处理进一步包括基于下列因素生成输出实体的实例:(1)响应于确定被映射的输入属性包括该输入实体的全部键属性,基于具有匹配的键属性的该输出实体的实例与该输入实体的实例之间的一对一的对应关系,或(2)响应于确定被映射的输入属性包括少于该输入实体的全部键属性的属性,基于被映射的输入属性共享相同值的该输入实体的多个实例的聚合。

所述实体数据表示根据层级结构相关的多个输出实体,其中至少一个根输出实体位于该层级结构的最高层级,并且一个或多个输出实体位于该层级结构的最高层级下方的一个或多个层级,并且位于比根实体低的层级的每个输出实体是单个输出实体的次级实体。

所述实体数据表示根据层级结构相关的多个输入实体,其中至少一个根输入实体位于该层级结构的最高层级,并且一个或多个输入实体位于该层级结构的最高层级下方的一个或多个层级,并且位于比根实体低的层级的每个输入实体是单个输入实体的次级实体。

至少第一实体不与根据层级结构相关的多个输出实体相关,所述第一实体包括至少一个属性被包括在所述输入数据中的至少一个映射引用为输出属性。

所述第一实体包括至少一个属性被包括在所述输入数据中的至少一个映射引用为输入属性。

第一实体为第二实体的次级实体,所述第一实体的多个实例的每个包括所述第一实体的键属性的公共值,其标识所述第二实体的特定实例。

所述第一实体与第一记录集相对应,所述第二实体与第二记录集相对应,并且所述第一实体的键属性与所述第一记录集的外键字段相对应,所述外键字段标识了包括在所述第二记录集的特定记录的主键字段中的值。

第一实体为第二实体的次级实体,所述第一实体的多个实例与包括在所述第二实体的特定实例的数据结构内的矢量的多个元素相对应。

所述处理进一步包括:采用数据流图生成输出实体的实例,从而处理输入实体的实例以生成输出实体的实例,所述数据流图包括表示被配置为在实体的实例上执行操作的组件的节点以及表示组件之间的实例流动的节点之间的链路。

所述数据流图包括:至少一个分裂组件,其被配置为基于所述一个或多个映射的输入属性从另一实体的实例的数据结构中提取次级实体的实例的一个或多个矢量;以及至少一个组合组件,其被配置为基于所述一个或多个映射的输出属性将次级实体的实例的一个或多个矢量插入另一实体的实例的数据结构。

在另一方面中,一般性地,一种计算系统包括:用于存储表示多个实体的实体数据的装置,每个实体具有一个或多个属性,所述多个实体中的至少一些实体每个具有多个实例,并且所述多个实例中的至少一些实例每个具有所述一个或多个属性的相应值,其中所述多个实体包括多个输入实体及多个输出实体;用于接收包括一个或多个映射的输入的装置,每个映射定义一个输入实体的一个或多个输入属性与一个输出实体的一个或多个输出属性之间的对应关系,其中输入实体包括被标识为该输入实体的唯一键的一部分的一个或多个键属性,并且输出实体包括被标识为该输出实体的唯一键的一部分一个或多个键属性;用于显示被配置为接收输入数据的用户界面的装置;以及用于计算在用户界面中显示的结果信息的装置,所述结果信息表征处理所述多个输入实体的实例以根据被包括在所述输入数据中的所述一个或多个映射来生成所述多个输出实体的实例的结果。所述计算包括:处理第一输入实体的实例以生成第一输出实体的实例;基于所述一个或多个映射,确定与所述第一输出实体的一个或多个键属性的每个相对应的所述第一输入实体的一个或多个被映射的输入属性;基于所确定的一个或多个被映射的输入属性,生成所述第一输出实体的实例;计算所处理的所述第一输入实体的实例的总数;以及计算所生成的所述第一输出实体的实例的总数。

在另一方面中,一般性地,一种用于在计算系统中处理数据的方法包括:在数据存储系统中存储表示多个实体的实体数据,每个实体具有一个或多个属性,所述多个实体中的至少一些实体每个具有多个实例,并且所述多个实例中的至少一些实例每个具有所述一个或多个属性的相应值,其中所述多个实体包括多个输入实体及多个输出实体;通过数据输入设备或端口接收包括一个或多个映射的输入,每个映射定义一个输入实体的一个或多个输入属性与一个输出实体的一个或多个输出属性之间的对应关系,其中输入实体包括被标识为该输入实体的唯一键的一部分的一个或多个键属性,并且输出实体包括被标识为该输出实体的唯一键的一部分一个或多个键属性;通过数据输入设备或端口显示被配置为接收输入数据的用户界面的输出设备或端口;以及用至少一个处理器计算在用户界面中显示的结果信息,所述结果信息表征处理所述多个输入实体的实例以根据被包括在所述输入数据中的所述一个或多个映射来生成所述多个输出实体的实例的结果。所述计算包括:处理第一输入实体的实例以生成第一输出实体的实例;基于所述一个或多个映射,确定与所述第一输出实体的一个或多个键属性的每个相对应的所述第一输入实体的一个或多个被映射的输入属性;基于所确定的一个或多个被映射的输入属性,生成所述第一输出实体的实例;计算所处理的所述第一输入实体的实例的总数;以及计算所生成的所述第一输出实体的实例的总数。

在另一方面中,一般性地,一种以非暂态形式存储于计算机可读介质的软件包括指令以促使计算机系统:在数据存储系统中存储表示多个实体的实体数据,每个实体具有一个或多个属性,所述多个实体中的至少一些实体每个具有多个实例,并且所述多个实例中的至少一些实例每个具有所述一个或多个属性的相应值,其中所述多个实体包括多个输入实体及多个输出实体;通过数据输入设备或端口接收包括一个或多个映射的输入,每个映射定义一个输入实体的一个或多个输入属性与一个输出实体的一个或多个输出属性之间的对应关系,其中输入实体包括被标识为该输入实体的唯一键的一部分的一个或多个键属性,并且输出实体包括被标识为该输出实体的唯一键的一部分一个或多个键属性;通过数据输入设备或端口显示被配置为接收输入数据的用户界面的输出设备或端口;以及用至少一个处理器计算在用户界面中显示的结果信息,所述结果信息表征处理所述多个输入实体的实例以根据被包括在所述输入数据中的所述一个或多个映射来生成所述多个输出实体的实例的结果。所述计算包括:处理第一输入实体的实例以生成第一输出实体的实例;基于所述一个或多个映射,确定与所述第一输出实体的一个或多个键属性的每个相对应的所述第一输入实体的一个或多个被映射的输入属性;基于所确定的一个或多个被映射的输入属性,生成所述第一输出实体的实例;计算所处理的所述第一输入实体的实例的总数;以及计算所生成的所述第一输出实体的实例的总数。

各个方面可以包括以下优点中的一个或多个。

该映射技术使得能够在输入数据到输出数据的映射中具有灵活性,同时保留特定特征用于标识存在于输入数据及输出数据内的特定实体的唯一实例。输入及输出数据可包括“实体数据”,其代表一个或多个实体。实体可被看作是从一信息领域中任何数量的特定种类的集合的抽象,其可独立存在,也可被唯一标识。例如,“账户”实体可由数据库中的表格表示,或由存储为数据集的文件(例如,带有限定的记录)表示。例如,在管理财务或商业数据的系统中,在数据库表或数据集文件中的单个记录(或“行”)每个可表示用于特定账户持有人的账户实体的不同实例。实体也可通过任何其它类型的数据结构表示,诸如特定类(class)的数据对象的集合表示,其中实体的不同实例与数据对象的不同实例相对应。每个实体可具有任何数目的属性。例如,在由数据表表示的实体中,该表的字段(或“栏”)可被定义为用于存储与该实体的特定属性相对应的特定类型的数据(例如,具有预定数据类型的变量)。用于账户实体的表,例如,可包括标签为“first_name(名)”、“last_name(姓)”及“ssn(用于社会保险号)”的字段,并且表中的记录(代表该账户实体的实例)每个可具有每个字段的相应值。

为保证实体的不同实例可被唯一地标识,实体的一个或多个属性被标识为作为该实体的唯一键的一部分的“键属性(keyattributes)”。在一些情况下,实体具有单一键属性。例如,标签为“master_account_number(主账号)”的字段可存储对于代表账户实体实例的每个账户记录是唯一的值。这样的单一键字段有时被称为“简单键(simplekey)”。在一些情况下,实体具有多个键属性,其共同构成唯一键(也被称为“复合键(compoundkey)”)。例如,字段“first_name”、“last_name”及“ssn”的组合(例如,串接)可充当键属性,其共同唯一地标识表示账户实体实例的记录。可能有多个字段具有唯一值(也被称为“候选键(candidatekeys)”),并且可选择这些字段中的一个(或者多个字段的组合)用作将被使用的唯一键(也被称为“主键(primarykey)”。有时在记录中加入一字段以存储将作为唯一键的一部分(也被称为“代理键(surrogatekey)”)的值。

当用户尝试在数据处理系统中处理特定数据时会出现问题,即该处理可能需要特定字段作为键属性,但现存数据可能有其它字段作为键属性。然而,在无法确保该数据实际具有正确属性(即,对于该键的每个唯一值有单一的记录)时,不能改变键字段。在现实的产业应用中可能有成千上万的记录,这样的重新组织对于用户执行可能不够实用。本文描述的技术使得即使当需要改变键时也能够高效执行处理,不需要用户逐条记录地重新组织输入数据(或者不需要用户从头写程序以实现)。例如,该技术确保在特定环境下可能将通过采用理想的字段作为键属性来实施需要的任何聚合(例如,从用于特定键值的多个记录中聚合数据)。处理输入数据以重新组织记录的结果可随后以输入记录及输出记录的总数的形式显示在用户界面内。

可用格式信息定义表示特定实体及其属性的实体数据的结构,诸如定义记录内的字段的数据库表或数据集文件的记录格式。除了将出现在每个字段中的值的数据类型及比特长度之外,记录的格式还可定义将采用哪些字段作为构成主键的键字段。映射过程使得用户能够定义输出实体的哪些属性为键属性。那些输出键属性中的一些可能已被映射到输入键属性,或那些输出键属性中的一些已被映射到输入实体的非键属性。通过自动比较已被映射到那些输出键属性的输入属性与输入属性,系统能够确定如何以维持能够唯一地标识输出实体的实例的定义明确的键属性的方式根据该映射生成输出实体的实例。从由输入数据表示的输入实体映射到由输出数据表示的输出实体,使得被映射的输出数据能够比起输入数据得到更高效地处理及/或管理。在一些情况下,用于多个相关实体的实体数据可定义实体的实例之间的层级结构关系,如下更详细地描述。映射过程能够重新组织这样的层级结构并确保实体仍保持定义明确的键属性。

本发明的其它特征及优点将通过以下描述及权利要求变得明显。

附图说明

图1是数据处理系统的框图。

图2a-2b是实体关系图。

图3a-3d是用户界面的部分的例子的屏幕截屏。

图4是用于生成数据流图的过程的流程图。

图5是数据流图的示意图。

具体实施方式

图1a示出可使用映射技术的数据处理系统100的例子。系统100包括数据管理系统102,数据管理系统102可包括一个或多个数据源,诸如存储设备或连接到在线(online)数据流,每个源可以以各种格式(例如,数据库表、电子表格文件、平面文本文件或由一台主机使用的本机格式)的任何一种来存储或提供数据。执行环境104包括映射模块106和执行模块112。执行环境104可以例如在合适的操作系统(诸如unix操作系统的一个版本)的控制下被托管在一个或多个通用计算机上。例如,执行环境104可以包括多节点并行计算环境,其包括使用多个中央处理单元(cpu)或处理器内核的计算机系统的配置,多个中央处理单元(cpu)或处理器内核或者是本地的(例如,多处理器系统,诸如对称多处理(smp)计算机),或者是本地分布的(例如,耦接为簇或大规模并行处理(mpp)系统的多个处理器),或者是远程或远程分布的(例如,经由局域网(lan)和/或广域网(wan)耦接的多个处理器),或它们的任何组合。

映射模块106被配置为从数据管理系统102读取输入数据,并且基于存储在执行环境104可访问的数据存储系统116中的一个或多个映射114将输入数据的实体映射为输出数据的实体。映射114各自限定输入实体的一个或多个输入属性与输出实体的一个或多个输出属性之间的对应关系。例如,对应可以是两个属性之间的对等,或者定义一个属性为另一个属性的函数的表达式。输出数据可以返回存储在数据管理系统102中或数据存储系统116中,或以其它方式使用。数据存储系统116可以包括存储介质的任何组合,包括易失性存储介质,诸如任何级别的缓冲存储器,或动态随机存取存储器(dram)中的主存储器,或非易失性存储设备,诸如磁性硬盘驱动器(或多个)。提供数据管理系统102的存储设备可以是执行环境104本地的,例如,存储在连接到托管执行环境104的计算机的存储介质(例如,硬盘驱动器108)上,或者可以是执行环境104远程的,例如,被托管在通过远程连接(例如,通过云计算基础架构提供)与托管执行环境104的计算机通信的远程系统上(例如,主机110)。

执行模块112使用由映射模块106生成的输出数据来实施数据处理任务,其中一些可以依赖于已被映射114定义的输出数据的数据格式。系统100还包括用户界面118(例如,与执行环境104通信或托管执行环境104的计算机的显示器的屏幕上显示的图形用户界面),在用户界面118中用户120能够定义映射114以及将由执行模块112执行的数据处理程序的其它方面。在一些实现方式中,系统100被配置为将应用程序开发为数据流图,数据流图包括通过顶点之间的有向链路(表示工作元素即数据的流动)连接的顶点(表示数据处理组件或数据集)。例如,这样的环境更详细地描述于公开号为2007/0011668、名称为“基于图形的应用程序管理变量(managingparametersforgraph-basedapplications)”的美国专利中,其通过引用并入本文。用于执行这样的基于图形的计算的系统描述于第5966072号、名称为“表示为图形的执行运算(executingcomputationsexpressedasgraphs)”的美国专利中,其通过引用并入本文。根据本系统制作的数据流图提供一种方法,其用于使得信息流入和流出由图形组件表示的单独的过程,用于在各个过程之间移动信息,以及用于限定各个过程的运行顺序。此系统包括从任何可用的方法(例如,根据图形的链接的通信路径可以使用tcp/ip或unix域套接字,或使用共享存储器在过程之间传递数据)当中选择过程间通信方法的算法。

映射模块106可以映射各种类型的实体的属性,实体可以表示在数据管理系统102可访问的输入数据内,例如包括数据集文件或数据库表。实体的数据内容可以被组织为具有用于相应属性的值的记录(也称为“字段”或“栏”),包括可能的空值。映射模块106通常开始于关于该实体中的记录的一些初始格式信息。在一些情况下,输入数据中的实体的记录结构可以最初不是已知的,而是在分析输入数据之后确定的。关于记录的初始信息可以包括,例如,表示不同的值的比特数、记录内的字段的顺序以及由比特表示的值的类型(例如,字符串,有符号/无符号整数)。

对于一些输入数据或输出数据,实体可以具有层级结构,其中各个实体根据层级结构彼此相关。在一般情况下,层级结构可以表示为通过有向边连接的顶点的图形(例如,有向非循环图(dag)),其中各个顶点表示各个实体,并且边表示实体之间的关系。在一些实现方式中,关系对应于实体之间的主键/外键关系。在其它实现方式中,关系对应于一个实体的实例嵌套于另一个实体的实例的属性内。每个顶点位于层级结构的特定层级。至少一个实体(例如,如果层级结构具有树结构则为根实体)位于层级结构中的最高层级,并且一个或多个实体位于层级结构的最高层级之下的一个或多个层级。位于低于最高层级的层级的每个实体是单个较高层级的实体(或“父实体”)的次级实体(或“子实体”)。例如,当关系是主键/外键关系时,孩子实体的实例具有外键字段,外键字段的值是父实体的特定实例的唯一主键值。当关系为嵌套关系时,子实体的实例包含在父实体的特定实例的属性内(例如通过存储子实例数据结构本身,或指向父实体的属性内的子实例数据结构实例的指针)。

这样的层级结构可以用实体关系(er)图进行图形表示。图2a示出了实体的输入层级结构200的例子的er图,其具有树结构。在最高层级处,“帐户(accounts)”实体具有标签为“master_account_number(主账号)”的单个属性,它是键属性,通过在属性标签后的“(k)”来指示。由于帐户实体没有其它键属性,master_account_number的值唯一标识帐户实体的不同实例。帐户实体还具有用于两个子实体之间的关系的属性:“查询账户(checkingaccounts)”实体和“储蓄账户(savingsaccounts)”实体。图形200中的父实体与每个子实体之间的连接指示了一对多的关系,这意味着对于该父实体的一个实例,有该子实体的0个、1个或多个相关联的实例。该一对多的关系被描绘为该父实体与该子实体之间的线,在子实体处以乌鸦脚(crow’sfoot)结束。

查询账户实体具有两个键属性:标签为“master_account_number”的属性及标签为“acct_id(账户身份)”的属性。master_account_number属性是外键,其存储父账户实体的关联实例的主键的特定值。acct_id属性是附加键属性,其形成的复合键唯一地彼此区分不同的查询账户,即使这些查询账户都是账户实体的同一个主账户实例的孩子(例如,如果与一特定主账户相关联的账户持有人具有多个查询账户)。相似的,储蓄账户实体有两个键属性:标签为“master_account_number”的属性及标签为“acct_id”的属性,其也可使得任何数量的储蓄账户能够被唯一地彼此区分。查询账户实体及储蓄账户实体中的每个也具有为这些实体的非键属性的其它属性:“first_name(名)”、“last_name(姓)”、“ssn(社会保险号)”、“balance(余额)”以及“interest_rate(利率)”。

图2b示出用于实体的输出层级结构210的例子的er图,其也具有树状结构,但实体数量与输入层级结构200不同。映射模块106(例如,从用户)接收到映射,其指定“账户持有人(accountsholders)”输出实体将被生成为输出层级结构210的一部分。在本例子中,作为输出层级结构210中的一部分的其它输出实体(例如,顶层级实体账户,及其子实体查询账户及储蓄账户)被映射自输入层级结构200中可见的具有对应标签的实体。账户持有人实体对于每个账户持有人具有带有属性的实例,其来自一个或多个查询账户实体的实例,和/或来自一个或多个储蓄账户实体的实例。特别地,账户持有人实体的实例中的4个属性(“master_account_number”、“first_name”、“last_name”和“ssn”)来自查询账户实体或储蓄账户实体之一的实例的具有对应标签的属性,且账户持有人实体的实例的其中一个属性(“balance”)基于多个实例的加总函数计算得出,如下更详细地描述。账户持有人实体具有两个键属性:master_account_number及ssn。master_account_number属性仍是外键,其存储父账户实体的相关实例的主键的特定值。ssn属性(存储账户持有人的社会保险号)是附加键属性,其形成的复合键唯一地彼此区分不同的账户持有人(即账户持有人实体的各个实例),即使这些账户持有人都是账户实体的同一主账户实例的孩子。

图3a示出用户界面300的例子的截屏,用于按照显示在输入区域302a的输入层级结构定义显示在输出区域302b的输出层级结构。显示于该截屏的用户界面300的状态对应于下面的例子,在该例子中,用户在源到目标映射区域304内提供了定义所期望的映射114的信息,并执行了用以从输入层级结构的记录生成输出层级结构的记录的转化。输入层级结构根据存储的格式信息显示,诸如按照系统100可解读的语法定义的记录格式(例如,数据操纵语言(dml)语法,或可扩展标记语言(xml)语法),或数据库表模式。以下是记录格式的例子,其指定本例的输入层级结构采用dml语法,该语法将输入属性定义为输入记录的字段。

外部一对关键词“record(记录)”及“end(结束)”定义代表顶层级(“in(输入)”)实体的记录,内部一对关键词“record”及“end”定义代表子(查询账户(checking_accounts)及储蓄账户(savings_accounts))实体的记录。代表实体的属性的字段被列在关键词“record”与“end”之间。记录格式可定义将被包括到记录中用于存储为由该记录代表的高层级实体的非必要部分的值的字段。在本例子中,new_line(新行)字段出现在记录格式中的查询账户及储蓄账户记录之后,且不作为“in”实体的属性,更确切地说是用于在例如文本编辑器中显示的列表中在代表“in”实体的各个实例的不同实际记录之间提供硬编码的新行字符的语法元素。

映射模块106根据在源到目标映射区域304内定义的映射114生成合适的记录格式,其将用于代表“out(输出)”实体实例的记录。以下是记录格式的例子,在本例子中该记录格式使用与输出记录的字段相同的定义输出属性的dml语法来指定输出层级结构。

在用户提供对输出层级结构中的各种实体的属性的映射之后生成输出记录格式,而且用户能标识(例如,在输出区域302b内)每个输出实体的哪些属性将被用作键属性。上述关于“输出实体的哪些属性被用作键属性”的信息,以及关于“输入实体的哪些属性已被映射到那些键属性(被称为输出键的“反图像(inverseimage)”)”的信息,被用于生成数据流图,然后执行该数据流图以生成代表输出层级结构的实体实例的实际记录,如下更详细地描述。

显示的用户界面300包括代表带有标签“in”的位于输入区域302a顶部的输入层级结构顶层级实体的图标(描绘一表格)以及代表带有标签“out”的位于输出区域302b顶部的输出层级结构顶层级实体的图标(描绘一表格)。每个实体的实例的数量被显示于方括号中,位于标签旁边。例如,在生成输出层级结的记录后,为两个顶层级实体都显示“[5recs]”,表明存在存储该实体的不同的相应实例的内容的5个记录。在本例子中,顶层级输入实体及顶层级输出实体分别对应于图2a及图2b中的er图中的账户实体。这些顶层级实体中的每个包括代表相同属性及次级实体的字段,如该er图所示,包括代表键属性master_account_number的字段,显示于用于顶层级实体的图标下方紧跟着出现的图标之后。与属性相对应的字段以描述字母“a”的图标显示,这表明它作为具有“字符串”类型的值出现在记录中,或以描述数字“12”的图标显示,这表明它作为具有“十进制小数”类型的值出现在记录中。在用户界面300中,每个作为键的一部分的字段(例如,键属性)在用户界面300内通过出现在字段的图标旁边的描述键的图标来标识。

用户界面300使得输入区域302a及输出区域302b能够以不同的查看模式查看,可在选项区域306a及选项区域306b分别进行选择。在“层级结构查看模式”中,用于父实体的次级实体的表格图标被以与该父实体的属性相同的量缩进显示,而引用父实体键属性的键属性没被显示在子实体中。图3a示出在该层级结构查看模式下的输入区域302a及输出区域302b。对于输入区域302a,用于查询账户实体及储蓄账户实体的表格图标出现在其下面,并且与master_account_number键属性的图标水平对齐。对于输出区域302b,用于账户持有人实体及查询账户实体及储蓄账户实体的表格图标出现在其下面,并且与master_account_number键属性的图标水平对齐。

具有至少一个次级实体的每个实体具有由一个或多个键属性组成的键。这使得每个次级实体能够具有对应的外键属性,对于该次级实体的每个实例,该外键属性标识与该次级实体相关的父实体的唯一实例。存储父实体的键的(外键)值的键属性的存在,在该层级结构查看模式下是隐式的,也就是说不显示这些属性。例如,对于输入层级结构及输出层级结构二者,查询账户次级实体都具有一带有键图标的键属性acct_id,及另一个存储具有“in”或“out”顶层级父实体的master_account_number键属性的值的键属性,共同形成一复合键。在该层级结构查看模式下,表格图标被以三角形显示,用于展开或折叠实体以显示或隐藏其属性及次级实体(如果有的话)。

在“实体查看模式”中,用于层级结构不同层级的实体的表格图标被以彼此相同的量缩进显示,而引用父实体的键属性的键属性显示在子实体中。图3b示出在该实体查看模式下的输入区域302a及输出区域302b。对于输入区域302a,用于查询账户实体及储蓄账户实体的表格图标出现在其下面,并且与用于“in”实体的图标水平对齐。对于输出区域302b,用于账户持有人实体及查询账户实体及储蓄账户实体的图标出现在其下面,并且与“out”实体的图标水平对齐。在该实体查看模式中,存储父实体的键的(外键)值的键属性的存在,在该层级结构查看模式下是明确显示的(例如,名称为“in.master_account_number(输入主帐号)”和“out.master_account_number(输出主帐号)”的字段)。在该实体查看模式,表格图标以三角形显示,用于展开或折叠实体以显示或隐藏其属性,但任何次级实体都是独立地展开/折叠的。

如图3a及图3b所示,源到目标映射区域304包括标有行号数字308的行,用于定义源和目标之间的映射。该映射可以以任何顺序输入,并且用户可以可选地使用一些行来提供注释,以描述所定义的映射的类型。作为定义映射的一部分,用户指示输出层级结构的实体中的哪些属性将成为用于唯一地标识实体的不同实例的键属性。基于键属性的该指示,映射模块106确定哪些映射为“直接映射”而哪些映射为“聚合映射”,如下更详细地描述。对于直接映射(straigtmapping),输入层级结构中的实体的实例与输出层级结构中的对应实体之间存在默认的一对一关系。然而,不一定总是一对一的关系,例如,输入实体的一些实例会被过滤掉,以便它们不以对应于输出实体的实例出现,并且对应实体不一定具有所有的相同属性或次级实体,如下更详细地描述。对于聚合映射(aggregatedmapping),在按照输入实体和/或临时实体生成输出实体的实例的过程中,执行模块112会执行一个或多个聚合操作,如由映射模块106所指定的,如下更详细地描述。对于聚合映射,在输入层级结构中的实体的实例与输出层级结构中的对应实体的实例之间一般不存在一对一的对应关系。

源到目标映射区域304包括:源栏310,用于用户从输入层级结构或临时实体标识作为源的输入实体;以及目标栏312,用于用户从输出层级结构或临时实体中标识作为目标的输出实体。临时实体例如可以是已被定义为目标的,但不包括在输出层级结构内的实体。具有过滤栏314,其使得用户能够定义可选的过滤器,过滤器应用过滤功能来标识出源的要被过滤掉的特定记录使其不作为映射后的目标的记录通过。具有记录计数栏316a及316b,其分别提供与每个源及目标实体的实例相对应的记录的数量。具有视图栏318a及318b,其分别提供用户可交互的图标,以导航到与源或目标实体相对应的实例的视图(即记录)。

图3c及图3d示出用户界面320的例子的截屏,用户界面320用于定义在源到目标映射区域304的特定行上标识的源与目标之间的映射。用户例如通过选择映射栏319的特定行的图标能够导航到该用户界面320。在图3c中,截屏示出从“in.checking_accounts(输入查询账户)”到“out.checking_accounts(输出查询账户)”的映射(源到目标映射区域304的第4行)。在特定上下文中使用点标记以明确指示属性或次级实体属于哪个实体,将该实体的名称作为前缀。在某些上下文中,如果关于属性或次级实体属于哪个实体没有歧义,则该属性或次级实体的名称可不带前缀地显示出来(或作为输入接收)。输入区域322列出了可作为用在用户输入到表达式/规则栏324的表达式中的输入的实体及其属性。输出/内部名称栏326在分开的行中包括输出实体out.checking_accounts的每个属性,其由表达式/规则栏324中的相应表达式计算得出。该例子包括输出实体out.checking_accounts的实例的5个属性,其被定义为具有与输入实体in.checking_accounts的对应实例相同的值。特别的,定义以下属性:out.master_account_number(输出主账号)(外键,其引用父实体“out”的对应属性的值)、out.checking_accounts.acct_id(输出查询账户身份)、out.checking_accounts.ssn(输出查询账户社会保险号)、out.checking_accounts.balance(输出查询账户余额)及out.checking_accounts.interest_rate(输出查询账户利率)。in.checking_accounts实体的对应属性被单独列出在表达式/规则栏324(对于这些被假定为来自输入层级结构的属性名称无需前面的“in.”前缀)。这样,在此特定的例子中还留下未定义为out.checking_accounts实体的对应属性的in.checking_accounts实体的其它两个属性:checking_accounts.first_name(查询账户名)和checking_accounts.last_name(查询账户姓)。用户界面320还包括计算值栏328,其示出了在每行中定义的对应输出属性的值。计算那些输出属性所用的输入属性的值也被示出在输入区域322中,位于表示该属性的字段的名称之后的括号中。类型栏330示出图标,该图标指示在该行定义的映射是“简单映射”(采用箭头图标)还是“复杂映射”(采用虚线图标)。简单映射是将输出属性映射到相同名称的输入属性,或为输出属性分配恒定值的映射。所有其它的映射都是复杂映射。如果在其对应的用户界320中定义的所有映射为简单映射,则用于用户界面320的一行的映射栏319具有简单映射图标,而如果在其对应的用户界320中定义的任何映射为复杂映射,则用于用户界面320的一行的映射栏319具有复杂映射图标。

在图3d中,截屏示出从“in.checking_accounts”到“account_holders(账户持有人)”的映射(源到目标映射区域304的第2行)。用于该映射的输出/中间名称栏326在分开的行中包括输出实体out.account_holders(输出帐户持有人)的每个属性,其由在表达式/规则栏324中的相应的表达式计算得出。本例子包括输出实体out.account_holders的被定义的五个属性。这五个属性中的四个为简单映射,其具有按照输入实体的实例的对应属性定义的输出实体的实例的属性(即具有相同的字段名称)。该五个属性中的一个是复杂映射,其按照潜在的多个输入实体的实例的属性定义属性out.account_holders.balance(输出账户持有人余额)(用于实体out.account_holders的实例)。在本例子中,在表达式/规则栏324中的用于out.account_holders.balance的表达式如下所示。

sum(in.checking_accounts.balance,in.checking_accounts.ssn)+sum(in.savings_accounts.balance,in.savings_accounts.ssn==in.checking_accounts.ssn)

该表达式定义了当执行模块112生成输出层级结构的输出实体的实例时执行的聚合操作。该聚合操作为使用加总函数定义的加总,该加总函数具有以下语法:sum(<aggregation_attr>,<match_attr>==<key_attr>)。该函数的第一变量“<aggregation_attr>”为将作为该加总中的被加数的属性。该总和通过变量实体或多个变量实体(即,任何实体其属性被提供用作变量<aggregation_attr>的)的多个实例出现。该函数的第二变量“<match_attr>==<key_attr>”本身为一表达式,其指示为了使第一被加数变量被包括在总和中所必须满足的条件。键属性<key_attr>为用在映射中的输入实体的键属性,并且属性<match_attr>为将被匹配到该键属性的变量实体的“匹配属性”。该加总函数具有可选的语法,其允许在与<key_attr>相同的特例中属性<match_attr>被单独列出。当然,用户也可逆序输入表达式“<key_attr>==<match_attr>”,可达成同样效果。因此,对于以上表达式,被执行的聚合找到in.checking_accounts实体或in.savings_accounts实体二者其一的所有实例的“balance(余额)”属性的值,并在它们相应实例的ssn属性相同时将它们加总。这对于snn的每个唯一值产生一个加总的总结果,以分配到具有ssn的该值的out.account_holders实体的实例的out.account_holders.balance属性作为out.account_holders.ssn(输出账户持有人ssn)属性。

在本例子中,生成输出层级结构的输出实体的实例的执行模块112的结果产生9个out.account_holders记录,这表明该聚合操作在8个in.checking_accounts记录及4个savingsaccounts记录中发现了snn属性的9个唯一值,该8个in.checking_accounts记录及4个savingsaccounts记录上是在5个最高层级“in”记录中找到的。作为执行由用户定义的映射的结果所生成的记录的数量显示在输出区域302b内,其提供了具有价值的反馈以帮助用户确定所生成的记录的数量是否与预期相符,以及核实输入的表达式是否正确。除了每个实体的记录的总数之外,对于输入层级结构及输出层级结构两者,各种层级结构统计(例如,最小值及最大值)都可被计算及显示于用户界面300中。如果使用过滤器,则可显示被过滤器拒绝及/或允许的记录的数量。

在一些实施方式中,用户界面320可从在输入实体的字段与输出实体的字段之间的默认映射开始,该默认映射基于与字段相关联的名称(例如,商业名称,技术名称)的相似性分析及/或键字段之间的分析自动生成。用户可确定接受哪个默认映射(如果有的话),或可关闭该自动映射功能。默认映射功能可使用户无需不得不手动为所有的字段提供映射,而是把重点放在为感兴趣的特定的字段提供映射。

在一些实施方式中,执行模块112执行由映射模块106生成的数据流图以处理输入记录(即,输入层级结构的输入实体的实例)以生成输出记录(即,输出层级结构的输出实体的实例)。图4示出映射模块106用以自动生成这样的数据图的程序400的例子。程序400包括与构造数据流图相关的不同步骤,该部分在下面描述生成如图5所示的示例性数据流图500中更详细地说明。程序400的其它的例子可以以不同的顺序执行相同的步骤,可使用不同的循环设置,或可包括以不同顺序构成数据流图(或其它等同方案)的不同步骤。

程序400包括步骤(402),其提供输入组件和输出组件,输入组件代表存储表示输入层级结构中的实体的实例的记录的输入数据集,输出组件代表存储表示在输出层级结构中的实体的实例的记录的输出数据集。程序400还包括步骤(404),其提供分裂组件和组合组件,分裂组件耦接到所述输入组件,组合组件耦接到所述输出组件。分裂组件被配置用于提取代表嵌入于另一个实体的实例的数据结构内的次级实体的实例的任何记录(或其它向量数据结构)。映射模块106基于映射的输入属性来配置所述分裂组件。因此,分裂组件的至少一些输出端口提供代表被用作一个映射的源的输入实体的实例的记录的流。提取嵌套于其它记录中的任何记录,使得从其父记录中将代表较低层级实体的实例的记录移除,而且代表较高层级实体的实例不包括任何嵌套的子记录。所述组合组件被配置用于通过将代表次级实体的实例的任何记录插入到更高层级实体的实例的数据结构中,来执行分裂组件的逆处理。映射模块106基于映射的输出属性配置所述组合组件。

程序400具有外部循环406和内部循环408,通过所述外部循环处理到所述组合组件的输入,通过所述内部循环处理所述分裂组件的输出。用于外部循环406的循环条件410确定组合组件是否还有更多的输入端口需要处理,其中输入端口的数量通常基于为输出层级结构紧接根层级下方的最高层级所生成的输出实体的数量。在外部循环406中,映射模块106生成(410)数据流图中所需的任何组件,无论用作为映射每个输出实体的输入的分裂组件的输出的数量为多少。在内部循环408中,映射模块106生成(412)为分裂组件的每个输出(其用作映射的输入)执行各种计算所需的数据流图中的任何组件。如上所描述,对于每个映射,被映射的输入属性(即,映射到输出实体的键属性的那些键属性)包括少于输入实体的全部键属性的属性,至少一个组件执行聚合操作以聚合输入实体的对于被映射的输入属性共享相同的值的多个实例。取决于由分裂组件提供的记录的输入属性的特征,根据需要也可以包括其它组件。

图5示出由映射模块106生成以体现由用户定义的映射114的逻辑的数据流图500的一个例子,然后由执行模块112执行所述图以生成输出数据。数据流图500包括输入组件502a和输出组件502b,输入组件502a代表存储代表称为inputaccounts.dat的输入层级结构中的实体的实例的记录的输入数据集,输出组件502b代表存储代表称为outputaccounts.dat的输出层级结构中的实体的实例的记录的输出数据集。

映射模块106采用分裂组件504以从输入组件502a中检索输入记录,以及采用组合组件506以在输出组件502b中存储输出记录。在本例子中,分裂组件504在其输入端口处接收顶层级记录的流,顶层级记录包括作为嵌套的字段值的矢量任何较低层级实体的嵌入的记录,其格式根据上述dml输入记录格式。可替代地,组件的其它类型可用于接收输入记录及存储输出记录,诸如如果实体对应于数据库内的表并且这些实体的实例对应于这些表的例如各行则读取及写入数据库的组件。

分裂组件504的每个输出端口提供代表用作一个映射114的源的输入实体的实例的记录的流。提取嵌套在其它记录内的任何记录,使得代表较低层级实体的实例的记录被从其父记录中移除,并且代表较高层级实体的实例的记录不包括任何孩子记录。映射模块106基于已定义的特定映射114的结构(包括其为直接映射还是聚合映射)确定分裂组件504所需要的输出端口的数量。映射模块106确定组合组件506所需要的输入端口的数量(在本例子中为四个)。

映射模块106基于用户已经为作为至少一个映射的目标的实体(包括输出层级结构的实体或任何临时实体)定义的键属性来确定映射为直接映射还是聚合映射。对于目标实体的每个键属性(其共同构成其主键),映射模块106确定作为映射的源的实体(输入层级结构的实体或临时实体)的对应输入属性。这些“被映射的输入属性”可被直接映射到目标实体的键属性(例如,在简单映射中),或可被用在用于确定目标实体的键属性的表达式中(例如,在复杂映射中)。

取决于这些被映射的输入属性的特征,映射模块106将映射分类为“直接映射”或“聚合映射”。映射模块106将被映射的输入属性与源实体的一个或多个键属性(其共同构成其主键)相比较以确定被映射的输入属性是否覆盖源实体的主键。如果被映射的输入属性包括源实体的全部键属性,则被映射的输入属性覆盖所述主键。如果被映射的输入包括源实体的少于全部的键属性,则被映射输入属性未覆盖主键。如果被映射的输入属性覆盖主键,则该映射对于目标实体的每个实例(具有特定的目标主键)保证能找到源实体的唯一实例(具有特定的源主键),并且该映射被归类为“直接映射”。如果被映射的输入属性未覆盖主键,则该映射不能保证为目标实体的每个实例找到源实体的唯一实例,并且该映射被归类为“聚合映射”。

当确定被映射的输入属性是否覆盖主键时,可能有必要确定是什么种类的映射存在于目标实体的键属性与源实体的键属性之间。如果该映射不是一对一映射(而是例如多对一映射),则可能一个主键值将映射到与另一主键值相同的值,并且因此不保证对于目标实体的每个实例具有源实体的唯一实例。如果由用户提供的表达式定义的函数f(x)在数学意义上是一对一的(即,x!=y意味着f(x)!=f(y),其中“!=”表示不等于),则该映射为一对一映射。如果该映射为一对一映射,则一个或多个被映射的输入属性与输出实体相应的键属性具有一对一的对应关系。

对于聚合映射,执行聚合操作以潜在地允许源实体的多个实例贡献信息(例如,其属性值)到目标实体的特定实例的计算。如果结果是源实体仅有单个实例匹配于目标实体的主键,则聚合操作仅仅从该一个实例获得信息用于该映射。在一些情况下,即使源实体具有多个实例与目标实体的主键相匹配,聚合操作可能也仅选择那些实例中的一个用于该映射。

在本例子中,映射模块106确定有三个直接映射和两个聚合映射,并且生成数据流图500执行那些映射所需要的组件。一个输出端口将代表顶层级“in”实体的实例的记录提供给映射组件512a以用于位于源到目标映射区域304第1行的直接映射。其它输出端口将代表in.checking_accounts及in.savings_accounts实体的实例的记录分别提供给映射-3组件512b及映射-4组件512c,用于位于源到目标映射区域304第4行及第5行的直接映射。用于这些直接映射的组件(映射组件512a、映射-3组件512b及映射-4组件512c)执行从源实体的实例读取属性值及将那些被映射的属性值写入到目标实体的对应实例的操作,其被组合组件506的端口接收。这些组件可被配置为可选地应用已定义的任何过滤器用于对应的映射,或者可将分立的组件加入数据流图500中以应用这样的过滤。这三个映射为直接映射的原因是因为形成输出实体的主键的键属性被映射到共同形成输入实体完整主键的相应键属性。例如,对于第4行上的映射,out.checking_accounts实体的主键由映射到由键属性in.checking_accounts.acct_id及in.master_account_number构成的in.checking_accounts实体的完整主键的键属性out.checking_accounts.acct_id及out.master_account_number构成。

分裂组件504的其它输出端口提供代表被用于表达式引用的实体实例的记录,所述表达式用于位于源到目标映射区域304的第2行及第3行的两个聚合映射。这两个映射为聚合映射的原因是因为形成输出实体的主键的键属性被映射到的不包括输入实体的全部键属性的相应属性。例如,对于第2行的映射,out.account_holders实体的主键由键属性out.account_holders.ssn及out.master_account构成,其中不包括in.checking_accounts实体的主键的一个键属性(即in.checking_accounts.acct_id属性)。为确定数据流图500如何为特定聚合映射执行聚合操作,映射模块106首先确定由用户在用户界面320中提供的表达式是否为使用在聚合映射中的源实体及目标实体的属性定义这样的聚合操作。如果是,则映射模块106会将归纳(rollup)组件加入到数据流图500,归纳组件执行聚合操作(也被称为“归纳”操作)以聚合对于被映射的输入属性具有相同值的输入实体的多个实例。如果由用户提供的表示式对于在聚合映射中使用的属性不提供定义这样的聚合操作的表达式,则映射模块应用将由数据流图500执行的默认聚合操作。例如,可包括“去重复(de-duplication)”操作作为由归纳组件实施的任何聚合操作中的一部分,其中使用来自多个实例中最后一个的属性值。对于每个聚合映射插入这种归纳组件保证了,无论用户是否为映射源实体及目标实体属性提供明确的聚合操作,都会有具有特定主键的目标实体的单个唯一的实例。

分裂组件504的输出端口将代表in.checking_accounts实体及in.savings_accounts实体的实例的记录分别提供给归纳组件514a和归纳-1组件514b,用于位于源到目标映射区域304第2行的聚合映射。由于用于此映射的属性的表达式包括两个加总形式(即,在表达式/规则栏324第4行上)的聚合操作的一个表达式,所以映射模块106为每个加总添加一归纳组件来在形成目标实体的主键的键属性上执行归纳。在本例子中,目标实体的主键包括以下属性:out.account_holders.ssn及out.master_account_number。归纳组件514a通过为基于键属性满足被加数条件的所有实例加入被加数变量in.checking_accounts.balance来执行第一加总。在本例子中,输出实体out.account_holders在其主键中包括ssn,然而ssn不是输入实体in.checking_accounts的主键的一部分,这意味着已定义的加总使用ssn作为匹配属性可能找到具有相同ssn值的多个输入实体。归纳-1组件514b通过为基于键属性满足被加数条件的所有实例加入被加数变量in.savings_accounts.balance来执行第二加总。

映射模块106添加其它组件以完成聚合操作。连接(join)组件516a添加由归纳组件执行的键属性值是相同的两个加总的发现结果,并且连接组件516a还在其输出端口上将连接的输出记录提供给映射-1组件512d。映射-1组件512d对连接的记录中的两个值执行加总,并在其输出端口上为记录提供最终结果作为out.account_holders.balance属性的值,连同与所述最终结果相关联的键属性的特定值。

类似地,其它输出端口将代表in.savings_accounts及in.checking_accounts实体的实例的记录分别提供给归纳-3组件514c及归纳-4组件514d,用于位于源到目标映射区域304第3行的聚合映射。用于此映射的属性的表达式也包括了包括两个加总形式的聚合操作的一个表达式。因此,存在对应的归纳组件(归纳-3组件514c及归纳-4组件514d),以及连接和映射组件(连接-2组件516b及映射-2组件512e),执行如上描述的相似操作。

映射模块106将收集(gather)组件518插入数据流图500以收集对于相同目标实体(out.account_holders)的两个连续映射的结果,其通过接收的记录的两个流形成记录的单个流(例如,通过将来自一个流的记录附加到来自其它流的所有记录之后)。映射模块106还插入去重复组件420以移除由两个映射生成的任何重复记录。例如,来自第2行的映射可能已找到没有带有相同的ssn的对应储蓄账户的查询账户并且来自第3行的映射可能已找到没有带有相同的ssn的对应储蓄账户的储蓄账户,但两个映射可能找到了带有相同的ssn的一对查询账户和储蓄账户。

对于一些映射,映射模块106可能需要添加额外的组件到所生成的数据流图。例如,基于输入层级结构的输入层级及输出层级结构的输出层级,数据流图可能需要执行各种操作,以便以设定的映射规则从输入记录的流将特定信息放入输出记录的正确字段中。对于聚合映射,可能需要归纳组件以执行相关联的聚合操作,然而可能仍需要其它归纳组件以执行额外的聚合操作。如果输出字段中的信息上从两个不同的输入字段的信息得到的,则可能需要连接组件。为来确定是否包括例如排序组件,映射模块106比较排序键是如何映射的以确定是否及哪里需要排序操作(由排序组件执行)。在一些实施方式中,映射模块106改变所生成的数据流图以使计算的特定部分最优化,诸如移除一些部分以减少冗余,或将一些部分替换为更少或更高效的组件。除了生成数据流图500的各个组件及适当地连接它们的端口之外,映射模块106可生成可能是生成被映射的输出数据所需要的或用于向用户提供跟踪信息所需要的其它数据结构。例如,映射模块可配置为存储用于生成示出了输入实体(即输入记录)的对应实例的输出实体的特定实例(即输出记录)的族系的展示的族系信息,其中通过这些输出实体的对应实例生成输出实体的所述特定实例并且在这些记录和任何中间记录上执行操作。

这些映射技术可用在数据流图的一部分被元程序化(metaprogrammed)的情形(即,基于一些用户定义的约束条件自动被生成)。在一个这样的例子中,将创建一个数据流图以根据用户定义的转化将来自用户定义输入格式的输入数据转化为用户定义的输出格式。数据流图可包括通用集合图,其包括子图界面,如例如描述于2014年12月5日递交的、名称为“用于子图的管理界面(managinginterfacesforsub-graphs)”、序列号为14/561,435的美国申请专利,其通过引用并入本文。子图界面使得至少部分从用户输入中获取的子图的特定实施方式在运行时间之前能够被插入集合图中。就在运行时间之前,可能会询问用户与输入格式、输出格式及/或在输入格式的字段与输出格式的字段之间的映射相关的若干问题。基于用户对这些问题的回答,采用映射技术自动生成子图的实施方式(即,元程序化)。

以上描述的映射方法可例如使用执行适当的软件指令的可编程计算系统实现,或实现于合适的硬件上,诸如现场可编程门阵列(fpga),或以一些混合形式实现。例如,在编程的方法中,软件可以包括一个或多个计算机程序中的过程,所述一个或多个计算机程序被执行于一个或多个程序化的或可编程的计算机系统(其可以是各种架构,诸如分布式、客户端/服务器、或网格式)上,每个计算机系统包括至少一个处理器,至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件),至少一个用户界面(使用至少一个输入设备或端口以接收输入,及使用至少一个输出设备或端口以提供输出)。软件可以包括一个更大程序的一个或多个模块,例如,提供与设计、配置和执行数据流图有关的服务。程序的模块(例如,数据流图的元素)可被实现为符合存储在数据存储库中的数据模型的数据结构或其它组织形式的数据。

软件可以设置在有形的、非临时性介质上,诸如cd-rom或其它计算机可读介质(例如,通用或专用计算系统或设备可读的介质),或通过网络通信介质递送(例如,以编码传播信号)到执行软件的计算机系统的有形、非临时性介质。一些或全部的处理可以在专用计算机上或者使用专用硬件执行,诸如协处理器或现场可编程门阵列(fpga)或专用的特定应用集成电路(asic)。处理可以分布式方式来实现,其中由软件指定的不同计算部分可由不同的计算元件执行。每个这样的计算机程序优选地存储在或下载到由通用或专用可编程计算机可访问的存储设备的计算机可读存储介质(例如,固态存储器或介质,或者磁或光介质),用于在计算机读取存储设备介质时配置和操作计算机以执行本文描述的处理。本发明的系统也可被认为实现于有形的、非临时性介质,其配置有计算机程序,其中,如此配置的介质使计算机以特定和预定的方式操作以执行本文所描述的一个或多个处理步骤。

已经描述了本发明的数个实施例。然而,可以理解的是,前述描述旨在说明而并不构成对本发明范围的限制,本发明的范围由以下的权利要求的范围来限定。因此,其它实施例也在以下权利要求的范围之内。例如,在不脱离本发明的范围的情况下可以进行各种修改。另外,上述一些步骤可以是顺序无关的,因此可以与所描述的不同的顺序来执行。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1