CN107135663A - 影响分析 - Google Patents

影响分析 Download PDF

Info

Publication number
CN107135663A
CN107135663A CN201580072270.6A CN201580072270A CN107135663A CN 107135663 A CN107135663 A CN 107135663A CN 201580072270 A CN201580072270 A CN 201580072270A CN 107135663 A CN107135663 A CN 107135663A
Authority
CN
China
Prior art keywords
data
parameter
logical data
change
conversion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201580072270.6A
Other languages
English (en)
Other versions
CN107135663B (zh
Inventor
乔尔·古尔德
斯科特·斯图德尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of CN107135663A publication Critical patent/CN107135663A/zh
Application granted granted Critical
Publication of CN107135663B publication Critical patent/CN107135663B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation

Abstract

本发明提供了方法、系统和设备,所述设备包括编码在计算机存储介质上以供影响分析的计算机程序。方法之一包括接收与至少两个逻辑数据集有关的信息,所述信息针对各个逻辑数据集而标识该逻辑数据集中的字段以及与该字段有关的格式信息。所述方法包括接收与转换有关的信息,该信息标识转换要从中接收数据的第一逻辑数据集以及被提供转换后的数据的第二逻辑数据集。所述方法包括接收对字段至少之一的一个或多个提出的改变。所述方法包括基于与所述转换有关的信息以及与所述第一逻辑数据集和所述第二逻辑数据集有关的信息来分析所提出的改变。所述方法包括基于分析来计算所提出的改变的度量。所述方法还包括存储与所述度量有关的信息。

Description

影响分析
背景技术
本说明书涉及系统分析。
计算机用于处理大量数据。一般来说,使用至少部分地由计算机程序员编写的计算机程序来处理数据。这些数据处理系统可以是复杂的。
业务和技术要求可以要求程序改变。实现改变要求分配人员以作出改变。
发明内容
一般来说,在方面1,方法包括如下动作:接收与至少两个逻辑数据集有关的信息,与逻辑数据集有关的信息用于针对各个逻辑数据集而标识该逻辑数据集中的至少一个字段的标识符以及与该字段有关的格式信息;接收与转换有关的信息,该信息用于标识转换要从中接收数据的第一逻辑数据集以及要被提供转换后的数据的第二逻辑数据集;接收对逻辑数据集的字段至少之一的一个或多个提出的改变;基于与所述转换有关的信息以及与所述第一逻辑数据集和所述第二逻辑数据集有关的信息来分析所述一个或多个提出的改变;基于所述分析来计算所提出的改变的一个或多个度量;以及存储与所述一个或多个度量有关的信息。
该方面的其它实施例包括对应的计算机系统、设备以及记录在一个或多个计算机存储装置上的计算机程序,其各自被配置为执行所述方法的动作。一个或多个计算机的系统可被配置为通过在系统上安装在操作中使该系统执行特定动作的软件、固件、硬件或其组合来执行该动作。一个或多个计算机程序可被配置为通过包括在由数据处理设备执行时使该设备执行特定动作的指令来执行该动作。
所述方法包括根据方面1的方面2,其中,所计算的度量提供直接影响的测量结果。所述方法包括根据方面1或2的方面3,其中,所计算的度量提供间接影响的测量结果。所述方法包括根据权利要求1、2或3的方面4,其中,所提出的改变是包括数据集中的字段格式的改变或转换的改变的组之一。所述方法包括根据方面1、2、3或4的方面5,其中,所述转换包括要应用于来自所述第一逻辑数据集的数据的一个或多个规则,以及分析所述一个或多个提出的改变还基于所述一个或多个规则。所述方法包括根据方面1、2、3、4或5的方面6,其中,所述方法还包括该方面的其它实施例的动作,包括基于所述度量将成本与所提出的改变相关联。
方面可以包括以下优点中的一个或多个优点。可以估计作出改变的范围和成本。可以标识改变将影响程序的位置。可以适当地分配资源。
根据以下描述和权利要求书,本发明的其它特征和优点将变得显而易见。
附图说明
图1示出针对多个可执行程序的数据沿袭(data lineage)的示例。
图2示出示例规则集以及该规则集的输入。
图3示出人可读规则集300的示例。
图4示出将规则从人可读形式转换为包含机器可读代码的转换的处理。
图5示出基于带注释的代码而生成报告的报告生成器。
图6示出可以使用影响分析技术的数据处理系统的示例。
图7是典型影响分析过程的流程图。
图8A是示出主要元件的相互关系的本发明的一个实施例的框图。
图8B是数据流图的框图。
图9是包含具有指定运行时参数的上卷组件和排序组件904的典型图的框图。
图10是表示将与图相关联的运行时参数网格的图形对话框的一个实施例的示图。
图11是总结使用运行时参数的处理的流程图。
图12是由关键字提示生成的图形对话框的一个实施例的示图。
图13是由过滤提示生成的图形对话框的一个实施例的示图。
图14是由上卷提示生成的图形对话框的一个实施例的示图。
图15是由重新格式化提示生成的图形对话框的一个实施例的示图。
图16A是第一个图中的合并联接(MergeJoin)组件联接来自文件A和B的数据并将结果输出至输出文件的框图。
图16B是第二个图中的上卷(Rollup)组件聚合来自文件A的数据并将结果输出至输出文件的框图。
图16C是图中的合并联接(MergeJoin)组件联接来自文件A和B的数据并且上卷(Rollup)组件聚合所产生的数据并将最终结果输出至输出文件的框图。
图17是呈现具有条件解释控件的条件的图形对话框的一个实施例的示图。
图18是示出发生中毒的情况的图的示图。
图19是总结包括完全移除(Remove Completely)条件组件的图的运行时准备的处理的流程图。
图20是总结包括针对本发明的特定实施例的用流代替(Replace WithFlow)条件组件的图的运行时准备的处理的流程图。
图21是表示在没有运行时参数的情况下的上卷应用的图的示图。
图22是表示图21中的上卷应用的运行时参数化版本的图的示图。
图23是表示针对图22的示例应用的运行时参数网格的图形对话框的一个实施例的示图。
图24A是表示由Web界面(Web Interface)根据图23的参数网格中的信息而生成的表单的图形对话框的一个实施例的示图。
图24B是用户用参数值填写的图24A中的表单的示图。
图25是表示运行时参数化上卷和联接应用的图的示图。
图26是表示针对图25的示例应用的运行时参数网格的图形对话框的一个实施例的示图。
图27是表示由Web界面(Web Interface)根据图26的参数网格中的信息而生成的表单的图形对话框的一个实施例的示图。
图28是表示运行时参数化上卷-联接-排序应用的图的示图。
图29是表示针对图28中所示的示例应用的运行时参数网格的图形对话框的一个实施例的示图。
图30A是传播元数据的图的示图。
图30B是针对图30A的图中的组件的子图的示图。
图31是针对元数据传播处理的流程图。
图32A是包括具有组件内和组件间相关性的参数的图。
图32B和32C是表示图32A中的图的参数之间的相关性的相关图。
图33是修改后的拓扑排序处理的示图。
图34A是示出通过现有技术薪资系统的简化样本示例的数据流的示图。
图34B是根据本发明的与图34A中的图相对应的图。
图35是根据本发明的驱动程序的框图。
图36是根据本发明的用于执行图的方法的流程图。
图37A和37B是图36中所示的方法的步骤的流程图。
图38A、38B、38C、38D、38E、38F、38G和38H是图36中所示的方法的步骤的流程图。
图39是图36中所示的方法的步骤的流程图。
图40是图36中所示的方法的步骤的流程图。
图41是根据本发明的示出插入源适配器的步骤的流程图。
图42A是说明图的框图。
图42B示出根据本发明的源适配器的插入。
图43是本发明所适用的示例图的第一阶段。
图44是本发明所适用的示例图的第二阶段。
图45是本发明所适用的示例图的第二阶段。
图46是本发明所适用的示例图的第三阶段。
图47是本发明所适用的示例图的第四阶段。
图48是本发明所适用的示例图的第五阶段。
图49是本发明所适用的示例图的第六阶段。
具体实施方式
一般地,数据处理系统可以从源读取数据,对数据执行操作以产生新数据,并将新数据存储在数据存储器中。数据处理系统的复杂度从微不足道到极其复杂不等。在较复杂的系统中,对数据处理系统作出的改变可具有宽范围的可能难以确定的影响。为了确定对系统作出改变的影响,确定系统中直接受到改变影响的部分以及系统中间接受到改变影响的部分是有帮助的。一般来说,系统中直接受到改变影响的部分可能需要个人手动地调整系统。例如,可能需要程序员来改变应用的内容和行为。一般来说,系统中间接受到改变影响的部分可能要求对这些部分进行测试,以确保程序员作出的改变不会对应用的行为产生不利影响。
为了确定改变范围,分析系统以确定数据如何流经系统。还分析系统以确定对系统所使用的数据或该数据的处理的改变会如何影响系统的其它部分。
图1示出针对多个组件的数据沿袭100的示例。组件可以包括逻辑数据集和转换。转换可以例如是数据流图、java程序、经编译的可执行程序或其任何组合。一般来说,转换可以接受输入数据并且可以生成输出数据。例如,图1的104接受来自逻辑数据集1 102和逻辑数据集2 103的输入数据,并生成被提供至逻辑数据集2的输出数据。
一般来说,逻辑数据集表示存储数据的一个或多个物理数据集。物理数据集可以包括可每天变化的唯一数据。在一些实现中,具有不同数据的物理数据集可以存储在单独的文件中。例如,11月8日的外汇汇率数据的数据集可以存储在文件“ExchangeRate_11_08”中,11月9日的外汇汇率数据的数据集可以存储在文件“ExchangeRate_11_09”中,然而,11月8日的汇率数据的数据集和11月9日的汇率数据的数据集两者有共同点。例如,两个数据集共享共同的数据格式。逻辑数据集使得程序或一系列程序能够被构建为独立于物理数据集的特定内容来执行对这些数据集的操作。
一般来说,与逻辑数据集有关的信息包括不随数据集中存储的数据变化的数据集的属性的信息。例如,与逻辑数据集有关的信息可以包括字段名称、数据类型、记录格式、约束和其它特征。逻辑数据集可被分类为数据源和数据宿。单个逻辑数据集可以是一个转换的数据宿和另一转换的数据源。逻辑数据集的相应物理数据集可以例如是关系数据库中的表或文件系统上的文件(等)。数据源可以读取存储在逻辑数据集中的数据记录并且可以创建内存中数据记录。组件接受由数据源创建的内存中数据记录,并修改或转换该数据。可以改变或转换数据值。可以创建新的数据记录。数据宿可以提供数据流图的出口点并且可以存储输出的记录。与数据源相同,数据宿可以例如访问关系数据库表或存储在文件系统上的文件。可以在计算机或其它类型的计算机装置上执行组件。在其它实现中,数据流图的执行可以分布在多个计算装置之间。
在一些实现中,组件可以例如在输入端口上接受输入数据,并例如在输出端口上产生输出数据。链接将第一组件的输出端口连接至第二组件的输入端口。一些组件可以具有多个输入和输出端口。将数据记录从入口点导航至出口点的组件和链接的序列称为路径。可以使用数据沿袭来标识不同的路径并跟踪通过一个或多个组件的数据流。
在该示例中,数据元素“x”102是逻辑数据集1的成员,数据元素“y”103是逻辑数据集2的成员。一般来说,数据元素是指存储在逻辑数据集内的单个记录。数据元素可以例如是逻辑数据集,其中该逻辑数据集可以是关系数据库中的表并且数据元素可以是该表中的行。将数据元素“x”和数据元素“y”输入至图形1 104中。图1生成逻辑数据集2 106。逻辑数据集2包含数据元素“A”108和数据元素“B”110。将这些数据元素输入至图2 112中。数据元素“A”用于生成数据元素“C”114。将数据元素“C”提供作为规则集1 116的输入。一般来说,规则集是应用于数据以生成输出的规则的集合。规则集可以例如是应用于数据元素中的值的一系列测试和结果。规则集可以接受一个或多个输入并且基于这些输入的值来产生一个或多个输出。一般来说,规则集可以编译为或变为计算机可执行转换。出于解释目的和空间考虑,已经简化了图1中所示的数据沿袭图100。一般来说,存在单独一行的省略号表示已经省略了一个或多个组件和数据源。可能发生未示出的数据转换。例如,数据元素“A”108可以被转换以生成数据元素“C”114。数据元素“E”118可以被转换以生成数据元素“G”122等。
规则集1生成两个输出:数据元素“E”118和数据元素“F”120。数据元素“E”用于生成数据元素“G”122。将数据元素“G”提供作为规则集2 130的输入。规则集2产生数据元素“I”132的输出。数据元素“I”用于生成逻辑数据集3 138的数据元素“J”140。数据元素“F”120用于生成数据元素“H”124和数据元素“D”126。数据元素“B”110用于生成数据元素“M”128。将数据元素“M”128和数据元素“D”126提供作为规则集3 134的输入。规则集3生成数据元素“K”136。数据元素“K”用于生成逻辑数据集3 138的数据元素“L”142。将数据元素“Y”提供作为规则集4 144的输入。规则集4 144生成逻辑数据集3 138的数据元素“N”146。
对逻辑数据集或数据元素作出的改变可能影响许多不同的规则集和数据元素。这些改变可以包括对模式或记录格式的改变以及对不同数据元素的有效值的改变。例如,如果数据元素的记录模式改变(例如,记录模式可以从数字变为字符串字段),则改变可能影响利用该数据元素的每个规则集以及利用取决于改变后的数据元素的数据元素的每个规则集。例如,对数据元素C的记录格式作出的改变可以影响规则集1、数据元素E、数据元素F、数据元素G、数据元素H、数据元素D、规则集2、数据元素I、数据元素J、规则集3、数据元素K和数据元素L。对数据元素X的记录格式作出的改变可以影响数据沿袭中的每个其它元素(除了数据元素Y、规则集4或数据元素N之外)。
系统可以生成提供关于对数据元素或规则集的改变的影响的信息的报告。例如,报告150提供关于对图2上的数据元素A的改变的影响的信息。
报告150包括方向列。方向列表示生成报告的数据沿袭的方向。方向可以是向上游的(参考数据沿袭中在数据元素之前的规则集、逻辑数据集和数据元素)或向下游的(参考数据沿袭中在数据元素之后的规则集、逻辑数据集和数据元素)。例如,数据元素C在规则集1的上游并且在数据元素A的下游。
报告150还包括图列154。图列标识作为一部分报告的主体的图。在该示例中,图2112是报告的主体。报告还包括图字段列156。图字段列标识作为报告主体的字段。一般来说,如果方向是向下游的,则字段将会是图的输入,如果方向是向上游的,则字段是图的输出。在该示例中,数据元素A 108和B 110是报告的主体。
报告150还包括规则集字段列158。规则集字段列标识作为输入(在下游报告的情况下)或输出(在上游报告的情况下)的数据元素。规则集列160标识作为报告的行的主体的规则集。在该示例中,报告提供与数据元素C有关的信息作为规则集1的输入(在第一行166中),提供与数据元素G有关的信息作为规则集2的输入(在第二行168中),提供与数据元素H有关的信息作为规则集2的输入(在第三行170中),提供与数据元素D有关的信息作为规则集3的输入(在第四行172中),以及提供与数据元素M有关的信息作为规则集4的输入(在第五行174中)。
报告150还包括直接列162和间接列164。如以下进一步所述,通过分析代码来确定直接列和间接列。然而,为了完整性而使其呈现在此处。直接列报告了在规则集内直接引用由规则集字段标识的数据元素的次数。例如,直接列可以包括将值直接分配给输出的表达式的计数。间接列164标识由规则集字段标识的数据元素影响由规则集字段标识的规则集内的一个或多个其它数据元素的值的次数。例如,间接列可以显示有助于输出数据元素的值的规则情况或其它表达式的总数的计数。对于通过业务规则计算的输出,表达式计数是规则情况的数量,包括默认值(如果有的话)。在该示例中,数据元素“C”在规则集1中直接引用13次,并影响一个或多个其它数据元素的值70次。
为了生成报告150,系统处理规则集以确定哪些数据元素与该规则集相关。规则集可被表示为可以例如用于将数据从一种格式转换为另一种格式从而进行与该数据有关的确定或基于一组输入数据而生成新数据的一组标准。
图2示出示例规则集以及该规则集的输入。如上所述,规则集3 134具有两个输入:数据元素“D”126和数据元素“M”128。规则集3 134可以将输入引用为“年数”参数202和“收入”参数204。在该示例中,“年数”参数202和“收入”参数204由转换206来处理,如以下更详细地描述。转换206产生被提供作为数据元素“D”136的“风险”输出208。
图3示出人可读规则集300的示例。人可读规则集300可以使用图形用户界面(GUI)来定义,或者可以以平面文件或其它结构来定义。如下所述,人可读规则集300可稍后编译为转换,例如图2中的转换206。例如,人可读规则集300可被编译为图1中的规则集3 134。例如,数据元素D表示收入,并且数据元素M表示作为客户的年数。再次参考图3,以列表形式示出人可读规则集300。图3中呈现的人可读规则集300可用于基于两个输入302:年数306和收入308来确定风险类别310,作为输出304。在该示例中,存在七个潜在的条件。第一规则312声明,如果一个人是15年以上的客户了,则无论收入如何,风险都很低。第二规则314声明,如果客户具有超过$150,000的收入,则无论这个人成为客户的年数如何,风险都很低。第三规则316声明,如果一个人是十年以上(但15年以下)的客户了,并且具有$60,000以上的收入,则风险很低。第四规则318声明,如果一个人是5年以上的客户了,则无论收入如何,风险都是中等的。第五规则320声明,如果一个人具有大于$50,000的收入,则无论这个人成为客户的时间量如何,风险都是中等的。第六规则322声明,如果一个人是三年以上的客户了,并且具有$40,000以上的收入,则风险很低。第七规则324是声明在其它方面风险很高的全方位规则。
注意到,在该示例中,按顺序评价规则。一旦一个人有资格获得风险类别,则规则处理完成。例如,如果一个人是15年以上的客户了,并且被分配“低”风险(从行312看出),则剩余的行将永远不会执行。
为了确定对输入或输出字段之一的改变的影响,系统可以执行如下所述的对规则集的分析。
为了在基于图的计算环境中实现规则集,生成从一个或多个数据源(例如,数据元素“C”106)接收输入记录并将数据元素插入到输出数据集(例如,数据元素“E”118和数据元素“F”120)中的转换。输入和输出数据集还可被称为数据流。如图1中所示,然后可以在具有通过链接表示数据流的元素而连接的数据处理组件的基于图的计算中实现转换。
图4示出可以将人可读规则集转换为包含机器可读代码的转换的处理。将规则集402,例如图3中的人可读规则集300提供给规则生成器408。规则生成器将规则集402编译为中间形式。例如,规则生成器406可以生成带注释的代码408。带注释的代码408可以包括报告的定义对规则的改变的直接和间接影响的度量410。例如,人可读规则集300可以导致生成带注释的代码,诸如:
如上所述,直接影响描述了在规则集内直接引用或设定由规则集字段标识的数据元素的次数。间接影响标识由规则集字段标识的数据元素影响规则集内的一个或多个其它数据元素的值的次数。
规则生成器406可以生成能够以多种方式发生的直接和间接度量。例如,在一些实现中,规则生成器406可以分析规则集,以在每次访问数据元素时以及每次另一值取决于数据元素时进行标识。还可以跟踪更复杂的场景。规则生成器406可以跟踪取决于输入或输出值中的值的每个变量,而无论怎样间接。例如,如果变量影响中间值并且中间值影响最终值,则系统可以将中间值和最终值记录为间接影响。例如,人可读规则集300具有访问年数306输入的值的四个规则和访问收入308输入的值的四个规则、以及设定风险310输出的值的七个规则。在一些实现中,可以假定规则集,以至少一次地设定每个参数的值。例如,当输入值被提供给规则集时,设定年数输入。
在一些实现中,规则生成器406可以对至少部分地取决于参数的规则集中的规则数量进行计数。例如,人可读规则集300包括取决于年数306输入的七个规则、取决于收入308输入的七个规则、以及设定风险310输出的七个规则。如上所述,规则324是全方位规则。在一些实现中,全方位规则可被规则生成器406忽略。
带注释的代码408可被提供给规则编译器412。规则编译器412可以将带注释的代码408编译为转换206。一般来说,转换是机器(或虚拟机)可执行程序,例如,可执行程序416。
参考图4,报告生成器可以基于用于数据沿袭4的带注释的代码402而生成报告408。例如,参考图1,系统可以使用数据沿袭来确定例如数据元素X影响数据元素A、B、C、D、E、F、G、H、I、J、K、L和M的值。因此,在处理图2时,系统确定对数据元素X的改变涉及规则集1、规则集2和规则集3。然而,数据元素X不涉及规则集4。因此,报告生成器可以确定,规则集4无需作为对数据元素X的改变的影响分析的一部分而受到分析。
图5示出基于带注释的代码而生成报告的报告生成器。报告生成器506标识出哪些输入将受到改变的影响并且记录来自所计算的影响度量的结果。例如,数据元素“X”影响规则集3的两个输入。因此,报告生成器将度量(图4中的410)记录在报告(诸如图1中的行172、174)中。
在一些实现中,成本可以与直接统计和间接统计各自相关联。例如,可以确定,直接影响将需要预定量的程序员时间和预定量的质量保证人员时间。类似地,可以确定,间接影响将需要预定量的质量保证人员时间。基于预定时间、直接和间接影响的统计以及与计算机程序员时间和质量保证人员时间相关联的成本,系统可以提供对所分析的系统作出改变的成本估计。
在一些实现中,规则生成器可以用于辅助开发者标识系统(例如由图1中的数据沿袭100表示的系统)的不同部分。
图6示出可以使用影响分析技术的数据处理系统600的示例。系统600可以包括数据源602,该数据源602可以包括诸如存储装置或到在线数据流的连接的一个或多个数据源,其各自能够以多种格式(例如,数据库表、电子表格文件、纯文本文件或由大型机使用的本机格式)中的任意格式存储或提供数据。执行环境604包括规则生成器606和报告生成器612。执行环境604可以在诸如UNIX操作系统的版本的合适的操作系统的控制下安装在例如一个或多个通用计算机上。例如,执行环境604可以包括多节点并行计算环境,该多节点并行计算环境包括使用多个中央处理单元(CPU)或处理器核心的计算机系统的配置,所述多个中央处理单元(CPU)或处理器核心可以是本地的(例如,诸如对称多处理(SMP)计算机的多处理器系统)、或本地分布式的(例如,连接为集群或大规模并行处理(MPP)系统的多个处理器)系统,或者是远程的、或远程分布式的(例如,经由局域网(LAN)和/或广域网(WAN)而连接的多个处理器)、或其任何组合。
规则生成器模块606从数据源602读取规则规范,并存储用于规则的带注释的代码。提供数据源602的存储装置可以在执行环境604的本地,例如,存储在连接到安装执行环境604的计算机的存储介质(例如,硬盘驱动608)上,或者可以在执行环境604的远处,例如,安装在通过远程连接(例如,由云计算基础架构提供的远程连接)而与安装执行环境604的计算机进行通信的远程系统(例如,大型机610)上。
报告生成器612使用规则生成器606所生成的带注释的代码以及可存储在数据源602中的数据沿袭来生成作出改变的影响的报告。输出数据可以存储614回数据源602或执行环境604可访问的或以其它方式使用的数据存储系统616中。数据存储系统616也可由开发环境618访问,其中开发者620能够确定对其它编程结构的数据元素、规则作出改变的影响。在一些实现中,开发环境618是用于将应用开发为包括顶点(表示数据处理组件或数据集)的数据流图的系统,所述顶点通过顶点之间的定向链接(表示工作元素、即数据的流动)来连接。例如,关于管理基于图的应用的参数(Managing Parameters for Graph-BasedApplications)而更详细地描述了这样的环境。以下描述了用于执行这样的基于图的计算的系统。根据该系统制成的数据流图提供了用于将信息输入和输出图组件所表示的各个处理、用于使信息在处理之间移动并且用于定义处理的运行顺序的方法。该系统包括从任何可用方法中选择处理间通信方法的算法(例如,根据图的链接的通信路径可以使用TCP/IP或UNIX域套接字或者使用共享内存来在处理之间传递数据)。
图7是典型影响分析过程700的流程图。处理可由数据处理系统,诸如图6中的数据处理系统600来执行。
接收与两个数据集有关的信息(702)。逻辑数据集信息可以针对每个逻辑数据集而标识该逻辑数据集中的至少一个字段的标识符以及与该字段有关的格式信息。
接收与转换有关的信息(704)。信息可以从两个逻辑数据集中标识出转换要从中接收数据的第一逻辑数据集以及要被提供转换后的数据的第二逻辑数据集。转换可以包括要应用于所述第一逻辑数据集中的数据的一个或多个规则,并且其中分析所述一个或多个提出的改变的潜在影响还基于所述一个或多个规则。
接收一个或多个提出的改变(706)。所提出的改变可以是对数据集中的字段格式的改变、对转换的改变、或对规则集的改变。在一些实现中,所提出的改变标识逻辑数据集中的字段或者在不指定改变的性质的情况下要进行更改的转换。例如,所提出的改变可以指定,在不表明改变是从十进制记录格式到字符串记录格式的情况下要改变字段“X”。
分析所提出的改变(708)。
计算所提出的改变的度量(710)。该度量可以测量改变的影响。该度量可以包括直接影响的测量结果和/或间接影响的测量结果。直接影响的测量结果的示例包括但不限于规则集中的访问改变后的输入参数的位置。间接影响的测量结果的示例包括但不限于规则集中的基于改变后的输入参数中的值来设定值的位置。
存储度量(712)。度量可以存储在平面文件、关系数据库或任何其它永久数据存储器中。度量能够以报告的形式存储。可以生成标识影响的度量的报告。该报告可以将直接影响的测量结果和间接影响的测量结果与数据沿袭的特定部分相关联。例如,报告可以表明,特定的数据流图、数据流图字段、规则集字段或规则集与直接影响的测量结果和间接影响的测量结果相关联。
在一些实现中,报告可以例如通过超文本传输协议(HTTP)链接绑定到数据沿袭中。选择或点击链接可以将客户端装置上的浏览器导航至允许用户查看数据沿袭的特定部分的应用或网站。例如,参考图1,选择或点击第三行170可以致使客户端装置上的浏览器或其它应用显示数据流图“图2”112。在一些实现中,可以例如通过突出显示来区分特定的图、图字段、规则集字段和规则集。
在一些实现中,报告可以包括可以与所提出的改变相关联的平均开发和测试成本。例如,报告可以将美元成本与直接改变相关联并且将美元成本与间接改变相关联。在一些实现中,美元成本可以是提供给处理的参数。在其它实现中,默认值可以与每个改变相关联。例如,直接改变可被确定为$100成本,并且间接成本可被确定为$25成本。
管理基于图的应用的参数
图8A是示出主要元件的相互关系的本发明的一个实施例的框图。图形开发环境(GDE)802提供了用于创建可执行图并且定义针对图组件的参数的用户界面。GDE可以例如是可从本发明的受让人获得的CO>OPERATINGGDE。GDE 802与存储库804和并行操作系统806进行通信。同样连接到存储库804和并行操作系统806的是Web界面(WebInterface)808和执行程序810。
存储库804优选地是可扩展的面向对象的数据库系统,其被设计为支持基于图的应用的开发和执行以及基于图的应用和其它系统(例如,其它操作系统)之间的元数据的交换。存储库804是用于包括(但不限于)文档、记录格式、转换函数、图、作业和监视信息的各种元数据的存储系统。存储库是本领域已知的;参见例如美国专利5,930,794;6,032,158;6,038,558;和6,044,374。
并行操作系统806接受在GDE 802中生成的数据流图的表示,并生成与图所定义的处理逻辑和资源相对应的计算机指令。并行操作系统806然后通常在多个处理器(无需是同构型的)上执行那些指令。合适的并行操作系统是可从本发明的受让人获得的CO>OPERATING
Web界面(Web Interface)808提供了存储库104的内容的基于网络浏览器的视图。使用Web界面(Web Interface)808,用户可以浏览对象、创建新对象、更改现有对象、指定应用参数、调度作业等。Web界面(Web Interface)808基于存储在存储库804中的信息来自动地为参数化图创建基于表单的用户界面以获得该图的运行时参数。
执行程序810是通过Web界面(Web Interface)808而访问的可选的基于存储库的作业调度系统。执行程序810将作业和作业队列保持为存储库804内的对象,并且Web界面(Web Interface)808提供用以操纵作业和作业队列的视图和工具。
图8B示出具有通过流824而连接至过滤组件826的输入数据集822的简单数据流图820。过滤组件826通过流828而连接至输出数据集830。数据集可以例如包括提供数据(例如,输入数据集)或接收数据(例如,输出数据集)以用于数据流图执行的计算的文件或数据库表。
由数据流图中的“流”表示的数据流可被组织为离散的数据元素。例如,元素可以包括被组织为记录(或行)和字段(或列)的数据集中的记录。将描述了与记录中的值相对应的字段序列和数据类型的元数据称为“记录格式”。
图中的组件和数据集具有用于连接到流的输入和/或输出端口。流824和828的“源端”分别与输入数据集822的输出端口和过滤组件826的输出端口相接合。流824和828的“宿端”分别与过滤组件826的输入端口和输出数据集830的输入端口相接合。数据集或组件的输入或输出端口与元数据(诸如流入或流出端口的数据的记录格式)相关联。
包括用于与组件相关联的端口或其它元数据的记录格式的参数根据参数范围的规则而被绑定到一个值。参数可以在设计时或运行时绑定到一个值(即,如下所述的“运行时参数”)。参数的值可例如由用户通过用户界面(例如,响应于提示)来定义、从文件中定义或者根据同一上下文或不同上下文中的另一参数来定义。例如,可以通过指定参数具有与另一参数“相同”的关系来从不同的上下文中导出该参数(例如,在不同组件的上下文中评价的参数)。
可以使用与形成“子图”的流互连的其它组件来实现图中使用的组件。在将子图用作另一图中的组件之前,定义组件的各种特性,诸如组件的输入和/或输出端口。在一些情况下,在图中使用组件之前,应当指定与子图组件之间的关系有关的组件的特性。例如,可能需要选择子图组件的运行时参数的提示顺序。以下更详细地描述了用于选择图中组件的运行时参数的提示顺序的方法。
元数据传播
与端口相关联的元数据的值,诸如记录格式参数,可以通过“传播”来获得。元数据传播可能发生在“外部”或“内部”。对于外部元数据传播,第一组件的端口的记录格式参数的值可以通过传播通过流连接到第一组件的第二组件的端口的记录格式值来获得值。该值能够从流的源端向下游传播至宿端,或者从流的宿端向上游传播至源端。元数据从已定义元数据的端口传播至未定义元数据的端口。
对于内部元数据传播,针对组件的一个端口定义的元数据基于实现组件的子图而传播至该组件的另一端口。在一些情况下,内部元数据传播发生在“非转换”内部数据路径上。例如,用户可以为指定流入排序组件的记录的数据类型的排序组件的输入端口提供元数据。由于排序组件对记录进行重新排序但不进行转换,因此排序组件不会改变数据类型并且该数据类型不变地传播至排序组件的输出端口,从而准确地描述流出排序组件的记录的数据类型。
一些组件对流过它们的数据进行转换(或可选地进行转换)。例如,用户可以为指定流入过滤组件的记录的字段的过滤组件的输入端口提供元数据。过滤组件可以从每个字段移除给定字段的值。可以使用元数据定义来指定如下内容:过滤器组件的输出端口的元数据是根据组件的过滤操作来与输入端口的元数据相关的。例如可以从指定记录字段的元数据中移除被过滤的字段。即使在已知输入端口元数据之前,也可以提供这样的元数据定义。因此,如以下更详细地描述,通过允许与端口相关联的元数据被指定为一个或多个参数(包括用于另一端口的元数据)的函数,元数据甚至可以在转换内部数据路径上传播。
这种内部和外部元数据传播可以可选地被配置为在构建图的设计时发生,并且用户为图中的一些组件的一些端口提供元数据。可选地,元数据传播可以在构建图之后(包括在运行时或刚好在运行时之前)发生。
运行时参数
运行时参数允许应用建立器将参数值的设置(例如,排序函数的关键字参数、文件名、记录格式、转换函数等)推迟到运行时(例如,在计算机系统上执行或即将执行程序的时间)。运行时参数的值可以由最终用户提供,或者从存储在对象存储库中的其它运行时参数或对象的组合中导出。
运行时参数为应用增加了一定量的灵活性。通过使用这些参数按需计算元数据(数据格式或类型、以及程序逻辑或转换)来实现附加灵活性。类型和转换可以从其它类型和转换、用户提供的参数值以及所存储的对象(例如,从存储库)合成。这使得可以建立适用于任何类型的输入数据或通过一系列经由运行时参数值直接或间接控制结构的转换来产生数据的“通用”应用。
在一些实现中,当创建或编辑运行时参数时,开发者可以指定针对每个参数的提示以及用于显示提示的条件。如果满足条件,则系统解释提示指令以呈现用于接收参数值的图形用户界面(GUI)控件。
运行时参数的指定
运行时参数为开发者提供了一种用于在图执行时(即运行时)基于外部输入来修改图的行为的机制。在优选实施例中,这些外部值由直接用户输入提供。然而,这些外部值也可能来自许多不同的来源,包括环境变量和命令行参数。GDE 802生成正确的代码,以处理所有这些情况并在图直接由GDE执行时为开发者提示测试值。使用运行时参数,开发者可例如明确地声明,输入文件的路径将由具有特定名称的环境变量提供;然后环境变量称为图形界面的已知部分。因此,对于这些参数,存在定义明确的界面。例如,无需读取生成的外壳脚本并在其中搜索对环境变量和命令行参数的引用以查找控制特定图的执行的参数集。
图9是包含具有指定运行时参数的上卷组件902和排序组件904的典型图900的框图。运行时参数(排序组件904的关键字和上卷组件902的规则)将在用于输入的界面906中呈现给用户。以下部分描述了如何指定运行时参数并且创建集成用户界面以呈现提示用户输入的运行时参数。
运行时参数能够以多种方式指定或定义。一种方式是使用GDE 802中显示的运行时参数网格。图10是表示将与图相关联的运行时参数网格1000的图形对话框的一个实施例的示图。通过简单地填写适当的字段来创建新的运行时参数。在存储库804中创建与每个运行时参数相关联的对象,并将其链接到利用参数的所有图组件。例如,如果图排序组件的排序关键字被定义为运行时参数,则表示该排序关键字参数的对象被存储在存储库804中并链接到相关联的排序组件。定义运行时参数的可选方式是特别地标记图组件的现有参数并使其对于其它组件“可见”(将其导出至其它组件)。可以使用这些方法的组合。例如,当创建组件时,开发者可以将该组件的特定参数指定为运行时参数。然而,开发者可以使用参数网格来设定图的所有运行时参数的默认值和其它特性,并定义新的运行时参数。
当运行图时,对参数进行处理以从用户输入或从外部程序源(例如,命令行参数或环境变量)获得每个参数的值。在所示的实施例中,运行时参数网格1000包括以下字段:
名称1002–此字段包含运行时参数的名称。“Score_threshold”是针对名称而显示的示例。
类型1004–此字段包含运行时参数中所要允许的值的类型。“Integer”是针对类型而显示的示例。所示实施例中的支持类型是:
·布尔(boolean)–值可以为真或假;
·选择(choice)–值为值列表之一;
·整理器(collator)–关键字参数值;
·数据集(dataset)–外部数据文件名和位置;
·日期(date)–日期值;
·表达式(expression)–算术、逻辑和/或条件表达式(例如,选择表达式);
·浮点数(float)–浮点数;
·整数(integer)–整数;
·布局(layout)–并行或串行布局定义;
·记录格式(record format)–记录描述或包含记录描述的文件;
·字符串(string)–任意字符串;
·转换(transform)–转换描述或包含转换描述的文件。
位置(Loc)1006–此字段与记录格式和转换类型一起使用。它指定类型字段1004是否描述文件位置或者其是否包含嵌入式描述。支持的位置有:
·嵌入(Embedded)–参数将包含记录或转换描述;
·主机(Host)–参数将包含对主机上的文件的引用;
·本地(Local)–参数将包含对本机上的文件的引用;
·存储库(Repository)–参数将包含对存储库转换或记录格式的引用。
默认值1008–此字段包含(1)在外部程序源未提供其它值的情况下将使用的运行时参数的默认值、或(2)描述如何从用户输入中导出运行时值或者如何从执行图的用户交互式地获得该信息的规则或表达式。在后一种情况下,如果用户未提供输入值,则可以使用第二默认值字段(未示出)来提供运行时参数的值。对于“布尔”和“选择”类型,此字段将用户限制为有效选择。对于“布局”类型,此字段是只读的,并显示当前定义的布局定义。对于所有其它类型,此字段优选地是简单的用户可向其中输入有效字符串的文本编辑器。
编辑1010–在参数行中点击编辑空间1010(或图标,例如铅笔图标)将提供一个更高级的编辑窗口,该编辑窗口使用户通过用于编辑默认值字段1008的各种选项。在所示的实施例中,以下编辑器可用于其相关联的类型:
·单行编辑(Single line edit)–用于整数、浮点数、日期和字符串类型;
·选择对话框(Choice dialog)–用于布尔和选择类型;
·关键字编辑器(Key Editor)–用于整理器类型;
·文件浏览器(File Browser)–用于数据集类型以及用于位置未嵌入的记录格式和转换类型;
·转换编辑器(Transform Editor)–用于具有嵌入式位置的转换类型;
·记录格式编辑器(Record Format Editor)–用于具有嵌入式位置的记录格式类型;
·表达式编辑器(Expression Editor)–用于表达式类型;
·布局编辑器(Layout Editor)–用于布局类型。
除非种类字段值(见下文)是“PL”(代表参数语言),否则启动上述编辑器。在这种情况下,向用户呈现编辑器,用以在图执行时定义用于导出或提示参数值的规则。
描述1012–这是一个自由格式字段,其中开发者描述运行时参数的预期值。如果默认值包含用于向用户请求输入值的规则,则在运行时将描述1012用作提示。
种类1014–此字段定义了图要在图执行时获得相关联的参数的值的情况。支持的种类字段1014的值有:
·环境(Environment)–预期在相同名称的环境变量中找到运行时参数的值。如果未定义环境变量,则使用默认值字段1008中的值。如果需要参数(即,导出的参数)并且默认值字段1008为空,则将生成运行时错误并将停止图执行。
·位置(Positional)–运行时参数的值预期在调用应用的命令行上的相对位置处。例如,如果运行时参数是所定义的第三个位置运行时参数,则其参数值将被预期为执行脚本中的第三个位置命令行参数。必须提供任何指定的位置参数,如果缺失一个,则将会生成运行时错误。
·关键词(Keyword)–运行时参数的值预期为关键词命令行参数。在所示的实施例中,关键词参数的形式如下:
-<参数名称><参数值>。
关键词参数是可选的,并且只有在未提供关键词参数且默认值字段1008为空且需要相应的导出参数的情况下,才会生成运行时错误。
·固定(Fixed)–参数的运行时值始终为默认值。这对于在两个或更多个运行时参数之间共享常量值是有用的。
·PL–运行时参数的默认值包含PL表达式,该PL表达式将在图执行时被理解为从其它参数中导出运行时参数的值、或者提示用户以获得附加输入。被选择用于与本发明的任何特定实施例一起使用的组件描述语言(Component Description Language)可以是任何合适的脚本语言,诸如公开可用的面向对象的脚本语言“Python”。这样的脚本可以在程序控制下构建元数据(类型和转换),并且对用户输入、从外部以编程方式提供的输入和其它运行时参数执行条件测试、比较、数据转换、算术和逻辑操作、字符串和列表处理以及其它功能,以生成任何运行时参数的最终值。
在所示的实施例中,用于引用直接在运行时参数网格1000上创建的运行时参数的有用约定是简单地输入以美元符号“$”开头的参数名称。例如,$key引用一个名为key的运行时变量。在所示的实施例中,新的运行时参数基于针对默认运行时种类(默认运行时种类为“环境”)的高级选项对话框中的值而默认为的“字符串”类型和默认种类。
因为运行时参数值可以在运行时确定并且PL脚本可以提供条件测试,所以可以创建“条件”运行时参数。只有当运行时确定的参数的所有条件启用时,条件运行时参数才会为用户输入生成提示。因此,例如如果用户以“否”来响应于请求是否对数据集进行排序的第一个提示,则无需显示请求排序关键字的第二个条件提示。
因此,在设计阶段(“设计时间”),开发者将图组件的特定参数指定为“运行时”参数。然而将与该图组件相关联的对象与相关参数数据(例如,来自图9的参数网格1000的信息的类型)存储在一起。
图11是总结使用运行时参数的处理的流程图。在运行时,(例如,从存储库)检索与要执行的应用相对应的参数对象(步骤1100)。针对每个这样的对象而确定是否指示出用户输入(步骤1102)。如果指示出用户输入,则确定是否已经满足用于显示提示的任何条件(步骤1103),这可以包括对先前提示的用户输入进行评价。如果未指示出用户输入,则使用默认值(步骤1108)。可选地,可能不需要参数值(例如,如果用户未选择激活排序功能,则将不需要排序关键字),因此可以忽略。否则,生成提示以获得用户输入(步骤1104)。
如果用户未输入特定参数的值(步骤1106),则可以选择该参数的默认值(步骤1108)。可选地,可以提出错误条件以指示出缺少用户输入。在任何情况下(假设没有由于缺少用户输入而造成的错误条件),考虑到输入以及基于其它参数的依赖性和条件的转换,确定参数的最终值(步骤1110)。
如果确定用户输入未指示出特定参数(步骤1102),则确定参数值是否以编程方式从外部提供,诸如通过环境变量或命令行参数提供(步骤1112)。如果参数值不是以编程方式从外部提供,则选择参数的默认值(步骤1114)。可选地,可以提出错误条件以指示出缺少指定类型的可用输入。在任何情况下(假设没有由于缺少外部输入而造成的错误条件),考虑到输入以及基于其它参数的依赖性和条件的转换,确定参数的最终值(步骤1110)。
一旦确定最终参数值,作为可选步骤,可以根据指定条件和上述规则完全移除或用流(即,图链接或边)代替(以下讨论的)所有条件组件(步骤1116)。一旦敲定了操作图结构并确定了最终参数值,则以常规方式执行图(步骤1118)。
测试值
为了在使用运行时参数创建并测试图期间支持开发者,GDE 802的优选实施例还支持运行时参数的测试值。当开发者使用运行时参数运行图或者想要查看影响图组件的底层代码时,GDE 802显示相关联的测试参数网格,用户可以在其中输入一个或多个运行时参数的新测试值。优选地,记住所使用的最后一组测试值并将其与图保存在一起。
对于每个运行时参数,开发者在测试值列中输入期望的测试值。编辑字段可以与每个测试值列相关联。除了参数种类为PL的情况,测试值字段和编辑字段的行为与运行时参数网格900中的默认值字段和编辑字段相同。
如果PL表达式指示出要提示用户以获得特定运行时参数的值,则测试值字段和编辑行为基于相关联的PL表达式的解释。如果PL表达式仅导出基于其它输入的值,则在正常模式下,运行时参数在测试值网格中是不可见的。指定运行时参数如何获取它们的值
在将参数指定为运行时参数之后,在存储库804中创建相应的对象。如果运行时参数具有种类字段914值“PL”,则该参数的默认值字段1008包括具有以下优选形式的prompt_for伪函数:
prompt_for“prompt-kind[modifiers]”options…
如上所示,prompt_for伪函数可以是基于先前的输入来确定是否显示提示的条件表达式的一部分。
对于这样的对象,使用用户界面来向用户呈现直接输入运行时参数。在优选实施例中,Web界面(Web Interface)808提供该功能。特别地,在运行时,每个运行时参数对象的每个prompt_for伪函数由Web界面(Web Interface)808解析以生成具有相应用户提示的网页(例如,以HTML格式)。(可选地,这样的网页可以在运行时间之前生成,并且在运行时简单地呈现。然而,运行时生成这样的网页提供了更大的灵活性。特别地,页面的内容可以取决于先前的用户输入。)Web界面(Web Interface)808与可显示这样的网页并接收用户输入的常规网络浏览器结合使用。
prompt_for伪函数向Web界面(Web Interface)808指示如何提示参数值。特别地,prompt-kind参数(字符串常量)指示出要呈现何种用户界面(UI)元素(文本框、下拉列表等)。字符串的修饰符(modifier)部分(以逗号隔开的关键词列表)提供了对于各种提示常见的一些选项。在所示的实施例中,空间在修饰符字符串内是不重要的。修饰符关键词解释如下:
·关键词in place声明:元素应当直接呈现在应用的汇总级别用户界面上,从而允许在不“钻入”更低级别的情况下提供值。如果未指定in place,则在汇总级别界面上呈现简单的“编辑”按钮,该按钮将把用户带至另一页面以提供参数值。
·关键词blank ok声明:用户无需提供值;应用将以合理的方式处理默认值。如果未指定blank ok,则用户将无法在不提供某些值的情况下执行应用。
以下是使用不同种类的修饰符的prompt_for调用的一些示例:
${prompt_for“text,inplace”}
${prompt_for“filter,in place”,$input_type}
${prompt_for“radio,blankok,in place”,${list 1,2,3}}
本节的其余部分列出了各种提示种类及其相应的选项,并解释了每个提示种类将如何显示在Web界面(Web Interface)808所生成的网页中。
text[size]–呈现常规的单行文本框大小字符宽(如果未提供大小,其默认为浏览器的默认文本框大小)。
radio choice-list[description-list]–以一组单选按钮的形式呈现常规的“选择一个”提示,其中一个按钮用于选择列表中的每个元素。如果提供描述列表,则每个选择都标有相应的描述;否则,选择标有来自选择列表的字符串形式的相应项。
radioplus choice-list[description-list]–与单选相同,但在文本框旁呈现一个附加按钮,以允许用户选择不在选择列表中的“写入”值。
checkbox choice-list[description-list]–以一组复选框的形式呈现常规的“选择零个或多个”提示,其中一个按钮用于选择列表中的每个元素。如果提供描述列表,则每个选择都标有相应的描述;否则,选择标有来自选择列表的字符串形式的相应项。
dropdown choice-list[description-list,size]–以下拉列表的形式提供常规的“选择一个”提示以获得选择列表的元素。如果提供描述列表,则每个选择都标有相应的描述;否则,选择标有来自选择列表的字符串形式的相应项。如果提供大小,则许多选择将立即可见;否则,只有一个选择可见。
multidropdown choice-list[description-list,size]–以下拉列表的形式提供常规的“选择零个或多个”提示以获得选择列表的元素。如果提供描述列表,则每个选择都标有相应的描述;否则,选择标有来自选择列表的字符串形式的相应项。如果提供大小,则许多选择将立即可见;否则,示出浏览器的默认项数。
key type-obj[size]–呈现由给定type-obj中的字段组成的关键字(亦称为整理器)的提示。关键字可以具有尽可能多的大小部分,其默认为type-obj中的字段的数量。图12是由关键字提示生成的图形对话框1200的一个实施例的示图。以下是3条关键字提示的脚本文本的示例,其中文件/datasets/fixed定义了下拉框1202中示出的可用关键字的内容:
${prompt_for“key”,${dataset_type“/datasets/fixed”},3}
在所示实施例中,正常整理顺序是升序的,但是用户可以通过检查相关联的复选框1204来选择关键字的降序整理顺序。
filter type-obj–呈现由给定type-obj的每个字段上的条件组成的过滤表达式的提示。blank ok修饰符对过滤器没有影响;空的过滤产生“真”表达式。图13是由过滤提示生成的图形对话框1300的一个实施例的示图。与每个表达式文本编辑框1304相关联的可用字段名称1302由type-obj定义。将比较值输入到文本编辑框1304中,并且从相应的下拉列表控件1306中选择比较运算符(例如,等于,小于,小于或等于)。
flexifilter type-obj–与过滤提示符相同,但呈现了由给定type-obj的每个字段上的条件组成的过滤表达式的提示,其中每行的字段名称可以从下拉列表中选择。这允许针对多个条件而使用相同的字段(例如,字段STATE=MA或字段STATE=CA)。
rollup type-obj key[size]–基于给定关键字上卷的给定type-obj的字段来呈现对于上卷计算的提示。上卷可以具有尽可能多的大小规则,其默认为type-obj中的字段的数量。blank ok修饰符对上卷没有影响;空的上卷产生仅提供每个组的关键字值的包。图14是由上卷提示生成的图形对话框1400的一个实施例的示图。在所示的实施例中,下拉框列1402定义可用的上卷计算函数(例如,和、最小值、最大值)。与每个计算相关联的可用字段名称1404由type-obj定义。每个上卷规则具有用于用户定义期望表达式的相关联的文本编辑框1406、用于(通过布尔表达式)定义源值参与计算的标准的“where”文本编辑框1408、以及用于指定将接收计算结果的字段的输出字段文本编辑框1410。在可以明确导出的情况下,无需指定输出字段的名称。
reformat type-obj[size]–基于给定type-obj的字段来呈现对于重新格式化计算的提示。重新格式化可以具有尽可能多的大小规则,其默认为type-obj中的字段的数量。图15是由重新格式化提示生成的图形对话框1500的一个实施例的示图。在所示的实施例中,重新格式化提示包括用于简单地将输入字段复制到相同名称的输出字段的部分1502(使用复选框控件单独地选择/取消选择,或者通过使用全部选择或全部不选按钮整体地选择/取消选择)。提示的第二部分包括允许定义重新格式化表达式(例如,total=revenue_1-income_2)的文本编辑框1504的列。每个规则具有相关联的输出字段文本编辑框1506,用于指定将接收重新格式化后的结果的字段。
outputspec–呈现输出数据集规范的提示。所显示的控件包括用于显示可用格式选项的下拉控件,以及用于输入输出数据集的特定实例的名称的文本编辑框。blank ok修饰符对输出数据集规范没有影响。
fpath starting-point–呈现文件路径的提示。该提示本质上是文本框,但旁边有一个“浏览”按钮,该“浏览”按钮将导致弹出窗口出现以便浏览文件路径。如果文本框非空,则它将被用作浏览操作的起点;如果为空,则使用起点(starting-point)参数。
rpath starting-point–呈现存储库路径的提示。该提示本质上是文本框,但旁边有一个“浏览”按钮,该“浏览”按钮将导致弹出窗口出现以供浏览。如果文本框非空,则它将被用作浏览操作的起点;如果为空,则使用起点(starting-point)参数。
radiofpath choice-list[description-list]–与radioplus相同,但在“写入(write-in)”槽中呈现fpath样式框+浏览按钮(fpath-style box-plus-browse-button)。
radiorpath choice-list[description-list]–与radioplus相同,但在“写入(write-in)”槽中呈现rpath样式框+浏览按钮(rpath-style box-plus-browse-button)。
条件组件
一些实现包括条件组件机制,该条件组件机制允许基于参数值和计算出的元数据来改变图的组件和流的结构。图的每个组件都有一个条件,用于控制在运行时该组件是否会出现在图中。该条件可以通过运行时参数直接或间接地计算。条件组件可用于各种目的,例如使图优化或专门化。为了优化,如果不使用某些数据集的值,则应用可以省略对这些数据集的处理,从而允许图更高效地运行。为了专门化,应用可以基于所需的详细程度来决定若干个不同的输出数据集的产生,或允许执行图的若干个可选部分之一。
图16A是第一个图中的合并联接(MergeJoin)组件1600联接来自文件A和B的数据并将结果输出至输出文件1602的框图。图16B是第二个图中的上卷(Rollup)组件1604聚合来自文件A的数据并将结果输出至输出文件1602的框图。图16C是图中的合并联接(MergeJoin)组件1606联接来自文件A和B的数据并且上卷(Rollup)组件1608聚合所产生的数据并将最终结果输出至输出文件1602的框图。使用条件组件,这三个图可以组合为最初看起来像图16C中的图的单个图,但其确切的结构在运行时才确定。通过设定适当的条件,可以用连接(流)来代替上卷组件1608,从而导致运行时图与图16A中的图类似。类似地,通过设定适当的条件,可以用到文件A的连接(流)来代替合并联接(MergeJoin)组件1606,从而导致运行时图与图16B中的图类似。
在所示实施例中,条件组件可以是定义顶点的任何图组件(即,诸如输入/输出文件的数据集组件、诸如重新格式化或排序组件的处理组件、或已知为子图的其它图)。在优选实施例中,条件组件由两个特殊参数控制:条件(Condition)和条件解释(Condition-interpretation)。条件是评价被推迟到运行时的布尔表达式或值。在所示的实施例中,值“假”和“0”指定假条件,所有其他值(包括空)表示真条件。条件解释参数具有两个允许的互斥值:完全移除(Remove Completely)和用流代替(Replace With Flow)。
图17是呈现具有条件解释控件1704的条件1702的图形对话框1700的一个实施例的示图。条件解释控件1704允许选择完全移除解释1706或者用流代替解释1708。
完全移除:通过这种解释,如果满足条件,则将组件及其连接的所有流(例如,图链接或边)从图中移除。主动的完全移除条件在功能上将组件及其所有直接连接的流从图中移除。完全移除条件可以用在任何组件上。
从图中移除的条件组件可以使依赖于该条件组件的存在的其它连接组件“中毒”,从而导致其移除。图18是示出出现这种中毒的情况的图1800的示图。如果输入文件(InputFile)组件1802上的条件指示移除,并且其相应的条件解释是完全移除,则将输入文件组件1802及其连接的流都从图1800中移除。这转而会使排序组件1804中毒,从而导致其被移除,因为它的输入是所需的输入端口,却再也没有与其相连接的任何数据流。这转而会使上卷组件1806中毒,从而导致其被移除,因为它的输入是所需的输入端口,但不再有与其相连接的任何数据流。停止这种“消失之毒”的唯一办法是连接至下游组件的可选端口或计数端口。因此,当输入文件组件1802上的条件指示移除时,将整个排序上卷图分支1808有效地从图1800中移除。图18中的结果是:名义上,原始图结构的3输入联接组件1810在运行时变为2输入联接组件。
在一个实现中,中毒的详细语义(亦称为“隐含条件”)如下:
·如果组件具有所需的端口,并且没有连接至该组件的活动流,则将组件和连接至组件的所有流从图中移除。
·如果组件已从图中完全移除,则将连接至其端口的所有流从图中移除。·如果组件被流代替,则将连接至该组件的指定输入端口和指定输出端口以外的所有端口的所有流都从图中移除。
·如果所需的索引端口没有连接到该端口的活动流,则对于具有相同索引的每个相应的可选索引端口,将连接到该相应端口的任何流从图中移除。
这些规则存在一些令人惊讶的后果。例如,仅具有可选端口的组件永远不会因为中毒而被移除。因此,如果需要,必须明确地移除该组件。
图19是总结包括完全移除条件组件的图的运行时准备的处理的流程图。如果条件解释是完全移除并且条件未满足(步骤1900),则不将条件组件从图中移除(步骤1902)。如果条件满足(步骤1900),则将条件组件连同连接至该组件的所有流从图中移除(步骤1904)。然后根据以上阐述的规则将所有“有毒的”组件和流从图中移除(步骤1906)。
用流代替:通过这种解释,如果条件满足,则用流(例如,图边)代替组件。用流代替条件解释需要附加信息。参考图17,用户指定输入端口1710(或一系列计数端口)和输出端口1712(或一系列计数端口),用于在组件从图中移除时建立连接。默认情况下,如果正好有一个所需的输入端口或计数端口并且正好有一个所需的输出端口或计数端口,则这些端口是指定的流通连接端口(分别称为指定输入端口和指定输出端口)。所需的端口是需要连接至少一个流的一个端口。
图20是总结包括针对本发明的特定实施例的用流代替(Replace With Flow)条件组件的图的运行时准备的处理的流程图。由于一些组件对所示实施例中的某些可用输入和输出的依赖性(其基于CO>OPERATING中可用的组件),因此几条规则适用于该实现并且使用用流代替条件:
·如果条件解释是用流代替并且条件未满足(步骤2000),则不将条件组件从图中移除(步骤2002)。
·只有在正好有一个连接至指定输入端口的活动直线流并且正好有一个连接至指定输出端口的活动直线流时(“活动”流是已在运行时移除的流),才可以用流代替具有指定输入端口和指定输出端口的组件(步骤2004)。如果是这样,则将组件本身从图中移除,并且将连接至指定输入端口的直线活动流和连接至指定输出端口的直线活动流链接在一起(步骤2006)。将直接链接到被移除的组件的其它端口(即,特别指定的输入和输出端口以外的任何端口)的任何其它流从图中移除。如上所述,移除连接至被移除的组件的任何“有毒”组件和流(步骤2008)。
·如果具有用流代替条件的组件具有连接至一系列计数输入中的不止一个指定输入端口的活动流(步骤2010),则不将该组件从图中移除,因为需要该组件来使图有效(步骤2012)。
·在所需输入上具有活动扇入流的组件需要特殊的处理。“活动扇入流”意味着组件具有连接至所需输入端口的活动扇入流或全方位流,或者其具有连接至单个所需输入端口的不止一个活动直线流。对于这样的组件,解释用流代替条件应当用收集所有活动输入流的收集组件来代替条件组件(步骤2014)。如上所述,然后移除连接至被代替的组件的任何“有毒”流和组件(步骤2016)。
元数据传播的方面
图的元数据可例如由图开发者、图用户提供,或者通过来自图的另一部分的传播提供。可以传播各种元数据,包括与数据或对数据的计算相关联的元数据,诸如端口的记录格式(例如,字段的序列以及流入或流出端口的记录的数据类型)、排序、压缩方法、字符集、二进制表示(大端、小端)、分区、组件可能使用的计算资源(例如,处理器,临时磁盘空间)、数据转换以及组件可能使用的内存量。图结构的各个方面可能影响元数据的传播。以下描述了这些方面中的两个方面。
组件移除之后的传播
在一些实施例中,在移除图组件之后生成流时,必须作出关于在修正后的图中应当如何传播在这样的流中定义数据的元数据的选择。元数据可以从流的任一端获得。在一些实现中,来自流的上游端的元数据是优选的。
如果流的上游端是被移除的组件(或已由收集组件代替的组件),则GDE 802通过在图中向上游“行走”来查找流的元数据,直到其找到尚未被移除的组件。使用该上游组件所公开的元数据来定义所生成的流的数据特性。
转换后的元数据的传播
如上所述,通过允许与端口相关联的元数据被指定为一个或多个参数(包括用于另一端口的元数据)的函数,元数据甚至可以在转换内部数据路径上传播。例如,图30A示出计算对来自数据集3002和数据集3004的数据的联接操作的图3000。在该示例中,图开发者在数据集的输出端口处提供元数据。然后将该元数据传播至“智能联接”组件3006,该“智能联接”组件3006计算对输入数据集的记录的联接操作。例如,元数据从输出端口3008传播至输入端口3010。然后元数据通过“智能联接”组件3006而被转换并且从“智能联接”组件3006的输出端口3016传播至过滤组件3018的输入端口3017。
图30B示出实现“智能联接”组件3006的子图。组件3006使用key_field参数,其值表示联接组件3050所执行的联接操作的关键字字段。组件3006还使用key_field参数作为用于包括条件排序组件3054和3056的条件。如果流入输入端口3010的记录已经按照key_field进行排序,则去掉排序组件3054。类似地,如果流入输入端口3014的记录已经按照key_field进行排序,则去掉排序组件3056。如果输入记录的流都尚未按照key_field进行排序,则排序组件3054和3056在记录流入联接组件3050之前对其进行排序。
为了能够通过该“智能联接”组件来传播转换后的元数据,图开发者将“智能联接”组件3006的输出端口3016的元数据(例如,用于描述字段的元数据)定义为第一输入端口3010的元数据input0.metadata、第二输入端口3014的元数据input1.metadata以及关键字字段参数key_fieldd的函数:output.metadata=metadata_join(key_field,input0.metadata,input1.metadata)
通过将函数参数绑定到值(相对于适当的上下文)并对结果执行函数metadata_join来确定输出端口元数据。在该示例中,由于端口3010和3014的元数据未定义,所以传播的元数据被绑定到元数据参数input0.metadata和input1.metadata。用户为输出端口3008提供指定了从端口3008流至“智能联接”组件3006的输入端口3010的记录的字段“A”和“B”的元数据。用户还为输出端口3012提供指定了从端口3012流至“智能联接”组件3006的输入端口3014的记录的字段“A”和“C”的元数据。该用户提供的元数据传播到端口3010和3014。联接操作的关键字字段是字段A,因此将“形式参数”key_field绑定到值“A”。
函数metadata_join通过首先确定key_field参数的值是否是由input0.metadata和input1.metadata指定的两个字段集中的成员来确定输出元数据。如果是,则输出元数据是两个字段集的并集。如果不是,则输出元数据表示空的字段集。
在元数据传播到“智能联接”组件3006的输入端口(或者以其它方式,例如由用户提供)之后,“智能联接”组件3006的输出端口的转换后的元数据包括字段A、B和C。然后,该转换后的元数据可被传播到其它组件。在该示例中,转换后的元数据传播到过滤组件3018。
无论是由用户提供还是在端口之间传播,元数据都可以显示给用户。例如,用户可以使用输入设备(例如,鼠标)来选择要为其查看元数据值的组件的一部分。也可以响应于这样的用户选择来触发元数据传播。
典型元数据传播处理
图31示出典型元数据传播处理3100的流程图。可例如在图每次改变时、响应于用户动作和/或刚好在图运行之前执行处理3100。处理3100生成3102工作列表,其中图中的每个组件根据流所确定的部分定序来定序(例如,如果存在从组件A到组件B的流,则组件A出现在组件B之前)。在流不确定两个组件之间的唯一顺序的情况下,组件标记的字母顺序可以用作决定因素。这为工作列表中的组件提供了稳定的定序(假设组件标记是唯一的)。如果传播处理3100对于图而重复(例如,在添加新的组件之后重复),则新的工作列表在工作列表先前的组件之间保持相同的顺序。
处理3100起始于工作列表的开始处,并且对于工作列表中的每个组件,处理3100基于实现组件的子图的规范(例如,子图中的数据流)来在组件内向内传播3104元数据(例如,从输入端口向输出端口,或者从输出端口向输入端口)。这种内部元数据传播包括在非转换数据路径的任一端的端口之间传递未转换的元数据。如上所述,内部元数据传播还包括导出具有参考图的参数和/或其它端口的元数据的元数据定义的端口的元数据。当处理3100遇到这样的元数据定义时,处理3100评价需要其值来导出元数据的任何参数。
在针对工作列表上的组件执行内部元数据传播之后,处理3100将元数据从具有该元数据的组件的每个端口向外传播3106至没有元数据的相关组件的端口。通过这种向外传播获取元数据的任何组件将移动3108至工作列表的末尾。处理3100在处理完工作列表上的最后一个组件之后终止3110。
支持这类向外元数据传播的组件之间的一类关系是两个组件的端口(例如,从输入端口到输出端口,或者从输出端口到输入端口)之间的数据流链接。
支持这类向外元数据传播的组件之间的另一类关系是指示出一个端口的元数据也可以用于另一端口的链接。这类“元数据链接”不一定与数据流链接相对应。例如,端口可以具有到图中的不特别地与任何端口相关联的元数据的元数据链接。
组件化子图中的运行时参数
在子图被“组件化”地用作另一图中的组件之前,定义组件的各种特性,诸如组件的输入和/或输出端口。对于包括具有运行时参数的组件的子图,应选择运行时参数的提示顺序。由于图中的组件不一定是按顺序定序的,所以运行时参数可能有多个可能的全局定序来提示用户。全局定序中的一些与关联于每个组件的原始定序不一致。生成用于提示的全局定序是有帮助的,该全局定序尽可能地保留每个组件中的参数的定序,同时在适当时进行重新定序以考虑依赖性。例如,组件可以将询问“要处理什么数据?”的提示定序在询问“想在哪里存储处理后的数据?”的提示之前。尽管有可能按任一顺序提供提示,但也可以期望按该顺序来提供提示。
由于在评价所提示的运行时参数的处理中可能需要评价未提示的运行时参数,因此从所有运行时参数的评价顺序获得提示顺序。用于确定图的运行时参数(包括不与任何组件相关联的图的参数)的评价顺序的一种方法包括基于表示参数之间的依赖性的一个或多个有向无环图来执行拓扑排序。然而,一些拓扑排序算法可能对参数进行不必要的重新定序,从而导致对运行时参数的不期望的提示顺序。
排序示例1
在第一个示例中,参数排序处理提供了针对两个图组件的参数的初始参数列表:组件I和连接至组件I的组件II。在该示例中,参数仅具有“组件内”依赖性。也就是说,组件的参数仅依赖于同一组件中的其它参数。参数定义如下:
组件I包括以下参数:
x=${prompt_for“text”}
y=x+${prompt_for“text”}
z=x+y+${prompt_for“text”}
q=${prompt_for“text”}
组件II包括以下参数:
a=${prompt_for“text”}
b=a+${prompt_for“text”}
c=${prompt_for“text”}
列出参数的顺序定义了要提示用户以获得值的期望顺序。初始参数列表保持了每个组件的这种“初始定序”。向每个参数分配一个“序数”,以指示出该参数在初始定序中的位置。下表列出了该初始定序中的参数。
参数 序数 依赖性
X 0
Y 1 x
Z 2 x,y
Q 3
A 4
B 5 a
C 6
“依赖”列指示出列出的参数所依赖的其它参数。依赖性对参数的评价施加了定序约束:参数需要在由另一个参数使用(例如,引用)之前定义。
“常见的拓扑排序”算法遍历列表,从而在每次遍历时将具有零依赖性的参数传递至有序输出列表。每遍过后,将任何传递的参数从依赖列移除。重复该处理,直到所有参数都被传递。输出列表中的参数的顺序表示“最终定序”,使得依赖于其它参数的参数在其它参数已被评价之后进行评价。
在该示例中,在第一遍时,参数x,q,a和c被传递至输出列表。在第二遍时,参数y和b被传递至输出列表。在第三遍和最后一遍时,参数z被传递至输出列表。因此,参数的最终定序是:x、q、a、c、y、b、z。虽然该定序确实满足参数依赖性所施加的定序约束,但是它对参数进行了不必要的重新定序。在该示例中,初始定序也满足参数依赖性所施加的定序约束。
用于确定针对满足定序约束的图的参数的评价顺序的其它方法一定遵循初始定序。例如,一些方法对参数进行定序以满足定序约束,根据基于初始定序的基准来进行定序。所述基准可以包括各种基准中的任意基准,该任意基准优先将顺序保持为接近于初始定序(例如,基于对初始排序的改变来使度量最小化)。在一些情况下,可能不存在唯一的“最佳”定序,这是因为根据基准,多个定序可以同样很好地满足给定基准。
遵循初始定序的方法的示例是“修改后的拓扑排序”方法。在该方法中,基于初始定序的基准是:在传递不依赖于任何未传递参数的前一参数之前,使从初始列表传递的参数的数量最小化。换句话说,“修改后的拓扑排序”在传递具有零依赖性的下一参数之前将所传递的参数从依赖列中移除。对于以上示例,“修改后的拓扑排序”方法生成与初始定序相同的最终定序:x、y、z、q、a、b、c。
遵循初始定序的修改后的拓扑排序处理
以下为两个典型“修改后的拓扑排序”处理赋予伪代码,其中,该两个处理都遵循由所分配的每个参数的序数所确定的初始定序。第二个处理包括优化,以提高某些情况下的时间效率。这两个处理操纵由参数的输入数据所生成的数据结构。
假设有N个要定序的参数,则输入数据包括由唯一的参数名称、命名参数所依赖的参数集(称为“依赖集”)、以及存储与命名参数相关的信息的可选属性数据对象组成的N个三元组的列表。
与该输入数据相关联的是表示参数之间的依赖性的一个或多个有向无环图,称为“依赖图”。每个唯一的参数名称与依赖图中的节点相对应,并且相关的依赖集与其它节点到该节点的链接集相对应。因此,链接从第一参数的第一节点指向依赖于该第一参数的第二参数的第二节点。可选地,链接方向和参数依赖性之间的对应关系可以反向。
输出数据结构result_list包括来自重新定序(如果需要的话)的输入数据的N个参数的列表,使得当优先将顺序保持为接近于初始定序时,在参数用于评价另一参数之前对该参数进行评价。为生成输出数据结构result_list,处理通过将参数一次一个地从工作数据结构param_list传递至数据输出结构result_list来“消除”参数。在消除了所有参数之后,输出数据结构是完整的。
第一个“修改后的拓扑排序”处理包括两个阶段。在第一阶段,处理基于用于生成排序后的输出数据结构的输入数据来建立工作数据结构。在第二阶段,处理根据这些工作数据结构所表示的依赖约束来对参数进行迭代排序和消除。
处理在第一阶段中所建立的工作数据结构中的一些是词典,这些词典是基于散列的数据结构。可以在O(logN)时间有效地访问词典中的项。在第一阶段建立以下典型数据结构:
parm_list[index]:利用号码索引来进行索引的未消除参数名称的有序列表(其中index=0与列表中的第一项相对应)。该数据结构是“动态的”(即,在处理的执行期间发生改变)。按位置对列表进行索引,使得如果从列表中间移除一项,则在被移除的项之后的项的索引相应地移动。
n_dependencies_dict[name]:按参数名称(name)键入的词典,其条目包含键入的参数所依赖的参数的数量。该词典是动态的。
dependers_dict[name]:按参数名称(name)键入的词典,其条目是(也按参数名称键入的)表示依赖于键入参数的参数集的词典。该词典是“静态的”(即,不会在处理的执行期间发生改变)。
order_dict[name]:按参数名称(name)键入的词典,其存储初始定序中的参数的序数位置(范围从0到N-1的整数)。该词典是静态的。
attribute_dict[name]:按参数名称(name)键入的词典,其存储键入参数的可选属性数据对象。该词典是静态的。
result_list[index]:利用号码索引来进行索引的表示处理的输出的参数名称和属性的有序列表(其中index=0与列表中的第一项相对应)。该数据结构初始为空。该数据结构是动态的。
为了分析处理的时间效率,假设依赖图的平均“度”(或者来自节点的链接数)为z。建立这些数据结构花费了O(N)时间,n_dependencies_dict和dependers_dict除外,后两者花费了O(N*z)时间。
在第二阶段,处理根据排序基准by_n_deps_and_order来对param_list数据结构中的参数进行排序,其中,该排序基准by_n_deps_and_order首先利用这些参数所依赖的未消除参数的数量(即,利用这些参数的n_dependencies_dict的值)从低到高对这些参数进行排序,然而利用这些参数的序数(即,利用这些参数的order_dict的值)从低到高对这些参数进行排序。然后处理消除排序后的param_list中的第一参数。该参数的n_dependencies_dict的值应当为零。(如果排序后的sorted param_list中的第一参数的n_dependencies_dict的值不为零,则标记错误。)
为了消除参数,处理将该参数(连同任何相应属性一起)附加到result_list,并将所有该参数的所有依赖项(即,dependers_dict中的参数)的依赖计数(即,n_dependencies_dict的值)减1。最后,从parm_list删除该参数。重复对所得到的第一参数的这种排序和消除,直到所有参数都被消除为止。
以下是消除过程的伪代码定义:
def eliminate(list,index):
result_list.append((list[index],attribute_dict[list[index]]))
for depender in dependers_dict[list[index]]:
n_dependencies_dict[depender]=n_dependencies_dict[depender]-1
delete list[index]
消除过程的参数是列表(其值例如为parm_list)和索引。函数result_list.append将位置索引所指示的列表项连同其相关联的属性附加到result_list。然后,针对正在消除的参数上所键入的作为dependers_dict数据结构的成员的每个参数依赖项,该过程减去n_dependencies_dict的值。然后,该过程从列表删除参数。消除过程的运行时间是O(zlogN)。
以下是第一个“修改后的拓扑排序”处理的排序/消除循环的伪代码:
处理首先根据上述的排序基准by_n_deps_and_order、使用对param_list的参数进行定序的函数parm_list.sort(by_n_deps_and_order)来对param_list进行初始排序。然后处理进行消除过程并且消除过程之后进行对param_list的另一排序,直到param_list为空为止。处理进行检查以确保param_list中的第一参数的依赖数为零。如果不为零,则处理移除该参数、记录循环错误并继续。排序花费了O(N\logN),并且循环范围为N,使得对循环的整个运行时间的估计为O(N2log N)。
第二个“修改后的拓扑排序”处理利用依赖图稀疏的情况,使得z<<N。在一个初始排序之后,处理可以保持不依赖于任何其它参数的参数的列表候选的排序。这样减少了如下所述的预期运行时间。
以下是第二个“修改后的拓扑排序”处理的伪代码:
处理首先根据上述的排序基准by_n_deps_and_order、使用对param_list的参数进行定序的函数parm_list.sort(by_n_deps_and_order)来对param_list进行初始排序。然后,处理进行具有三个部分(标记为“#部分1”、“#部分2”以及“#部分3”)的循环。
在部分1中,处理建立仅包含具有零依赖性的参数的候选列表。处理扫描parm_list中的所有参数,并将其附加到候选,从而保留其相对定序。
在部分2中,处理进行循环,其中,消除来自候选的参数并将新的参数合并到候选中。从候选中消除并从param_list中删除候选中被保存为this_parm的第一参数。函数get_new(this_parm)返回作为新消除的this_parm的dependers_dict的成员并具有零依赖性的参数名称列表。然后根据by_n_deps_and_order对这些参数(表示已经移除了最后依赖的参数)进行排序(以确保这些参数按照其各自的序数进行定序),并将这些参数合并到候选中。因此,候选列表保持按序数进行排序的零依赖性参数的列表。
如果发生了“循环错误”(例如,在两个参数根据彼此进行定义的情况下),仅进入部分3。在这种情况下,处理再次对parm_list进行排序,并且如果parm_list中的第一参数具有非零依赖性,则删除该第一参数、并且循环重复部分1。
假设没有循环错误,则仅在开始对N个参数的列表parm_list进行排序,从而导致排序时间为O(NlogN)。此后,排序仅发生在通过消除候选列表头部的参数所新生成的零依赖性参数的更小列表中。该列表的大小(平均来说)小于z,从而导致排序时间为O(zlogz)、且合并时间为O(z)。因此,循环的一次迭代的时间为O(z log z),而总时间为O(Nz log z+Nlog N)。对于z不随着N增加而增长的情况,总时间有效地为O(NlogN)。
排序示例2
在另一示例中,参数排序处理(例如,第一个或第二个“修改后的拓扑排序”处理)确定如图32A所示的具有图组件3202、3204和3206的图3200的运行时参数的初始列表。图3200还具有与输入数据集3210的输出端口3208以及输出数据集3214的输入端口3212相关联的运行时参数。在该示例中,参数具有“组件内”依赖性和“组件间”依赖性两者。即,组件的参数依赖于同一组件中的参数以及其它组件中的参数。在该示例中,组件间依赖性由于组件之间的流动而产生,其使得能够传播一些参数所依赖的元数据。
在图32A中由从第一参数或端口到第二参数或端口的虚线箭头来表示依赖性。到端口的箭头表示链接参数的值从该端口传播到下游端口。来自端口的箭头表示值从上游端口传播到链接参数。从第一参数到第二参数的箭头表示第二参数的值依赖于(例如,引用)第一参数的值。
图32B基于图3200而示出参数p0、p1、p2、p4、p5和p6之间的定序约束的依赖图3250。图32C基于图3200而示出参数p3、p7、p8和p9之间的定序约束的依赖图3252。
参数排序处理根据图3200中的元素放置的顺序来向针对各个图元素的十个参数p0、p2、...、p9中的每一个分配序数。在图32A中,(例如,用户使用GDE802)添加到图3200的第一个图元素是具有参数p0、p1和p2的组件3202。所添加的第二个元素是具有参数p3、p4和p5的组件3206。所添加的第三个元素是具有参数p6的数据集3210。所添加的第四个元素是具有参数p7的数据集3214。所添加的最后一个元素是没有运行时参数的数据集3216。下表列出了由所分配的序数定义的初始定序中的参数。
以下在各个处理阶段的param_list和result_list中的参数的列表与上述的第一个“修改后的拓扑排序”处理相对应。param_list被显示为根据各个阶段的排序基准by_n_deps_and_order进行排序。
以下在各个处理阶段的候选和result_list中的参数的列表与上述的第二个“修改后的拓扑排序”处理相对应。由于参数在每个阶段保持相同的顺序,因此没有必要在各阶段之间对候选进行排序,
因此,参考图33,“修改后的拓扑排序”处理3300把向用户提示运行时参数的值的期望第一定序3302、和这些参数的定序约束3304(例如,依赖图3350和3352)作为输入。处理3300根据该期望第一定序3302来提供满足定序约束的参数集的新定序3306。
典型用途
通常,用户坐在Web界面808的前方,并在存储库104中查找该用户想要运行的应用的图。通过扫描与应用图相关联的所有对象,Web界面808生成允许用户为应用的运行时参数指定值的页面表单。一旦已经指定了所有运行时参数,将应用和参数设置组合在一起,作为被调度以供执行810执行的作业。当运行该作业时,执行810以已知的方式对应用进行排队,以供在并行操作系统806下执行。并行操作系统806收集跟踪信息和作业状态,并将该信息存储在存储库804中,使得用户和管理员可以跟踪作业的进程和性能。
示例
图21是表示在没有运行时参数的情况下的上卷应用的图2100的示图。该图计算每种类型的账号数量,并将结果写入输出文件。创建图的开发者已经确定了该应用的每个方面:输入文件组件2102的名称、输入数据的格式、用于在HashRollup组件2104中对数据进行上卷的关键字和转换规则、输出格式、以及输出文件组件2106的名称。用户只能精确地按照定义来执行该图。
图22是表示图21中的上卷应用的运行时参数化版本的图2200的示图。该应用的数据流图结构与非运行时参数化版本非常类似,但是该应用更加灵活。通过运行时参数,最终用户可以指定抽象输入数据集2202(将会从中导出输入文件名称和格式的存储对象)的名称、HashRollup组件2204的上卷关键字和上卷规则、以及输出文件组件2206的名称。
图23是表示针对图22的示例应用的运行时参数网格2300的图形对话框的一个实施例的示图。该图是图9所示的参数网格的填写版本。注意,许多默认参数是使用如上所述的prompt_for伪函数来定义的,因此需要通过Web界面808的用户输入。虽然该图的外观与非运行时参数化应用图相差甚微,但是一个或多个参数网格(或其它合适控制)使得开发者能够完全跟踪控制图的执行的所有参数。
图24A是表示由Web界面808根据图23的参数网格2300中的信息而生成的表单2400的图形对话框的一个实施例的示图。在该示例中,表单2400呈现用户输入的四个运行时参数:输入数据集存储库路径2402、上卷关键字2404、上卷规则2406以及输出路径2408。图17B是用户用参数值填写的图24A中的表单2400的示图。使用与运行时参数2402-2408相关联的直接输入和/或编辑或浏览器控制按钮,用户可以提供相应的参数值2410-2416,以执行相关联的图。
图25是表示运行时参数化上卷和联接应用的图2500的示图。图26是表示针对图25的示例应用的运行时参数网格2600的图形对话框的一个实施例的示图。此处,应用的一些方面已被参数化,但大多数方面(包括联接关键字和输入数据集)保持不变。图27是表示由Web界面808根据图26的参数网格2600中的信息而生成的表单2700的图形对话框的一个实施例的示图。注意,由于在显示顶级表单时已知上卷的输入类型,因此可以就地提示上卷规则2702。
图28是表示运行时参数化上卷-联接-排序应用的图2800的示图。虽然与图25中的示例类似,但条件排序组件2802已被添加到图2800。图29是表示针对图28中所示的示例应用的运行时参数网格2900的图形对话框的一个实施例的示图。只有当用户表示期望排序时,才提示sort_key运行时参数2902。为了获得该效果,开发将prompt_for伪函数放在sort_key运行时参数2902的默认值2904的if条件测试内。if条件测试引用第二个运行时参数do_sort 2906。定义do_sort参数2906的默认值字段2908和描述字段2910,以生成询问用户以获得文本提示“应该存储数据?”的真/假或是/否答案的单选提示。如果针对do_sort参数2906所提供的值为“真”,则将包括排序组件2802作为运行时的图的一部分。否则,将会根据排序组件2802的指定条件解释从图中完全移除或者用流来代替排序组件2802。
脚本实现
虽然GDE 802有助于构建参数化图,但有时存在人们想要提供基于表单的界面的非图程序。使用应用级PL和存储库804,可以对任意外壳脚本进行参数化。例如,可以以与以下结构类似的结构向文件写入应用的描述:
通用计算机实现
本发明可以在硬件、软件或者两者的组合(例如,可编程逻辑阵列)中实现。除非另有指定,否则作为本发明的一部分而包括的算法不会固有地与任何特定的计算机或其它设备相关。特别地,各种通用机器可以与根据这里的教导所写入的程序一起使用,或者其可以更方便地构建更专门化的设备来进行所需的方法步骤。然而,优选地,本发明在一个或多个可编程计算机系统上所执行的一个或多个计算机程序中实现,其中,该一个或多个可编程计算机系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置或端口以及至少一个输出装置或端口。在处理器上执行程序代码以进行这里描述的功能。
每一个这种程序可以在任何期望的计算机语言(包括机器编程语言、汇编编程语言、或高级过程编程语言、逻辑编程语言、或面向对象编程语言)中实现,以与计算机系统进行通信。在任何情况下,语言可以是编译语言或解释语言。
优选将每一个这种计算机程序存储在通用或专用可编程计算机可读取的存储介质或装置(例如,固态介质、磁性介质、或光学介质)上或者下载至该存储介质或装置,以在利用计算机系统读取存储介质或装置以进行这里所述的过程的情况下配置计算机并使该计算机进行工作。本发明的系统还可被视为作为配置有计算机程序的计算机可读存储介质来实现,其中如此配置成的介质使计算机系统以特定且预定义的方式进行工作,以进行这里所述的功能。
已经描述了本发明的许多实施例。然而,应当理解,可以在不偏离本发明的精神和范围的情况下作出各种修改。例如,上述的许多功能步骤可以在基本上不影响整体处理的情况下按不同的顺序进行,例如,可以按相反的顺序来进行图11中的步骤1102和1112。因此,其它实施例在所附权利要求书的范围内。
执行表示为图的计算
计算基板的概览
根据本发明的用于执行表示为图的计算的图执行系统和图执行方法通常将用于具有以下常用设备的计算环境或基板中,其中,这些常用设备为通信信道、数据存储、处理控制和数据访问方法。出于该原因,将会参考这样的参考基板来描述图执行系统和图执行方法,尽管该系统和方法不限于这样的基板。
关于通信信道,参考基板提供了创建和破坏通信信道并且如果分布式环境中要使用上述系统和方法、则对远程处理器进行同样操作的设备。这样的通信信道可以用于在同一处理器上的两个处理之间或者在不同处理器上的两个处理之间发送数据。可以提供多种通信信道。关于数据存储,参考基板提供了创建数据存储并且如果分布式环境中要使用上述系统和方法、则对远程处理器进行同样操作的设备。数据存储是保留作业之间的或者多个处理阶段之间的数据的存储器。基板还提供了允许处理读取/写入数据存储的内容的机构。在一些情况下,基板可以提供处理可以读取/写入位于远程节点上的数据存储的内容的机构,但是本发明不需要这样的设备。关于处理控制,基板提供了用以开始处理、判断该处理何时完成执行、以及判断该处理是否正常终止的设备。该基板提供了如果分布式环境中要使用上述系统和方法、则开始对远程处理器的处理的设备。开始处理的操作必须允许传递参数,其中,该参数包括要运行的程序的名称以及要访问的任何文件或通信信道的标识符。关于数据访问方法,基板提供了针对该数据访问方法的、基板上所运行的处理可以使用的设备。
可以开发有用的基板,作为通过UNIX操作系统的各个版本中的任一版本而提供的基板的延伸。UNIX操作系统提供了两种类型的通信信道:命名管道和TCP/IP流。命名管道是可用于在同一节点上的多个处理之间发送数据的点对点通信信道。(术语“节点”是指可能具有多个处理器和存储装置或数据存储、但具有单个共享内存池的计算机。)命名管道由文件系统中的路径标识。TCP/IP流是可用于在TCP/IP网络(例如,因特网)的任何位置上的两个处理之间发送数据的点对点通信信道。建立TCP/IP流需要使用两个处理建立连接的协议。许多这样的协议在使用中,但是大多数这样的协议面向建立客户端-服务器连接而不是系统所需的对等连接。
扩展基板提供了一种称为共享内存的附加类型的信道。共享内存是可由多个处理访问并且可以用于以已知方式发送数据的内存池。共享内存信道包括用于同步访问的机构。共享内存适用于在同一节点的多个处理之间发送数据,并且是命名管道的有效替代。
为了与本发明一起使用,扩展基板的TCP/IP连接协议应该适合于对等链接。在这样的协议中,实体创建“流标识符”,并安排期望流的两个端点以接收流标识符。这两个端点向基板提供流标识符,并作为响应而接收到TCP/IP流的连接。使用相同的机构来建立共享内存通信信道。这种协议的创建是本领域众所周知的。
UNIX操作系统提供了三种数据访问方法:文件接口、流接口和文件描述符接口。利用文件接口,可以向程序提供文件的名称,然后程序可以打开文件,对文件进行读取、写入,并且在文件内进行搜索。在流接口内,可以向程序提供文件或命名管道的名称,然后程序可以打开该文件或命名管道,对该文件或命名管道进行读取或写入。流接口不允许使用搜索操作或其它仅适用于文件的操作。利用文件描述符接口,(例如利用数量进行标识的)文件描述符可以在程序被调用之前绑定到文件、命名管道或TCP/IP流。然后程序可以对文件描述符进行读取或写入。这类似于流接口,除了一点:利用流接口,可以在程序的外部(即,在程序被调用之前)打开流。
为了与本发明一起使用,扩展基板提供了一种附加的访问方法:流对象连接(SOC)。通过向扩展基板呈现可以作为文件或命名管道的名称、或者要用于创建TCP/IP流或共享内存信道的标识符的“流对象标识符”(唯一字符串)、“通信方法名称”、以及“信道/文件标识符”,来创建“流对象”。呼叫方还必须提供源和目的地所在节点的身份。
UNIX操作系统提供一种类型的数据存储:文件。文件是通常存储在盘上的字节序列。文件由文件系统中的路径、以及标识文件的主机(即,文件所在的节点)的标识符标识。
UNIX操作系统提供处理控制。为了开始处理,提供以下信息:要运行的程序的名称、任何命令行参数、以及文件描述符的任何绑定。命令行参数可以包括程序所要访问的文件和命名管道的名称。文件描述符的每个绑定包含文件描述符数量以及标识文件或命名管道的路径或者标识TCP/IP流的辅助信道。另外,命令行参数可以包含环境变量的值,UNIX程序通常需要这些值来描述某些资源可能位于何处、或者对执行选项进行配置。
图的概览
本发明的系统跟踪稍后将分别描述的处理顶点集、文件顶点集以及数据链接集的状态变量中的计算状态。稍后将描述使用这些结构的系统的操作。
为了示出本发明的一些概念,将使用现有技术的示例。图34A示出通过现有技术薪资系统的简化示例的数据流。该示例的输入是包含所有雇员的永久记录的旧的主文件3410、以及包含一周的时间表的更新文件3412。旧的主文件3410按雇员ID进行排序。该图示出以下数据流:
(1)在步骤3414中对更新文件3412进行排序。
(2)在步骤3416中检查更新,并将不良记录放到不良记录文件3418中。
(3)在步骤3420中处理来自步骤3416加上旧的主文件3410的更新,以产生新的主文件3422加上工资集3424。
处理顶点
处理顶点包含以下信息:
·处理顶点标识符;
·程序模板;
·标识工作目录(即,可能创建过期文件的目录)的工作目录标识符;以及
·标识工作节点(即,要发生处理的节点)的工作节点标识符;
·具有以下值之一的状态变量:禁用、启用、可运行、不可运行、或完成(初始为禁用)。
·用以表示顶点是否为(以下讨论的)适配器顶点的标记。
下表示出用于图34A所示的排序、检查和处理过程(程序)的三个处理顶点的内容:
文件顶点
文件顶点与文件相关并包含以下信息:
·文件顶点标识符;
·数据节点标识符;
·数据文件标识符;
·工作节点标识符,用于标识希望访问文件的程序可以使用的工作节点(该节点通常将等同于数据节点);
·工作目录标识符,用于标识希望访问文件的程序可以在何处创建过期文件(这通常与数据文件在同一文件系统中);以及
·具有以下值之一的状态变量:完结、未完结(初始为未完结)。
在计算基板提供文件以外的数据存储的情况下,文件顶点中的信息可以扩展以包括表示数据存储的类型的指示符以及标识和使用数据存储所需的信息。
下表示出图34A的图所示的文件的五个文件顶点的内容:
数据链接
数据链接(或简单地缩写为“链接”)包含以下信息:
·源顶点-文件顶点或处理顶点;
·源端口标识符-如果源是文件顶点,则仅允许输出;
·目的地顶点-文件顶点或处理顶点;
·目的地端口标识符-如果目的地是文件顶点,则仅允许输入;
·通信方法标识符,其可以是未绑定的、或者是诸如文件、命名管道、TCP/IP或共享内存等的通信信道类型的名称(初始为未绑定的);以及
·状态变量,其可以是启动的或未启动的(初始为未启动的)。
不止一个数据链接可以连接到给定文件顶点或处理顶点的给定端口。
在图34A中,连接箭头用图形描绘处理顶点和文件顶点之间的联接。本发明中以更具体的形式给出链接的概念。转到图34B,图3430示出根据本发明从图34A所示的图3400得到的处理顶点、文件顶点以及数据链接。
下表将图3430中示出的七个数据链接3432、3434、3436、3438、3440、3442和3444制成表格:
程序模板
处理顶点包括程序模板。程序模板包含与程序有关的两种基本信息:(1)调用程序所需的信息,诸如程序名称、命令行参数和和环境变量;以及(2)描述程序访问数据的手段的端口描述符的数组。调用信息的确切形式取决于计算基板。对于已经描述的基于UNIX的基板,程序名称是可执行文件的名称加上由空格分隔的一系列字符串组成的命令行参数。这些字符串中的一些可以是“$portname”的形式,其中“portname”是模板中一个端口的名称,并且该端口必须使用文件接口或流接口数据访问方法。在这种情况下,字符串“$portname”将在调用时被连接到该端口的文件或命名管道的名称代替。
下表示出图34B的图3430所示的三个程序(处理)的说明性程序模板的内容。
调用程序所需的信息可以以两种形式提供。首先,信息可以显式地存储在如上表所示的程序模板中。其次,该信息可以动态地生成,在这种情况下,生成该信息的例程的地址将存储在程序模板中。
程序模板中的端口描述符包含如上表最右边的三个元素所示的以下信息:
·端口的端口标识符;
·关于端口是否用于输入或输出的指示;以及
·可接受方法代码,诸如ReqsFile、ReqsNamedPipe、ReqsFD或ReqsSOC(“Reqs”代表“需要”),其指示出哪些通信方法是端口可接受的。
这些可接受方法代码是指计算基板所支持的数据访问方法。
驱动程序
转到图35,驱动程序3500(或者简单地缩写为“驱动”)提供了用于基于通过用户界面3504从用户3502接收到的输入来描绘图的手段。由驱动3500生成表示特定图(诸如图34B所示的图)的一个或多个图数据结构3506。然后,驱动3500的图执行控制功能3508允许驱动3500以任何顺序以及在需要与外部处理3512进行交互时进行以下外部控制3510功能:
·创建处理顶点;
·创建文件顶点;
·在任意一对(任一种)顶点之间创建数据链接;
·将处理的当前状态从禁用变为启用;以及
·致使图被执行。
驱动3500最终响应于用户3502作出的请求并且使用用户3502通过用户界面3504所提供的信息来进行这些操作。用户3502可以是直接通过图形用户界面向驱动3500提供输入的个人。可选地,用户3502可以是例如通过面向对象接口或过程接口来控制驱动3500的单独程序。以这种方式,用户3502可以使用驱动3500来建立并控制图的执行。
在用户3502提供了标识符、程序模板、工作节点和工作目录的情况下,驱动3500可以创建图的处理顶点。工作目录可以基于工作节点而被赋予默认值。
在用户3502提供了标识符、数据节点、数据文件名、工作节点和工作文件名的情况下,驱动3500可以创建图的文件顶点。在优选实施例中,工作节点默认为数据节点。工作文件名可以基于工作节点和/或数据文件名而被赋予默认值。
在用户3502提供了源顶点、目的地顶点、源端口标识符和目的地端口标识符的情况下,驱动3500可以在图的任意一对顶点之间创建数据链接。在优选实施例中,源端口标识符默认为输出,并且目的地端口标识符默认为输入。
通过使用户3502能够控制处理顶点的启用/禁用状态,驱动3500使该用户3502能够通过选择性地启用处理顶点的子集来对以下描述的处理按照执行处理的顺序执行控制。
执行图
转到图36,在生成初始图之后,驱动3500控制图的执行,并因此控制图所描绘的处理。当驱动3500执行图时,其通过进行以下一般阶段A-I来执行图:
A.只要处理顶点中的任一个处于启用状态,驱动3500就重复以下步骤B-I。驱动3500有时可以省略阶段C、D和I,并且可以使步骤B、C、E和H中所进行的操作混合。
B.驱动3500准备好图以供执行。在该阶段,驱动3500标识可运行的处理顶点、选择用于链接的通信方法,并且可以生成适配器节点,如将会描述地那样。
C.驱动3500启动数据链接,如稍后将会详细描述地那样。在该阶段,驱动3500创建实现通信方法所需的特定计算结构,如将会描述地那样。
D.驱动3500创建计算基板所需的任何其它数据结构或文件。对于上述的扩展基板,驱动3500创建链接文件,如将会描述地那样。这允许程序在运行时访问图连接信息。
E.驱动3500启动处理,如将会描述地那样。
F.驱动3500等待处理终止。当所有处理已成功终止或者当任何处理异常终止时,该阶段完结。
G.如果任何处理异常终止,则中断图的执行。
H.否则,可运行状态中的所有处理顶点转变为完成状态。如果没有处理顶点处于可运行状态,则将会进行清理阶段I,并且将控制返回给呼叫方(例如,驱动3500的用户3502)并指出执行停止。
I.驱动3500清理数据链接和链接文件,如将会描述地那样。这清理了节点C和D中所创建的一些数据结构。
以下描述了特定阶段的其它详情。
阶段B:准备好图以供执行
转到图37A,驱动3500访问用户202初始描绘的图,并通过应用图转换来准备好该图以供执行(步骤3700)。在进行这些转换的过程中,以已知的方式遍历定义初始图的图数据结构,以提取每个顶点和任何相关链接。在优选实施例中,对所提取出的数据结构使用五个图转换来准备好图以供执行。
在图仍然不是可执行形式的情况下(步骤3702),可以选择、并且以任何顺序以及在需要时(不包括获得可执行图之前)应用以下描述的五个图转换(步骤3704),直到获得可执行图为止(步骤3716)。这五个图转换是:(1)插入文件适配器(步骤3706)、(2)插入通信适配器(步骤3708)、(3)将文件顶点的状态设置为完结(步骤3710)、(4)将处理顶点的状态设置为可运行或不可运行(步骤3712)、以及(5)设置数据链接的通信方法(步骤3714)。现在将描述这些转换中的每一个转换以及可以进行该每一个转换的条件。
插入文件适配器。在这种转换中,驱动3500用文件适配器(即,用链接、文件顶点和另一链接)来代替链接。即,当在图数据结构3506(图35)的遍历期间提取或访问表示链接的每个图数据结构时,可以创建修改原始数据结构、在原始数据结构上展开、或者代替原始数据结构的新数据结构。
对于源(目的地)文件适配器,文件顶点的主机与源(目的地)顶点的主机相同,并且文件顶点的文件是位于源(目的地)顶点的工作目录中的新文件。这种转换只有在以下情况下才能进行:
(1)源是不处于完成状态的文件顶点或处理顶点;以及
(2)目的地是处于未完结状态的文件顶点或者不处于完成状态的处理顶点。
插入通信适配器。在这种转换中,驱动3500用通信适配器(即,用链接、处理顶点和另一链接)来代替链接。处理顶点运行复制程序,其中,该复制程序将数据从其输入复制到其输出,并且可以对底层基板所支持的通信信道或数据存储进行读取/写入。对于源(目的地)通信适配器,处理顶点的主机与源(目的地)顶点的主机相同,并且工作目录与源(目的地)顶点的工作目录相同。在启用状态下创建处理顶点。这种转换只有在以下情况下才能进行:
(1)源是处于完成以外的状态的处理顶点、或文件顶点;以及
(2)目的地是处于完成以外的状态的处理顶点、或处于未完结状态的文件顶点。
将文件顶点的状态设置为完结。在这种转换中,将文件顶点的状态设置为完结。这种转换只有在文件顶点的状态为未完结、并且文件顶点的所有输入是处于完成状态的处理顶点的情况下才能进行。
将处理顶点的状态设置为可运行或不可运行。在这种转换中,将处理顶点的状态设置为可运行或不可运行。这种转换只有在处理顶点的状态为启用的情况下才能进行。
设置数据链接的通信方法。在这种转换中,设置数据链接的通信方法。这种转换只有在数据链接的通信方法为未绑定的情况下才能进行。
具有以下三个性质的图是可执行的:
(1)所有处理顶点都处于以下状态其中之一:完成、可运行、不可运行或禁用。
(2)所有数据链接满足以下所有基准:
1)如果数据链接的源或目的地是可运行处理顶点,则数据链接的通信方法必须绑定到特定的通信方法。
2)如果数据链接的通信方法是文件以外的任何事物,则该通信链接的源和目的地必须是处理顶点,并且如果一个处理顶点是可运行的,则这两个处理顶点都必须是可运行的。
3)如果数据链接的通信方法是文件,则该数据链接的源或目的地必须是文件顶点。如果目的地是可运行的处理顶点,则源必须是完结的处理顶点。如果源是可运行的文件顶点,则目的地必须是未完结的文件顶点。
(3)绑定到一种通信方法的所有链接都满足该通信方法中固有的约束:
1)通信方法必须与链接的源端口和目的地端口的访问方法兼容(这可以通过查阅程序模板来确定)。在已经描述了的扩展基板的情况下,所有通信方法都与SOC访问兼容;除共享内存以外的所有通信方法都与文件描述符访问兼容;NamedPipe和文件与NamedPipe访问兼容;并且只有文件与文件访问兼容。
2)一些通信方法需要源顶点和目的地顶点的节点是相同的。对于已经描述了的扩展基板,TCP/IP以外的所有通信方法都是如此。
可以以任何顺序应用图转换(例如,可以在重复遍历图数据结构,直到所有转换都完结为止),直到获得可执行图为止。转到图37B,在一个实施例中按以下顺序中所采取的以下步骤来应用图转换:(1)插入文件适配器(步骤3750);(2)替换文件文件到文件链接(步骤3752);(3)标识完结的文件顶点(步骤3754);(4)标识不可运行的处理顶点(步骤3756);(5)标识可运行的处理顶点(步骤3758);(6)将剩余的启用顶点设置为不可运行(步骤3760);(7)插入更多满足条件的文件适配器(步骤3762);(8)选择通信方法(步骤3764);以及(9)插入通信适配器(步骤3766)。现在将更详细地描述该实施例的步骤。
(1)插入文件适配器。转到图38A,为了插入文件适配器,对图中的所有链接进行以下步骤(步骤3800)。如果链接的源端口具有需要使用文件的数据访问方法(步骤3802)、且目的地不是同一节点上的文件(步骤3804),则插入源文件适配器(步骤3806)。如果链接的目的地端口具有需要使用文件的数据访问方法(步骤3808)、且源不是同一节点上的文件(步骤3810),则插入目的地文件适配器(步骤3812)。如果链接的目的地是处于禁用状态的处理顶点(步骤3814)、且源不是处于启用状态的处理顶点(步骤3816),则插入目的地文件适配器(步骤3812)。
(2)替换文件到文件链接。转到图38B,为了替换文件到文件链接,对图中的所有链接进行以下步骤(步骤3820)。如果源和目的地都是文件顶点(步骤3822),则插入源通信适配器(步骤3824)。(另外,如果源和目的地在不同的节点,则也插入目的地通信适配器;未示出)。
(3)标识完结的文件顶点。转到图38C,为了标识完结的文件顶点,对图中的所有文件顶点进行以下步骤(步骤3830)。如果所有上游顶点是处于完成状态的处理顶点(步骤3832),则将其状态设置为完结(步骤3834)。
(4)标识不可运行的处理顶点。转到图5D,为了标识不可运行的处理顶点,对图中的所有连接进行以下步骤(步骤3840)。按照如下方式进行“不可运行性”测试(步骤3842):如果链接的源是未完结的文件顶点、并且其目的地是处于启用状态的处理顶点,则将该处理顶点的状态设置为不可运行(步骤3844);如果源是处于启用以外的任何状态的处理顶点、并且目的地是处于启用状态的处理顶点,则将目的地处理顶点标记为不可运行(步骤3844)。重复该测试,直到没有更多的顶点可被标记为不可运行为止。
(5)标识可运行的处理顶点。转到图5E,为了标识可运行的处理顶点,对图中的所有处理顶点进行以下步骤(步骤3850)。按照如下方式进行“可运行性”测试(步骤3852):如果顶点处于启用状态、并且所有上游顶点是完结的文件顶点或可运行的处理顶点,则将顶点的状态设置为可运行(步骤3854)。重复该测试,直到没有更多的顶点可被标记为可运行为止。
(6)将剩余的启用顶点设置为不可运行。转到图5F,为了将剩余的启用顶点设置为不可运行,对图中的所有处理顶点进行以下步骤(步骤3860)。如果顶点处于启用状态(步骤3862),则将其状态设置为不可运行(步骤3864)。
(7)插入更多的文件适配器。转到图5G,为了插入更多的文件适配器,对图中的所有链接进行以下步骤(步骤3870)。如果链接的源是可运行处理顶点(步骤3872)、且目的地是不可运行处理顶点(步骤3874),则插入源文件适配器(步骤3876)。
(8)选择通信方法。转到图5H,为了选择通信方法,对图中的所有链接进行以下步骤(步骤3880)。该步骤仅适用于在任一端处连接到可运行处理、并且不绑定到通信方法的链接。如果链接的源(目的地)是文件顶点(步骤3881)、并且其目的地(源)是同一节点上的处理顶点,则将该链接的通信方法设置为文件(步骤3882)。否则,选择可用通信方法其中之一,使得满足该方法的所有约束(步骤3883-3885)。为了提高速度,可以按共享内存、命名管道和TCP/IP的顺序考虑通信方法。选择满足以上阐述的约束的第一方法(步骤3886)。在参考基板中,使用以下规则:首先,在链接连接到接受SOC连接的端口的情况下,如果源和目的地在同一节点上,则链接将使用共享内存,或者如果它们在不同节点上,则链接将使用TCP/IP。否则,如果源和目的地在同一节点上,则将使用NamedPipe方法。在所有其它情况下,没有一种通信方法满足要求,并且系统将恢复到(以下)通信适配器。
(9)插入通信适配器。如果在选择通信方法的前一步骤中没有选择一个通信方法、并且尝试了所有通信方法(步骤3883),则通过插入源通信适配器并尝试为适配器的两个链接选择通信方法来继续(步骤3887)。如果失败(步骤3888),则尝试用目的地通信适配器来代替新插入的源通信适配器(步骤3889)。如果失败(步骤3890),则插入源和目的地通信适配器两者、并为所得到的双适配器的三个链接选择通信方法(步骤3891)。在参考基板中,只有在源和目的地位于不同的节点上、并且链接连接到不接受SOC连接方法的文件顶点或处理顶点的情况下,才需要通信适配器。在这种情况下,可以按照如下方式选择适配器:
·如果源是文件顶点,则插入源通信适配器。源通信适配器中的两个链接将依次使用文件和TCP/IP通信方法。
·如果源是不接受SOC通信方法的端口,则插入源通信适配器。源通信适配器中的两个链接将依次使用TCP/IP和文件通信方法。
·如果目的地是文件顶点,则插入目的地通信适配器。适配器中的两个链接将依次使用TCP/IP和文件通信方法。
·如果目的地是不接受SOC通信方法的端口,则插入目的地通信适配器。适配器中的两个链接将依次使用TCP/IP和NamedPipe通信方法。
阶段C:启动数据链接
转到图39,数据链接在未启动状态下创建并且必须启动。为了启动链接,扫描这些链接(步骤3900)以找到未启动的(步骤3902)、绑定到通信方法(步骤3904)并且具有可运行源或目的地(步骤3906)的链接。对于所有这样的链接,生成各种通信方法可以使用的标识符(步骤3908)。对于上述的扩展基板,按照如下方式创建标识符。所有链接具有两个标识符:流对象标识符和通信信道/文件标识符。流对象标识符由SOC机构使用,并且与链接的名称相同。信道/文件标识符用于标识链接所采用的文件、命名管道、共享内存区域、或TCP/IP连接。另外,在处理顶点需要NamedPipe或文件通信方法的情况下,信道/文件标识符将是可用的,使得处理顶点在启动时(见下文)将能够使用UNIX文件系统连接到信道/文件。
在生成标识符之后,呼叫基板来创建信道或流对象(步骤3910)。如果通信方法是NamedPipe,则还呼叫基板来创建命名管道。
阶段D:创建链接文件
扩展基板在每个节点上保持有一个列举了在该节点上具有源或目的地的链接的“链接文件”。程序可以在运行时查阅该链接文件以确定这些程序必须访问哪些链接。使用SOC接口的程序通常要这样做。因此,在扩展基板的情况下,系统必须创建链接文件。按照如下方式进行:对于计算中涉及的每个节点,驱动3500标识被分配给该节点的可运行处理顶点,并且针对链接到这种顶点每个链接、在链接文件中累积并存储以下信息:
·顶点的标识符;
·链接所连接的端口的名称;
·通信信道的标识符;以及
·用于传输数据的文件或命名管道的标识符(如果适用的话)。
阶段E:启动处理
转到图40,通过针对处于可运行状态的所有处理顶点进行以下步骤来启动处理(步骤4000)。首先,使用顶点的程序模板来生成调用信息(步骤4002)。该信息包括:
·要调用的程序的名称;
·命令行参数(命令行参数可以包含通信信道的标识符以及与连接到顶点的链接相关联的文件);
·可选地,各种环境变量的值;以及
·可选地,程序的预期“退出代码”。
可以按照以下至少两种方式之一来生成调用信息:驱动3500可以将这样的信息预先存储在程序模板中;或者驱动3500可以包含用于动态计算这样的信息的例程,并且可以将这些例程的地址存储在程序模板中。
接着,向环境变量集添加顶点的标识符以及该顶点的节点的链接文件的标识符(步骤4004)。然后,在所指示出的节点上运行的代理创建“程序调用处理”(步骤4006)。如果程序的模板要求输入或输出端口绑定到UNIX文件描述符,则向程序调用处理提供与该输入或输出端口相关联的文件名称、命名管道、或TCP/IP流标识符,并且将使用所指示出的文件描述符来打开该文件或命名管道。程序调用处理设置所需的环境变量,并使用所指示出的命令行参数来运行所指示出的程序(步骤4008)。
阶段F:等待
一旦启动了所有处理,系统将优选地使用与启动这些处理所使用的代理相同的代理来监视它们的执行。定期地,系统(代理)将通知处理已经退出。当这种情况发生时,系统(代理)将判断处理是“正常地”还是“异常地”退出。在UNIX的情况下,这是经由终止代码完成的。终止代码可以表示程序由于程序错误、算术异常、无效的存储器访问等而中断。这样的情况总是被解释为“异常终止”。可选地,程序可能以受控的方式退出,返回“退出代码”(退出代码包括终止代码的子集)。按照惯例,退出代码为0表示程序正常终止,而所有其它代码表示异常终止。如上所述,程序模板可以改变其解释,例如声明所有退出代码都被解释为“正常”终止。
一旦系统判断为处理已经正常终止,该系统就可以可选地进入“调试”例程,以允许用户诊断异常终止的原因。一旦调试完结(或跳过),系统将发起中断过程,例如,杀死所有仍在运行的处理、删除部分写入的文件等。然后驱动程序将退出。
如果系统判断为处理正常终止,则其将会注意到此事实,并等待更多处理终止。在所有处理都已经正常终止的情况下,系统进入清理阶段I。
阶段I:清理
在所有可运行处理的执行完成之后,驱动3500进行以下步骤。首先,删除每个节点的链接文件。其次,扫描处于启动状态的所有链接。如果连接到链接的所有处理顶点都处于完成状态,则将使用基板来破坏与该链接相关联的任何通信信道。对于扩展基板,通过获得链接的流对象标识符并且命令基板破坏所指示的流对象来完成该步骤。在通信方法是NamedPipe的情况下,这也将导致命名管道被删除。另外,如果文件适配器顶点是完结的,并且该顶点下游的所有处理都是已完成,则其文件将被删除。
插入适配器
已经提到了代替链接插入适配器的几种情况。适配器是数据链接、或者文件或处理顶点(适配器顶点)、以及为使用一系列通信方法来合成通信链接而插入的另一数据链接。适配器顶点是处理的适配器被称为“通信适配器”。适配器顶点是文件的适配器被称为“文件适配器”。一般来说,在需要通信方法的组合(例如,命名管道加上TCP/IP连接)来满足链接的源和目的地所施加的约束的情况下,添加通信适配器。在链接的源和目的地不同时运行(例如,源是可运行的,但是目的地是不可运行的或禁用的)、或者链接的源或目的地仅可以连接到文件的情况下,添加文件适配器。在通信适配器的情况下,适配器顶点指定将输入复制到输出、并且可以连接到任何一种通信信道的程序。适配器链接可以随后绑定到受制于步骤3883-3885“选择通信方法”中所描述的约束的任何通信方法。适配器顶点简单地将数据从其输入复制到其输出。适配器链接可以具有受制于源和目的地约束的任何便利的通信方法。
转到图41,为了插入源适配器(步骤4100),创建新的适配器顶点(步骤4102)和新的适配器链接(步骤4104)。在源通信适配器的情况下,适配器顶点是具有以下特性的处理顶点:
·程序模板指定复制程序,即,将所有输入数据复制到其输出的复制程序。
·程序模板指定能够连接到任何通信方法的输入和输出端口描述符。
·将新的顶点标记为适配器顶点。
·使用原始源顶点的工作目录和工作节点,作为适配器顶点的工作目录和节点。
在源文件适配器的情况下,适配器顶点是具有以下特性的文件顶点:
·文件位于源程序所使用的节点上。
·文件位于源程序的工作目录中。
将文件标记为“适配器”,使得在目的地处理使用了文件的情况下,可以删除该文件。
新的适配器链接(步骤4104)具有以下特性:
·适配器链接的源顶点和原始链接的源顶点相同,并且适配器链接的源端口名称和原始链接的源端口名称相同。
·适配器链接的目的地顶点是适配器顶点,并且适配器链接的目的地端口名称是输入。
·将适配器链接的通信方法设置为插入源适配器的过程所指定的值(该适配器链接通常将是未绑定的)。
最后,原始数据链接的源将被设置为新的适配器顶点(步骤4106),并且源端口名称将被设置为输出。
用于插入目的地适配器顶点的过程是对称的,“源”和“目的地”以及“输入”和“输出”分别互换。
图49A和49B示出在顶点V1的端口P1和顶点V2的端口P2之间代替链接L而插入通信适配器4200。在图42B中,链接L已经由包括第一链接4202、顶点904和第二链接4206的源适配器4200代替。如果适配器4200是文件适配器,则顶点4204是主机H1上的目录D1中的文件的文件顶点,其中,目录D1和主机H1是顶点V1的目录和主机。如果适配器4200是通信适配器,则顶点4204是运行复制程序的处理顶点。第二链接4202是原始链接L,其源顶点被设置为适配器顶点4204并且其源端口名称被设置为输出。第一链接4202的源端口名称被设置为原始链接L的原始源端口名称P1,并且其目的地顶点是新添加的顶点4204的输入端口。
如果新的适配器4200是目的地适配器,则顶点4204将使用目的地顶点V2的主机H2和目录D2而不是源顶点V1的主机H1和目录D1。
输入和执行图的示例
现在我们将本发明视为适用于图34所述的薪资程序。首先,在创建应用之前,用户将为系统提供所有必需程序的模板,特别是排序程序、数据检查程序以及薪资程序的模板。然后用户将应用表示为图,如上所述。图43中示出了所得到的图,其具有运行在所示节点0、1和2上的顶点4300-4370(省略各个链接的端口名称,但是与图34B相比,这些端口名称应当是显而易见的)。
处理该图的第一步骤是准备好图以供执行。首先,在执行步骤3750时,我们查阅排序程序4310的模板,并观察到该模板需要文件作为输入。因此,步骤3750插入目的地文件适配器4402(图44)。
我们接下来执行步骤3752,并且注意到我们有从节点2上的更新文件4300到节点1上的临时文件4302的链接。因此,源和目的地通信适配器(复制4304、复制4306)两者将被插入到该链接中。
接下来,在步骤3754中,我们标识完结的文件顶点(更新4300和旧的主文件4350)。一旦完成该步骤,在步骤3756中,我们查找由于在上游有未完结文件而不可运行的处理顶点。排序程序4310被发现满足该基准。在步骤3758中,我们标识由于在上游仅有可运行的处理顶点和/或完结的文件而可运行的处理顶点。两个复制程序4304、4306(即,步骤3752中所插入的通信适配器)满足该基准,并且被标记为可运行。将所有剩余的节点标记为不可运行。最后,选择针对连接到可运行处理顶点的这些链接的通信方法。针对连接到文件的这些链选择文件方法,并且针对两个复制程序4304、4306(位于不同的节点上)之间的链接选择TCP/IP。这使我们面临着图46所示的情况(未标记为可运行/完结的顶点是可运行的/未完结的;标记有通信方法的链接是未绑定的)。
现在,图是可执行的。将创建链接文件(未示出),然后将启动所指示的链接,并且将启动可运行的处理顶点。在所有的处理都已经退出的情况下,系统将会通过不启动所指示的链接并且将处理顶点的状态从“不可运行”改变为“完成”来进行“清理”。这导致图47所示的情况。
系统现在判断为不是所有处理都已完成,因此该系统开始新一轮的执行。首先,系统像之前一样地准备图。其最先指出临时文件4302是完结的。接下来,其判断为不存在不可运行的处理顶点。最后,其判断为实际上,所有的处理顶点都是可运行的。这导致图48所示的情况。
我们现在可以选择通信方法(步骤3764)。首先,将连接到临时文件4302、不良记录4330、和工资4360的链接设置为文件,因为这些链接连接文件和可运行处理顶点,并且不会跨越节点边界。其次,将连接到检查4320的剩余链接设置为NamedPipe,因为检查节点4320需要命名管道,并且这些链接不会跨越节点边界。
这使我们了解OldMaster 4350、NewMaster 4370和处理4340之间的连接,其中,该OldMaster 4350、NewMaster 4370和处理4340将文件和不同节点上所运行的处理连接在一起。这两种情况都需要通信适配器,该通信适配器在步骤3766作为复制4342和复制4344而插入。这两个适配器都运行在节点1上。一旦选择了通信方法(对于连接到文件的链接,通信方法为文件,而对于跨越节点边界的链接,通信方法为TCP/IP),我们就有图49所示的图。
再次准备好图以供执行。系统将会创建链接文件、启动链接、处理、等待并清理。此时,所有处理顶点都“完成”,因此图的执行终止。
程序实现
本发明可以在硬件、软件或者两者的组合中实现。然而,优选地,本发明在可编程计算机上所执行的计算机程序中实现,其中,该可编程计算机各自包括处理器、数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置以及至少一个输出装置。将程序代码应用至输入数据,以进行这里描述的功能并生成输出信息。以已知的方式将输出信息应用至一个或多个输入装置。
每个程序优选地以高级过程编程语言或面向对象编程语言来实现,以与计算机系统进行通信。然而,如果需要,这些程序可以以汇编或机器语言来实现。在任何情况下,语言可以是编译语言或解释语言。
优选将每一个这种计算机程序存储在通用或专用可编程计算机可读取的存储介质或装置(例如,ROM或者磁性或磁性软盘)上或者下载至该存储介质或装置,以在利用计算机读取存储介质或装置以进行这里所述的过程的情况下配置计算机并使该计算机进行工作。本发明的系统还可被视为作为配置有计算机程序的计算机可读存储介质来实现,其中如此配置成的介质使计算机以特定且预定义的方式进行工作,以进行这里所述的功能。
已经描述了本发明的许多实施例。然而,应当理解,可以在不偏离本发明的精神和范围的情况下作出各种修改。因此,应当理解,本发明不受特定的图示实施例限制,而仅受所附权利要求书的范围限制。
上述的影响分析方法可以使用执行合适软件的计算系统来实现。例如,该软件可以包括在一个或多个编程或可编程计算系统(可以具有诸如分布式、客户端/服务器或网格式等的各种架构)上执行的一个或多个计算机程序中的过程,其中该一个或多个编程或可编程计算系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个用户接口(用于使用至少一个输入装置或端口来接收输入,并且用于使用至少一个输出装置或端口来提供输出)。该软件可以包括例如提供与数据流图的设计、配置和执行相关的服务的较大程序的一个或多个模块。可以将程序的模块(例如,数据流图的元素)实现为数据结构或符合数据存储库中所存储的数据模型的其它有组织数据。
可以将软件设置在诸如(利用通用或专用计算系统或装置可读取的)CD-ROM或其它计算机可读介质等的有形、非暂时性介质上、或者经由网络的通信介质(例如,以编码在传播信号中的形式)传递至执行该软件的计算系统的有形、非暂时性介质。可以在专用计算机上、或者使用诸如协处理器或现场可编程门阵列(FPGA)或专用特定用途集成电路(ASIC)等的专用硬件来进行一些处理或所有处理。可以以利用不同的计算元件来进行软件所指定的计算的不同部分的分布式方式来实现该处理。优选将每一个这种计算机程序存储在通用或专用可编程计算机可访问的存储装置的计算机可读存储介质(例如,固态存储器或介质、或者磁性或光学介质)上或者下载至该存储介质,以在利用计算机读取存储装置介质以进行这里所述的处理的情况下配置计算机并使该计算机进行工作。本发明的系统还可被视为作为配置有计算机程序的有形、非暂时性介质来实现,其中如此配置成的介质使计算机以特定且预定义的方式进行工作,以进行这里所述的处理步骤中的一个或多个。
已经描述了本发明的许多实施例。然而,应当理解,前述描述旨在示出而不是限制本发明的范围,该范围由以下权利要求书的范围限定。因此,其它实施例也在所附权利要求书的范围内。例如,可以在不偏离本发明的范围的情况下作出各种修改。另外,上述步骤中的一些可以是与顺序无关的,因此可以按照与所描述的顺序不同的顺序执行。

Claims (19)

1.一种计算机实现的方法,所述方法包括:
接收与至少两个逻辑数据集有关的信息,与逻辑数据集有关的信息用于针对各个逻辑数据集而标识该逻辑数据集中的至少一个字段的标识符以及与该字段有关的格式信息;
接收与转换有关的信息,该信息用于标识所述转换要从中接收数据的第一逻辑数据集以及要被提供转换后的数据的第二逻辑数据集;
接收对逻辑数据集的字段至少之一的一个或多个提出的改变;
基于与所述转换有关的信息以及与所述第一逻辑数据集和所述第二逻辑数据集有关的信息来分析所述一个或多个提出的改变;
基于所述分析来计算提出的改变的一个或多个度量;以及
存储与所述一个或多个度量有关的信息。
2.根据权利要求1所述的方法,其中,所计算的度量提供直接影响的测量结果。
3.根据权利要求1所述的方法,其中,所计算的度量提供间接影响的测量结果。
4.根据权利要求1所述的方法,其中,提出的改变是包括数据集中的字段格式的改变或转换的改变的组之一。
5.根据权利要求1所述的方法,其中,所述转换包括要应用于来自所述第一逻辑数据集的数据的一个或多个规则,以及分析所述一个或多个提出的改变还基于所述一个或多个规则。
6.根据权利要求1所述的方法,其中,还包括:基于所述度量将成本与提出的改变相关联。
7.一种系统,包括:
一个或多个计算机以及存储指令的一个或多个存储装置,所述指令在由所述一个或多个计算机执行时能够操作以致使所述一个或多个计算机执行包括以下步骤的操作:
接收与至少两个逻辑数据集有关的信息,与逻辑数据集有关的信息用于针对各个逻辑数据集而标识该逻辑数据集中的至少一个字段的标识符以及与该字段有关的格式信息;
接收与转换有关的信息,该信息用于标识所述转换要从中接收数据的第一逻辑数据集以及要被提供转换后的数据的第二逻辑数据集;
接收对逻辑数据集的字段至少之一的一个或多个提出的改变;
基于与所述转换有关的信息以及与所述第一逻辑数据集和所述第二逻辑数据集有关的信息来分析所述一个或多个提出的改变;
基于所述分析来计算提出的改变的一个或多个度量;以及
存储与所述一个或多个度量有关的信息。
8.根据权利要求7所述的系统,其中,所计算的度量提供直接影响的测量结果。
9.根据权利要求7所述的系统,其中,所计算的度量提供间接影响的测量结果。
10.根据权利要求7所述的系统,其中,提出的改变是包括数据集中的字段格式的改变或转换的改变的组之一。
11.根据权利要求7所述的系统,其中,所述转换包括要应用于来自所述第一逻辑数据集的数据的一个或多个规则,以及分析所述一个或多个提出的改变还基于所述一个或多个规则。
12.根据权利要求7所述的系统,其中,所述操作还包括:基于所述度量将成本与提出的改变相关联。
13.一种系统,包括:
用于接收与至少两个逻辑数据集有关的信息的部件,与逻辑数据集有关的信息用于针对各个逻辑数据集而标识该逻辑数据集中的至少一个字段的标识符以及与该字段有关的格式信息;
用于接收与转换有关的信息的部件,该信息用于标识所述转换要从中接收数据的第一逻辑数据集以及要被提供转换后的数据的第二逻辑数据集;
用于接收对逻辑数据集的字段至少之一的一个或多个提出的改变的部件;
用于基于与所述转换有关的信息以及与所述第一逻辑数据集和所述第二逻辑数据集有关的信息来分析所述一个或多个提出的改变的部件;
用于基于所述分析来计算提出的改变的一个或多个度量的部件;以及
用于存储与所述一个或多个度量有关的信息的部件。
14.一种编码有计算机程序指令的计算机存储介质,所述计算机程序指令在由一个或多个计算机执行时使所述一个或多个计算机执行包括以下步骤的操作:
接收与至少两个逻辑数据集有关的信息,与逻辑数据集有关的信息用于针对各个逻辑数据集而标识该逻辑数据集中的至少一个字段的标识符以及与该字段有关的格式信息;
接收与转换有关的信息,所述信息用于标识所述转换要从中接收数据的第一逻辑数据集以及要被提供转换后的数据的第二逻辑数据集;
接收对逻辑数据集的字段至少之一的一个或多个提出的改变;
基于与所述转换有关的信息以及与所述第一逻辑数据集和所述第二逻辑数据集有关的信息来分析所述一个或多个提出的改变;
基于所述分析来计算提出的改变的一个或多个度量;以及
存储与所述一个或多个度量有关的信息。
15.根据权利要求14所述的介质,其中,所计算的度量提供直接影响的测量结果。
16.根据权利要求14所述的介质,其中,所计算的度量提供间接影响的测量结果。
17.根据权利要求14所述的介质,其中,所提出的改变是包括数据集中的字段格式的改变或转换的改变的组之一。
18.根据权利要求14所述的介质,其中,所述转换包括要应用于来自所述第一逻辑数据集的数据的一个或多个规则,以及分析所述一个或多个提出的改变还基于所述一个或多个规则。
19.根据权利要求14所述的介质,其中,所述操作还包括:基于所述度量将成本与提出的改变相关联。
CN201580072270.6A 2014-11-05 2015-11-05 影响分析 Active CN107135663B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462075558P 2014-11-05 2014-11-05
US62/075,558 2014-11-05
US14/738,232 2015-06-12
US14/738,232 US10176234B2 (en) 2014-11-05 2015-06-12 Impact analysis
PCT/US2015/059266 WO2016073735A1 (en) 2014-11-05 2015-11-05 Impact analysis

Publications (2)

Publication Number Publication Date
CN107135663A true CN107135663A (zh) 2017-09-05
CN107135663B CN107135663B (zh) 2021-06-22

Family

ID=54602034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580072270.6A Active CN107135663B (zh) 2014-11-05 2015-11-05 影响分析

Country Status (9)

Country Link
US (2) US10176234B2 (zh)
EP (1) EP3215935A1 (zh)
JP (2) JP6928552B2 (zh)
KR (1) KR102539041B1 (zh)
CN (1) CN107135663B (zh)
AU (2) AU2015342993B2 (zh)
CA (1) CA2966541C (zh)
SG (2) SG10202000449XA (zh)
WO (1) WO2016073735A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108933968A (zh) * 2018-07-03 2018-12-04 武汉斗鱼网络科技有限公司 一种消息格式的转换方法、装置、存储介质及安卓终端
CN110781086A (zh) * 2019-10-23 2020-02-11 南京大学 一种基于程序依赖关系和符号分析的跨项目缺陷影响分析方法
CN115516443A (zh) * 2020-03-06 2022-12-23 起元技术有限责任公司 根据架构生成优化逻辑

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9396283B2 (en) 2010-10-22 2016-07-19 Daniel Paul Miranker System for accessing a relational database using semantic queries
US10176234B2 (en) 2014-11-05 2019-01-08 Ab Initio Technology Llc Impact analysis
US11036697B2 (en) * 2016-06-19 2021-06-15 Data.World, Inc. Transmuting data associations among data arrangements to facilitate data operations in a system of networked collaborative datasets
US10699027B2 (en) 2016-06-19 2020-06-30 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US10346429B2 (en) 2016-06-19 2019-07-09 Data.World, Inc. Management of collaborative datasets via distributed computer networks
US11947554B2 (en) 2016-06-19 2024-04-02 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US10645548B2 (en) 2016-06-19 2020-05-05 Data.World, Inc. Computerized tool implementation of layered data files to discover, form, or analyze dataset interrelations of networked collaborative datasets
US11755602B2 (en) 2016-06-19 2023-09-12 Data.World, Inc. Correlating parallelized data from disparate data sources to aggregate graph data portions to predictively identify entity data
US11675808B2 (en) 2016-06-19 2023-06-13 Data.World, Inc. Dataset analysis and dataset attribute inferencing to form collaborative datasets
US11042556B2 (en) * 2016-06-19 2021-06-22 Data.World, Inc. Localized link formation to perform implicitly federated queries using extended computerized query language syntax
US11016931B2 (en) 2016-06-19 2021-05-25 Data.World, Inc. Data ingestion to generate layered dataset interrelations to form a system of networked collaborative datasets
US10691710B2 (en) 2016-06-19 2020-06-23 Data.World, Inc. Interactive interfaces as computerized tools to present summarization data of dataset attributes for collaborative datasets
US10747774B2 (en) 2016-06-19 2020-08-18 Data.World, Inc. Interactive interfaces to present data arrangement overviews and summarized dataset attributes for collaborative datasets
US11941140B2 (en) 2016-06-19 2024-03-26 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US10353911B2 (en) 2016-06-19 2019-07-16 Data.World, Inc. Computerized tools to discover, form, and analyze dataset interrelations among a system of networked collaborative datasets
US11068847B2 (en) 2016-06-19 2021-07-20 Data.World, Inc. Computerized tools to facilitate data project development via data access layering logic in a networked computing platform including collaborative datasets
US11023104B2 (en) 2016-06-19 2021-06-01 data.world,Inc. Interactive interfaces as computerized tools to present summarization data of dataset attributes for collaborative datasets
US11086896B2 (en) * 2016-06-19 2021-08-10 Data.World, Inc. Dynamic composite data dictionary to facilitate data operations via computerized tools configured to access collaborative datasets in a networked computing platform
US10853376B2 (en) 2016-06-19 2020-12-01 Data.World, Inc. Collaborative dataset consolidation via distributed computer networks
US10824637B2 (en) 2017-03-09 2020-11-03 Data.World, Inc. Matching subsets of tabular data arrangements to subsets of graphical data arrangements at ingestion into data driven collaborative datasets
US11068475B2 (en) 2016-06-19 2021-07-20 Data.World, Inc. Computerized tools to develop and manage data-driven projects collaboratively via a networked computing platform and collaborative datasets
US10324925B2 (en) 2016-06-19 2019-06-18 Data.World, Inc. Query generation for collaborative datasets
US10452975B2 (en) 2016-06-19 2019-10-22 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US11468049B2 (en) 2016-06-19 2022-10-11 Data.World, Inc. Data ingestion to generate layered dataset interrelations to form a system of networked collaborative datasets
US11042537B2 (en) * 2016-06-19 2021-06-22 Data.World, Inc. Link-formative auxiliary queries applied at data ingestion to facilitate data operations in a system of networked collaborative datasets
US10452677B2 (en) 2016-06-19 2019-10-22 Data.World, Inc. Dataset analysis and dataset attribute inferencing to form collaborative datasets
US11042548B2 (en) * 2016-06-19 2021-06-22 Data World, Inc. Aggregation of ancillary data associated with source data in a system of networked collaborative datasets
US10984008B2 (en) 2016-06-19 2021-04-20 Data.World, Inc. Collaborative dataset consolidation via distributed computer networks
US11042560B2 (en) 2016-06-19 2021-06-22 data. world, Inc. Extended computerized query language syntax for analyzing multiple tabular data arrangements in data-driven collaborative projects
US10515085B2 (en) 2016-06-19 2019-12-24 Data.World, Inc. Consolidator platform to implement collaborative datasets via distributed computer networks
US11036716B2 (en) * 2016-06-19 2021-06-15 Data World, Inc. Layered data generation and data remediation to facilitate formation of interrelated data in a system of networked collaborative datasets
US10438013B2 (en) 2016-06-19 2019-10-08 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US11334625B2 (en) 2016-06-19 2022-05-17 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
JP6878804B2 (ja) * 2016-09-15 2021-06-02 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム
US11068453B2 (en) * 2017-03-09 2021-07-20 data.world, Inc Determining a degree of similarity of a subset of tabular data arrangements to subsets of graph data arrangements at ingestion into a data-driven collaborative dataset platform
US11238109B2 (en) * 2017-03-09 2022-02-01 Data.World, Inc. Computerized tools configured to determine subsets of graph data arrangements for linking relevant data to enrich datasets associated with a data-driven collaborative dataset platform
US10176217B1 (en) * 2017-07-06 2019-01-08 Palantir Technologies, Inc. Dynamically performing data processing in a data pipeline system
US10922308B2 (en) 2018-03-20 2021-02-16 Data.World, Inc. Predictive determination of constraint data for application with linked data in graph-based datasets associated with a data-driven collaborative dataset platform
US11243960B2 (en) 2018-03-20 2022-02-08 Data.World, Inc. Content addressable caching and federation in linked data projects in a data-driven collaborative dataset platform using disparate database architectures
USD940732S1 (en) 2018-05-22 2022-01-11 Data.World, Inc. Display screen or portion thereof with a graphical user interface
US11947529B2 (en) 2018-05-22 2024-04-02 Data.World, Inc. Generating and analyzing a data model to identify relevant data catalog data derived from graph-based data arrangements to perform an action
US11537990B2 (en) 2018-05-22 2022-12-27 Data.World, Inc. Computerized tools to collaboratively generate queries to access in-situ predictive data models in a networked computing platform
USD940169S1 (en) 2018-05-22 2022-01-04 Data.World, Inc. Display screen or portion thereof with a graphical user interface
USD920353S1 (en) 2018-05-22 2021-05-25 Data.World, Inc. Display screen or portion thereof with graphical user interface
US11327991B2 (en) * 2018-05-22 2022-05-10 Data.World, Inc. Auxiliary query commands to deploy predictive data models for queries in a networked computing platform
US11442988B2 (en) 2018-06-07 2022-09-13 Data.World, Inc. Method and system for editing and maintaining a graph schema
EP3824398A1 (en) 2018-07-19 2021-05-26 AB Initio Technology LLC Publishing to a data warehouse
US10445170B1 (en) 2018-11-21 2019-10-15 Fmr Llc Data lineage identification and change impact prediction in a distributed computing environment
MY195007A (en) * 2018-12-31 2022-12-30 Mimos Berhad A system and method for impact analysis of change request that affects database structure through classificiation and keyword similarity analysis
US10936478B2 (en) * 2019-01-10 2021-03-02 Oracle International Corporation Fast change impact analysis tool for large-scale software systems
US10768907B2 (en) * 2019-01-30 2020-09-08 Bank Of America Corporation System for transformation prediction with code change analyzer and implementer
US10853198B2 (en) * 2019-01-30 2020-12-01 Bank Of America Corporation System to restore a transformation state using blockchain technology
US10824635B2 (en) 2019-01-30 2020-11-03 Bank Of America Corporation System for dynamic intelligent code change implementation
WO2021252805A1 (en) * 2020-06-11 2021-12-16 Data.World, Inc. Auxiliary query commands to deploy predictive data models for queries in a networked computing platform
US20230068947A1 (en) * 2021-08-27 2023-03-02 Bank Of Montreal Systems and methods for processing inter-dependent data for risk modelling and analysis
US20230169124A1 (en) * 2021-11-30 2023-06-01 Data.World, Inc. Computerized tools configured to determine subsets of graph data arrangements for linking relevant data to enrich datasets associated with a data-driven collaborative dataset platform
US11947600B2 (en) 2021-11-30 2024-04-02 Data.World, Inc. Content addressable caching and federation in linked data projects in a data-driven collaborative dataset platform using disparate database architectures
US11841889B1 (en) * 2022-01-13 2023-12-12 Tableau Software, LLC Generating visually simplified calculation expressions corresponding to user manipulation of textual data elements
CN115686799B (zh) * 2022-12-29 2023-04-07 中国华能集团清洁能源技术研究院有限公司 一种大数据平台中的任务调度方法、装置、设备及介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101089A1 (en) * 2001-11-29 2003-05-29 Perot Systems Corporation Method and system for quantitatively assessing project risk and effectiveness
US20050183046A1 (en) * 2004-02-17 2005-08-18 International Business Machines Corporation Method for optimization of logic circuits for routability
CN1713179A (zh) * 2004-06-23 2005-12-28 微软公司 在对象模型中的影响分析
US20060294150A1 (en) * 2005-06-27 2006-12-28 Stanfill Craig W Managing metadata for graph-based computations
US20080256014A1 (en) * 2007-04-10 2008-10-16 Joel Gould Editing and Compiling Business Rules
CN102637208A (zh) * 2012-03-28 2012-08-15 南京财经大学 一种基于模式挖掘的噪音数据过滤方法
CN103178982A (zh) * 2011-12-23 2013-06-26 阿里巴巴集团控股有限公司 日志分析方法和装置
CN103348598A (zh) * 2011-01-28 2013-10-09 起元科技有限公司 生成数据模式信息
US20130346157A1 (en) * 2012-06-20 2013-12-26 Dionysios AVRILIONIS Revenue optimization platform apparatuses, methods, systems and services
CN104123352A (zh) * 2014-07-10 2014-10-29 西安理工大学 面向微博的话题层次用户影响力度量方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06175858A (ja) 1992-12-02 1994-06-24 Hitachi Ltd プログラム翻訳装置
JPH06290039A (ja) 1993-04-06 1994-10-18 Hitachi Ltd プログラム変更方法
JPH09101880A (ja) 1995-10-04 1997-04-15 Fujitsu Ltd プログラム分析装置
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6038558A (en) 1996-10-18 2000-03-14 Sagent Technology, Inc. Extensible database retrieval and viewing architecture
US5930794A (en) 1996-10-18 1999-07-27 Sagent Technologies, Inc. Database repository with deferred transactions
TW440782B (en) * 1996-12-11 2001-06-16 Matsushita Electric Ind Co Ltd Method for estimating hot carrier deterioration
US6032158A (en) 1997-05-02 2000-02-29 Informatica Corporation Apparatus and method for capturing and propagating changes from an operational database to data marts
US6044374A (en) 1997-11-14 2000-03-28 Informatica Corporation Method and apparatus for sharing metadata between multiple data marts through object references
JP2000339145A (ja) * 1999-05-28 2000-12-08 Kawasaki Steel Systems R & D Corp プログラム保守支援方法、装置及び記録媒体
KR20100023976A (ko) 2004-05-13 2010-03-04 후지쯔 가부시끼가이샤 아파타이트와 그 제조 방법, 및 아파타이트 기재
JP2007128123A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd 影響範囲抽出システム
JPWO2009011057A1 (ja) * 2007-07-19 2010-09-09 富士通株式会社 アプリケーション解析プログラム、アプリケーション解析方法およびアプリケーション解析装置
JP2009157505A (ja) * 2007-12-25 2009-07-16 Mitsubishi Electric Corp ソフトウェア変更影響分析装置
AU2009267034B2 (en) * 2008-06-30 2015-12-10 Ab Initio Technology Llc Data logging in graph-based computations
JP2010015458A (ja) * 2008-07-04 2010-01-21 Hitachi Ltd プログラム修正支援システム、プログラム修正支援方法、およびプログラム修正支援プログラム
US8458654B2 (en) * 2008-10-22 2013-06-04 International Business Machines Corporation Identifying impact of database changes on an application
WO2010065623A1 (en) 2008-12-02 2010-06-10 Ab Initio Software Llc Visualizing relationships between data elements and graphical representations of data element attributes
AU2010208112B2 (en) * 2009-01-30 2015-05-28 Ab Initio Technology Llc Processing data using vector fields
JP6121163B2 (ja) * 2009-09-16 2017-04-26 アビニシオ テクノロジー エルエルシー データセット要素のマッピング
CN106294853B (zh) * 2010-06-22 2019-10-11 起元技术有限责任公司 用于处理相关数据集的方法及数据处理系统
US10503817B2 (en) * 2011-01-12 2019-12-10 Crucs Holdings, Llc System and method for multi-party document revision
WO2012097278A1 (en) 2011-01-14 2012-07-19 Ab Initio Technology Llc Managing changes to collections of data
JP5918476B2 (ja) 2011-03-31 2016-05-18 株式会社日立メタルプレシジョン 回転伝達装置およびこれを用いたシート材穿孔装置
US9552202B2 (en) * 2011-12-08 2017-01-24 International Business Machines Corporation Automated and heuristically managed solution to quantify CPU and path length cost of instructions added, changed or removed by a service team
WO2015050072A1 (ja) * 2013-10-03 2015-04-09 富士フイルム株式会社 クリニカルパス管理装置
US10176234B2 (en) 2014-11-05 2019-01-08 Ab Initio Technology Llc Impact analysis

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030101089A1 (en) * 2001-11-29 2003-05-29 Perot Systems Corporation Method and system for quantitatively assessing project risk and effectiveness
US20050183046A1 (en) * 2004-02-17 2005-08-18 International Business Machines Corporation Method for optimization of logic circuits for routability
CN1713179A (zh) * 2004-06-23 2005-12-28 微软公司 在对象模型中的影响分析
US20060294150A1 (en) * 2005-06-27 2006-12-28 Stanfill Craig W Managing metadata for graph-based computations
US20080256014A1 (en) * 2007-04-10 2008-10-16 Joel Gould Editing and Compiling Business Rules
CN103348598A (zh) * 2011-01-28 2013-10-09 起元科技有限公司 生成数据模式信息
CN103178982A (zh) * 2011-12-23 2013-06-26 阿里巴巴集团控股有限公司 日志分析方法和装置
CN102637208A (zh) * 2012-03-28 2012-08-15 南京财经大学 一种基于模式挖掘的噪音数据过滤方法
US20130346157A1 (en) * 2012-06-20 2013-12-26 Dionysios AVRILIONIS Revenue optimization platform apparatuses, methods, systems and services
CN104123352A (zh) * 2014-07-10 2014-10-29 西安理工大学 面向微博的话题层次用户影响力度量方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
金飞 等: ""基于物理关联的学术期刊引用网络影响力分析"", 《西安邮电大学学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108933968A (zh) * 2018-07-03 2018-12-04 武汉斗鱼网络科技有限公司 一种消息格式的转换方法、装置、存储介质及安卓终端
CN110781086A (zh) * 2019-10-23 2020-02-11 南京大学 一种基于程序依赖关系和符号分析的跨项目缺陷影响分析方法
CN115516443A (zh) * 2020-03-06 2022-12-23 起元技术有限责任公司 根据架构生成优化逻辑
CN115516443B (zh) * 2020-03-06 2024-01-23 起元技术有限责任公司 根据架构生成优化逻辑

Also Published As

Publication number Publication date
SG11201703068SA (en) 2017-05-30
EP3215935A1 (en) 2017-09-13
JP7090778B2 (ja) 2022-06-24
AU2020210281B2 (en) 2022-06-02
AU2020210281A1 (en) 2020-08-20
SG10202000449XA (en) 2020-03-30
CN107135663B (zh) 2021-06-22
JP2018501538A (ja) 2018-01-18
US20160125057A1 (en) 2016-05-05
US20190095390A1 (en) 2019-03-28
AU2015342993B2 (en) 2020-05-21
CA2966541A1 (en) 2016-05-12
WO2016073735A1 (en) 2016-05-12
JP6928552B2 (ja) 2021-09-01
JP2021144719A (ja) 2021-09-24
AU2015342993A1 (en) 2017-05-04
US11475023B2 (en) 2022-10-18
KR20170081239A (ko) 2017-07-11
CA2966541C (en) 2023-09-26
US10176234B2 (en) 2019-01-08
KR102539041B1 (ko) 2023-05-31

Similar Documents

Publication Publication Date Title
CN107135663A (zh) 影响分析
CN110998516B (zh) 用于异构编程数据处理系统的自动化依赖性分析器
US8930337B2 (en) Mapping dataset elements
CN101520731B (zh) 图形用户接口应用比较器
CN101535955B (zh) 基于图形的计算的参数管理
Mäder et al. Towards automated traceability maintenance
Koshkina et al. Verification of business processes for web services
CN107924406A (zh) 选择用于对实时数据流执行的查询
US20110161371A1 (en) Sql generation
CN103218229A (zh) 管理对数据存储系统中的数据应用的规则的方法和系统
CN101887365A (zh) 用于构造基于组件的应用的可执行代码的方法和系统
Raatikainen et al. Improved management of issue dependencies in issue trackers of large collaborative projects
Ngo et al. Applying static analysis for automated extraction of database interactions in web applications
US11662998B2 (en) Detecting duplicated code patterns in visual programming language code instances
CN111277650B (zh) 一种结合功能指标和非功能指标的自动化微服务识别方法
Neeraj et al. A domain specific language for business transaction processing
CN116069669B (zh) 全自动分布式一致性的分析方法、系统、设备及存储介质
Kim Analyzing and inferring the structure of code change
Rodríguez et al. Model‐based assisted migration of oracle forms applications: The overall process in an industrial setting
Galrinho Live Graph Databases Using DCR Graphs
TARIQ Almost-Rerere: An approach for automating conflict resolution from similar resolved conflicts
Hess Evaluating Domain-Driven Design for Refactoring Existing Information Systems
Gomes REUSE MINER: MINING FRAMEWORK INSTANTIATION PROCESSES
Stevens A Declarative Foundation for Querying the History of Software Projects

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant