掌桥专利:专业的专利平台
掌桥专利
首页

更新可执行图

文献发布时间:2023-06-19 09:52:39


更新可执行图

本申请要求于2018年6月6日提交的美国专利申请序列号62/681,395和于2018年10月5日提交的美国专利申请序列号16/153,320的优先权,这两个美国专利申请的全部内容通过援引并入本文。

背景技术

在计算机程序的开发或执行期间,可以对计算机程序进行更改。有时,一开发者或一开发者团队可以独立于由另一开发者或另一开发者团队进行的更改而对计算机程序进行更改。

发明内容

在一方面,一种用于基于基础图生成更新的数据流图的方法包括识别第一数据流图与第二数据流图和第三数据流图中的每个数据流图之间的差异。该第一数据流图包括该基础图,该第二数据流图包括源图,并且该第三数据流图包括目标图。这些数据流图中的每个数据流图的规范定义了节点以及连接这些节点的一个或多个链路,这些节点中的至少一个节点表示数据处理组件,该数据处理组件定义要执行的、用于处理向该数据处理组件提供的数据的操作,并且每个链路表示数据流。该识别包括:将该基础图的规范与该源图的规范进行比较以识别该基础图与该源图之间的第一差异集合,该第一差异集合包括指示第一已删除节点、第一已删除链路、第一已添加节点、第一已添加链路、第一已修改节点和第一已修改链路中的一者或多者的信息;以及将该基础图的规范与该目标图的规范进行比较以识别该基础图与该目标图之间的第二差异集合,该第二差异集合包括指示第二已删除节点、第二已删除链路、第二已添加节点、第二已添加链路、第二已修改节点和第二已修改链路中的一者或多者的信息。该方法包括:表征该第一差异集合中的差异与该第二差异集合中的差异之间的对应关系,该表征包括识别以下各项中的一项或多项:(i)在该第一差异集合中识别出的、与在该第二差异集合中识别出的节点或链路相对应的节点或链路;(ii)在该第一差异集合中识别出的、不与在该第二差异集合中识别出的任何节点或链路相对应的节点或链路;和(iii)在该第二差异集合中识别出的、不与在该第一差异集合中识别出的任何节点或链路相对应的节点或链路。该方法包括基于以下各项确定组合差异的集合:所表征的对应关系、该基础图与该源图之间的该第一差异集合、以及该基础图与该目标图之间的该第二差异集合。该方法包括基于该基础图以及该组合差异的集合来生成该更新的数据流图。

实施例可以包括以下特征中的一个或多个特征。

在可与前述特征中的任何一个或多个特征结合的第一特征中,该源图、该基础图、该目标图和该更新的数据流图是可执行的数据流图。

在可与前述特征中的任何一个或多个特征结合的第二特征中,该源图是该基础图的第一修改版本,并且其中,该目标图是该基础图的第二修改版本。

在可与前述特征中的任何一个或多个特征结合的第三特征中,该方法包括生成该第一差异集合和该第二差异集合。针对每个差异集合中的每个差异,该差异集合包括:识别该差异的类型的信息、以及以下各项中的一项或多项:(i)指示与该差异相关联的一个或多个节点的信息以及(ii)指示与该差异相关联的一个或多个链路的信息。

在可与该第三特征结合的第四特征中,该差异的类型包括删除、添加和修改中的一者或多者。

在可与该第三特征或该第四特征结合的第五特征中,指示与该差异相关联的一个或多个节点的该信息包括:(i)识别已删除节点、已添加节点或已修改节点的信息;以及以下各项中的一项或多项:(ii)识别在该已删除节点、该已添加节点或该已修改节点的上游的节点的信息、和(iii)识别在该已删除节点、该已添加节点或该已修改节点的下游的节点的信息。

在可与该第三特征至第五特征中的任一特征结合的第六特征中,指示与该差异相关联的一个或多个链路的该信息包括以下各项中的一项或多项:(i)识别已添加链路的信息、和(ii)识别已删除链路的信息。

在可与前述特征中的任一特征结合的第七特征中,生成该组合差异的集合包括:将指示在该第一差异集合中识别出的、不与在该第二差异集合中识别出的任何节点或链路相对应的该节点或链路的信息包括在该组合差异的集合中。

在可与前述特征中的任一特征结合的第八特征中,该方法包括生成该组合差异的集合,该生成该组合差异的集合包括:将指示在该第二差异集合中识别出的、不与在该第一差异集合中识别出的任何节点或链路相对应的该节点或链路的信息包括在该组合差异的集合中。

在可与前述特征中的任一特征结合的第九特征中,该方法包括确定在该第一差异集合中识别出的该节点或链路与在该第二差异集合中识别出的相应节点或链路之间的兼容性。

在可与该第九特征结合的第十特征中,在该第一差异集合中识别出的该节点或链路包括第一已修改节点或链路,并且在该第二差异集合中识别出的该节点或链路包括第二已修改节点或链路。确定兼容性包括:确定与该第一已修改节点或链路相关联的修改同与该第二已修改节点或链路相关联的修改相兼容;以及将指示在该第一差异集合中识别出的该节点或链路和在该第二差异集合中识别出的该节点或链路两者的信息均包括在该组合差异的集合中。

在可与该第九特征或该第十特征结合的第十一特征中,在该第一差异集合中识别出的该节点或链路包括第一已修改节点或链路,并且在该第二差异集合中识别出的该节点或链路包括第二已修改节点或链路。确定兼容性包括:确定与该第一已修改节点或链路相关联的修改同与该第二已修改节点或链路相关联的修改相兼容;选择该第一已修改节点或链路,选择该第二已修改节点或链路,或者都不选择;以及将指示所选择的节点或链路的信息包括在该组合差异的集合中。

在可与前述特征中的任一特征结合的第十二特征中,确定该组合差异的集合包括:对于被确定为相对应的一对差异,确定这些差异相兼容;以及将指示该对中的两个差异的信息包括在该组合差异的集合中。

在可与前述特征中的任一特征结合的第十三特征中,确定该组合差异的集合包括:对于被确定为相对应的一对差异,确定这些差异是冲突的;选择该对中的这些差异中的一个差异;以及将指示所选择的差异的信息包括在该组合差异的集合中。

在可与该第十三特征结合的第十四特征中,该方法包括基于选择标准来选择这些差异中的一个差异。

在可与该第十三特征或该第十四特征结合的第十五特征中,该方法包括在用户界面上呈现指示该对中的两个差异的信息;以及基于用户输入来选择这些差异中的该一个差异。

在可与前述特征中的任一特征结合的第十六特征中,生成该更新的数据流图包括:生成该基础图的副本;以及将该组合差异的集合中的每个差异应用于该副本。

在可与前述特征中的任一特征结合的第十七特征中,将该基础图的规范与该源图的规范进行比较包括确定该基础图与该源图之间的对应关系。

在可与该第十七特征结合的第十八特征中,确定该基础图与该源图之间的对应关系包括以下操作中的一者或多者:(1)识别该基础图的、与该源图的节点或链路相对应的第一节点或链路;(2)识别该基础图的、不与该源图的任何节点相对应的第二节点或链路;以及(3)识别该源图的、不与该基础图的任何节点或链路相对应的第三节点或链路。

在可与该第十八特征结合的第十九特征中,识别该基础图与该源图之间的第一差异集合包括识别该基础图的该第一节点或链路与该源图的相应节点或链路之间的差异。

在可与该第十九特征结合的第二十特征中,识别该第一节点或链路与该源图的该相应节点或链路之间的差异包括识别该第一节点或链路的参数和参数表达式中的一者或多者与该相应的第一节点或链路的参数或参数表达式之间的差异。

在可与前述特征中的任一特征结合的第二十一特征中,该基础图包含基础子图,并且其中,该源图包含第一子图。该方法包括:将该基础子图的规范与该第一子图的规范进行比较以识别出该基础子图与该第一子图之间的一个或多个差异。

在可与前述特征中的任一特征结合的第二十二特征中,该第一数据流图是该基础图,该第二数据流图是该源图,并且该第三数据流图是该目标图。

在可与前述特征中的任一特征结合的第二十三特征中,这些链路表示节点之间的数据流。

在可与前述特征中的任一特征结合的第二十四特征中,这些链路表示节点之间的控制信号流。

在可与前述特征中的任一特征结合的第二十五特征中,该基础图、该源图和该目标图包括数据处理图。

在可与前述特征中的任一特征结合的第二十六特征中,该基础图、该源图和该目标图包括控制图。

在可与前述特征中的任一特征结合的第二十七特征中,该基础图、该源图和该目标图包括计划。

在可与前述特征中的任一特征结合的第二十八特征中,确定这些差异之间的该对应关系包括:识别以下各项:(1)涉及仅在该第一差异集合和该第二差异集合之一中识别出的节点或链路的差异;以及(2)涉及在该第一差异集合和该第二差异集合两者中识别出的节点或链路的差异。

在可与前述特征中的任一特征结合的第二十九特征中,确定该组合差异的集合包括:对于该第一差异集合和该第二差异集合的、涉及仅在该第一差异集合和该第二差异集合之一中识别出的节点或链路的每个差异,将指示该差异的信息添加到该组合差异的集合中,并且对于该第一差异集合和该第二差异集合的、涉及在该第一差异集合和该第二差异集合两者中识别出的节点或链路的每个差异,执行兼容性分析。

在可与该第二十九特征结合的第三十特征中,执行该兼容性分析包括:确定第一差异是否与第二差异冲突,其中,如果将一对冲突差异中的一个冲突差异应用于基础可执行图将阻止将该对冲突差异中的另一冲突差异应用于该基础可执行图,则该对冲突差异是冲突的。

在可与该第三十特征结合的第三十一特征中,该方法包括:在任一对冲突差异的情况下,通过根据选择标准选择该对冲突差异中的一个冲突差异来解析该对冲突差异的冲突,并且

将指示所选择的差异的信息添加到该组合差异的集合中。

在可与该第三十特征或该第三十一特征结合的第三十二特征中,该方法包括:提供图形用户界面;以及经由该图形用户界面显示以视觉方式表示该对冲突差异的信息。

在可与该第三十二特征结合的第三十三特征中,该方法包括:经由该图形用户界面显示对该对冲突差异中的一个差异的一个或多个选择的一个或多个视觉表示以及将由对应选择产生的对应更新的数据流图的视觉表示。

在可与该第三十三特征结合的第三十四特征中,该方法包括:经由该图形用户界面从用户接收包括对所建议的一个或多个选择的视觉表示之一的选择的输入,其中,选择标准由该输入定义。

一方面,一种非暂态计算机可读介质存储有用于使计算系统基于基础图生成更新的数据流图的指令。这些指令包括用于使该计算系统识别第一数据流图与第二数据流图和第三数据流图中的每个数据流图之间的差异的指令,其中,该第一数据流图包括该基础图,该第二数据流图包括源图,并且该第三数据流图包括目标图。这些数据流图中的每个数据流图的规范定义了节点以及连接这些节点的一个或多个链路,这些节点中的至少一个节点表示数据处理组件,该数据处理组件定义要执行的、用于处理向该数据处理组件提供的数据的操作,并且每个链路表示数据流。该识别包括:将该基础图的规范与该源图的规范进行比较以识别该基础图与该源图之间的第一差异集合,该第一差异集合包括指示第一已删除节点、第一已删除链路、第一已添加节点、第一已添加链路、第一已修改节点和第一已修改链路中的一者或多者的信息;以及将该基础图的规范与该目标图的规范进行比较以识别该基础图与该目标图之间的第二差异集合,该第二差异集合包括指示第二已删除节点、第二已删除链路、第二已添加节点、第二已添加链路、第二已修改节点和第二已修改链路中的一者或多者的信息。这些指令包括用于使该计算系统表征该第一差异集合中的差异与该第二差异集合中的差异之间的对应关系的指令,该表征包括识别以下各项中的一项或多项:(i)在该第一差异集合中识别出的、与在该第二差异集合中识别出的节点或链路相对应的节点或链路;(ii)在该第一差异集合中识别出的、不与在该第二差异集合中识别出的任何节点或链路相对应的节点或链路;和(iii)在该第二差异集合中识别出的、不与在该第一差异集合中识别出的任何节点或链路相对应的节点或链路。这些指令包括用于使该计算系统执行以下操作的指令:基于所表征的对应关系、该基础图与该源图之间的该第一差异集合、以及该基础图与该目标图之间的该第二差异集合来确定组合差异的集合;并且基于该基础图以及该组合差异的集合来生成该更新的数据流图。

一方面,一种用于基于基础图生成更新的数据流图的计算系统包括耦接至存储器的一个或多个处理器。该一个或多个处理器和存储器被配置成识别第一数据流图与第二数据流图和第三数据流图中的每个数据流图之间的差异的指令,其中,该第一数据流图包括该基础图,该第二数据流图包括源图,并且该第三数据流图包括目标图。这些数据流图中的每个数据流图的规范定义了节点以及连接这些节点的一个或多个链路,这些节点中的至少一个节点表示数据处理组件,该数据处理组件定义要执行的、用于处理向该数据处理组件提供的数据的操作,并且每个链路表示数据流。该识别包括:将该基础图的规范与该源图的规范进行比较以识别该基础图与该源图之间的第一差异集合,该第一差异集合包括指示第一已删除节点、第一已删除链路、第一已添加节点、第一已添加链路、第一已修改节点和第一已修改链路中的一者或多者的信息;以及将该基础图的规范与该目标图的规范进行比较以识别该基础图与该目标图之间的第二差异集合,该第二差异集合包括指示第二已删除节点、第二已删除链路、第二已添加节点、第二已添加链路、第二已修改节点和第二已修改链路中的一者或多者的信息。该一个或多个处理器和存储器被配置成表征该第一差异集合中的差异与该第二差异集合中的差异之间的对应关系的指令,该表征包括识别以下各项中的一项或多项:(i)在该第一差异集合中识别出的、与在该第二差异集合中识别出的节点或链路相对应的节点或链路;(ii)在该第一差异集合中识别出的、不与在该第二差异集合中识别出的任何节点或链路相对应的节点或链路;和(iii)在该第二差异集合中识别出的、不与在该第一差异集合中识别出的任何节点或链路相对应的节点或链路。该一个或多个处理器和存储器被配置成执行以下操作:基于所表征的对应关系、该基础图与该源图之间的该第一差异集合、以及该基础图与该目标图之间的该第二差异集合来确定组合差异的集合;并且基于该基础图以及该组合差异的集合来生成该更新的数据流图。

一方面,一种用于基于基础图生成更新的数据流图的计算系统包括:用于识别第一数据流图与第二数据流图和第三数据流图中的每个数据流图之间的差异的装置,其中,该第一数据流图包括基础图,该第二数据流图包括源图,并且该第三数据流图包括目标图。这些数据流图中的每个数据流图的规范定义了节点以及连接这些节点的一个或多个链路,这些节点中的至少一个节点表示数据处理组件,该数据处理组件定义要执行的、用于处理向该数据处理组件提供的数据的操作,并且每个链路表示数据流。该识别包括:将该基础图的规范与该源图的规范进行比较以识别该基础图与该源图之间的第一差异集合,该第一差异集合包括指示第一已删除节点、第一已删除链路、第一已添加节点、第一已添加链路、第一已修改节点和第一已修改链路中的一者或多者的信息;以及将该基础图的规范与该目标图的规范进行比较以识别该基础图与该目标图之间的第二差异集合,该第二差异集合包括指示第二已删除节点、第二已删除链路、第二已添加节点、第二已添加链路、第二已修改节点和第二已修改链路中的一者或多者的信息。该计算系统包括:用于表征该第一差异集合中的差异与该第二差异集合中的差异之间的对应关系的装置,该表征包括识别以下各项中的一项或多项:(i)在该第一差异集合中识别出的、与在该第二差异集合中识别出的节点或链路相对应的节点或链路;(ii)在该第一差异集合中识别出的、不与在该第二差异集合中识别出的任何节点或链路相对应的节点或链路;和(iii)在该第二差异集合中识别出的、不与在该第一差异集合中识别出的任何节点或链路相对应的节点或链路。该计算系统包括用于基于以下各项确定组合差异的集合的装置:所表征的对应关系、该基础图与该源图之间的该第一差异集合、以及该基础图与该目标图之间的该第二差异集合。该计算系统包括用于基于该基础图以及该组合差异的集合来生成该更新的数据流图的装置。

这里所描述的方法能够将数据流图(即,计算机程序)的多个版本高效且可靠地自动合并成反映这些版本中的每个版本的更改的单个更新的数据流图。可以使用该自动合并以便例如将由多个团队中的每个团队独立执行的关于计算机程序的开发工作或调试工作高效且可靠地组合成单个更新的计算机程序。这种高效且可靠的版本管理在软件开发过程期间为程序开发者提供了帮助,并且因此也使该开发过程更加高效和精确。

附图说明

图1是数据流图的图形表示。

图2A至图2C是数据流图的图形表示。

图3是系统图。

图4A至图4D是数据流图的图形表示。

图5A和图5B是流程图。

图6至图9是屏幕截图。

图10是流程图。

图11是用于开发数据流图的数据处理系统的图。

具体实施方式

这里我们描述了一种用于将计算机程序的多个版本合并成单个更新的程序的方法。例如,在开发或调试诸如数据流图(例如,数据处理图、控制图或计划)等计算机程序时,多位开发者或多组开发者可以各自独立地研究计算机程序。因此,可能生成计算机程序的多个修改版本。可以识别出基础计算机程序与基础计算机程序的这些修改版本中的每个修改版本之间的差异,并且可以将所有差异的完整集合应用于基础计算机程序,以生成反映在基础计算机程序的每个修改版本中进行的更改的单个更新的计算机程序。

数据流图是计算机程序的图形表示,该图形表示可以包括表示数据处理组件和数据集(诸如数据源和数据接收器)的节点。数据集可以是例如文件、数据库表或可提供数据(例如,数据记录)以供图进行处理或接收由图进行处理的数据的其他类型的数据源或接收器。数据处理组件和数据集有时统称为图的节点。连接图的两个节点的链路表示第一节点与第二节点之间的信息(诸如,数据或控制信号)流。这样的数据流图(有时被称为图)可以是数据处理图、控制图或计划。在一些示例中,数据流图可以能够被执行以实施对信息的处理。在一些示例中,数据流图是不可执行的,例如,表示仍在进行开发或调试的计算机程序的数据流图。图1示出了数据流图10,该数据流图被配置成处理数据并且包括各自由对应的链路14、20连接到过滤器节点16的数据源12、18。过滤器节点16通过链路24、28分别连接到数据接收器22、26。

图的节点可以具有链路可以连接至其的输入端口和/或输出端口。在图1的示例中,链路14、20的上游端连接至相应数据源12、18的输出端口。链路24的上游端连接至过滤器节点16的输出端口。链路14、20的下游端连接至过滤器节点16的输入端口。链路24、28的下游端连接至相应数据接收器22、26的输入端口。

数据处理组件执行用于处理或操纵数据的操作。节点是数据处理组件(例如,软件和硬件的组合)的图形表示,该数据处理组件是由编程代码定义的对象,该编程代码当被执行时实施对数据处理组件的操作。数据处理组件的示例包括映射组件、过滤器组件、去重复组件、聚合组件、复制组件、标准化组件、分区和排序组件、联接组件、或其他类型的数据处理组件。在一些示例中,数据源和数据接收器组件可以被认为是数据处理组件。可以关于一个或多个参数定义数据处理组件的操作。可以在由数据处理组件的代码引用的文件(例如,.dml文件)中定义参数。例如,文件可以包括与数据处理组件相关联的参数的值或表达式。当图被实例化时(例如,在运行时),评估参数的表达式以获得参数的值,有时称为解析参数。参数值或表达式可以例如由用户通过用户界面定义(例如,响应于提示)、从文件定义、或根据同一情境或不同情境中的另一参数定义。例如,通过将参数指定为具有与另一参数“相同”的关系,可以从不同的情境导出参数(例如,在不同组件的情境中评估的参数)。在图1的示例中,过滤器节点16及其相应的组件具有相关联的参数集15。

我们将初始的未修改的数据流图称为基础可执行图或基础图。已经相对于基础图被修改的图的第一修改版本被称为源可执行图或源图。已经相对于基础图被修改的图的第二修改版本被称为目标可执行图或目标图。并入了来自源可执行图和目标可执行图两者的更改的图被称为更新的数据流图。

对源图和目标图中的每个图执行差异分析以分别识别出基础图与源图和目标图之间的相应差异集合。差异分析的结果是多个差异集合,每个差异集合指示基础图与源图和目标图之一之间的差异。将多个差异集合合并成单个组合差异的集合。将该组合差异的集合应用于基础图以生成更新的图。这有助于提供以上所提及的高效且可靠的版本管理。

在示例中,图1的数据流图10是基础图。图2A和图2B分别示出了源图30和目标图40。对于源图30和目标图40中的每个图执行差异分析,以识别出基础图10与每个图30、40之间的差异。对第一图和第二图(例如,基础图10和源图30)的差异分析识别:存在于源图30中、但不存在于基础图10中的节点(被称为已添加节点);存在于基础图10中、但不存在于源图30中的一个或多个节点(被称为已删除节点);以及存在于基础图10和源图30两者中、但已经被修改的一个或多个节点(被称为已修改节点)。修改的节点在第一图和第二图之间可以大致上类似,但是具有参数、属性或与节点相关联的其他特征的更改,如以下进一步讨论的。差异分析还可以识别第一图的一个或多个链路与第二图的一个或多个链路之间的差异。以下提供了对差异分析的附加描述。

在图2A和图2B的示例中,对源图30的差异分析产生第一差异集合,该第一差异集合识别已添加节点32、已添加流34、35、36和已删除流14、20。对目标图40的差异分析产生第二差异集合,该第二差异集合识别具有更改的参数集15’的已修改节点16、已删除节点26和已删除链路28。

将多个差异集合联接成单个组合差异的集合,以下更详细描述的。在图2A和图2B的示例中,该组合差异的集合识别已添加节点32、已删除节点26、已修改节点16、以及已添加流和已删除流。还参考图2C,将该组合差异的集合应用于基础图10(或其副本),以生成更新的图50。更新的图50包括根据该组合差异的集合修改的基础图10的节点和链路。即,与基础图相比,在更新的图中添加(即,生成)与基础图相比在源图和目标图中的任一个图中添加的节点和链路。与基础图相比,在更新的图中删除(即,未生成)与基础图相比在源图和目标图中的任一个图中删除的节点和链路。

参考图3,图更新系统300识别基础图302与源图304和目标图306中的每个图之间的差异,并生成反映在这两个图304、306中相对于基础图302进行的更改的单个更新的图350。图更新系统300包括差异引擎310,该差异引擎对源图304和目标图306中的每个图执行差异分析并输出与每个图304、306相对应的差异集合312、314。每个差异集合识别基础图302与相应的图304、306之间的差异。图更新系统300还包括合并引擎320,该合并引擎将多个差异集合312、314合并成单个组合差异的集合322。图更新引擎330基于基础图302以及该组合差异的集合322来生成更新的图350。

对于给定的图(例如,源图或目标图),差异分析识别基础图302中的在源图或目标图中已经被删除的节点、已经被添加到源图或目标图中的节点、以及在源图或目标图中已经被修改的节点。在一些示例中,差异分析还可以分析链路,以识别已删除链路、已添加链路和已修改链路。差异引擎310将基础图302的规范与源图和目标图中的每个图的规范进行比较,以确定基础图302中的哪些节点(例如,与数据处理组件、输入数据集或输出数据集相对应的节点)与源图和目标图中的每个图中的节点相对应。图的规范是与图分开的、定义了图的元素(诸如图的节点和链路)的文件。

相应的节点是这样的节点:在基础图和源图或目标图两者中在某种程度上相关但不一定相同、并且可以在基础图与源图或目标图之间具有差异但通常类似到足以被视为这两个图中的同一节点(诸如具有不同相关联参数集但在其他方面相同的节点)。在一些示例中,差异引擎310基于与节点相关联的元数据来识别相应的节点,该元数据诸如节点的类型(例如,数据处理组件或数据集)、节点的名称、节点的唯一标识符、或与节点相关联的其他元数据中的一者或多者。在一些示例中,差异引擎310基于与进入或离开节点或组件的数据流相关联的信息来识别相应的节点,该信息诸如端口的名称或数量、进入节点的数据流的名称或源、离开节点或组件的数据流的名称或目的地、或与进入或离开节点或组件的数据流相关联的其他信息。在一些示例中,差异引擎310基于拓扑信息来识别相应的节点,该拓扑信息诸如将特定节点相对于其他节点定位在图中的位置(例如,哪个节点或哪些节点直接在特定节点的上游或下游)。在一些示例中,差异引擎310基于画布上的图的图形表示中的节点的位置(例如,x-y坐标)来识别相应的节点。在一些示例中,差异引擎310在识别相应的节点时忽略位置信息,例如,这是因为在画布上的节点的位置可能对节点或包含节点的图的功能没有影响。

在对给定图(例如,源图304或目标图306)进行差异分析时,由差异引擎310将基础图302中的、在源图304或目标图306中没有相应节点的任何节点识别为该图的差异集合中的已删除节点。由差异引擎310将源图304或目标图306中的、在基础图302中没有相应节点的任何节点识别为该图的差异集合中的已添加节点。

由差异引擎310进一步分析相应节点对,以确定源图304或目标图306中的节点相对于基础图302中的相应节点是否具有任何差异。如果识别出差异,则由差异引擎310将节点识别为已修改节点。在一些示例中,差异引擎310可以分析可能影响图执行的节点的特征和不影响图执行的节点的特征。影响图执行的特征可以包括例如参数,诸如参数表达式或参数值。不影响图执行的特征可以包括例如属性值(例如,作者属性、名称属性、版本属性或其他属性)、评论、图例、格式(例如,字体)、画布上的节点的位置、或其他特征。在一些示例中,差异引擎310可以仅分析可能影响图执行的特征,并且可以忽略不影响图执行的特征。

对相应节点对的参数的分析可以识别任何参数是被添加(例如,存在于源图或目标图的节点中、但不存在于基础图的相应节点中的参数)还是被移除(例如,存在于基础图的节点中、但不存在于源图或目标图的相应节点中的参数)。参数分析可以包括对定义参数的表达式、参数的值或两者的分析。为了分析参数的表达式,可以对与每一个节点相对应的源代码执行参数分析。

在一些示例中,差异分析还可以包括对由基础图和源图或目标图所引用的外部文件的分析。在一些示例中,由差异引擎310仅分析某些类型的文件,诸如记录格式文件(例如,.dml文件)、转换文件(例如,.xfr文件)、或其内容可能影响图执行的其他类型的文件。不考虑其他文件,诸如提供数据以用于由图或计划进行处理的文件。

基础图与源图或目标图之间的差异分析的结果是差异集合(例如,集合312、314),该差异集合包括指示差异中的每个差异的信息(例如,节点删除、节点添加和节点修改中的每一者)。指示已删除节点的信息可以包括以下各项中的一项或多项、或全部:

·识别基础图中的节点(例如,节点的唯一标识符)并指示节点的删除的信息;

·识别基础图中的节点上游的节点的信息;

·识别基础图中的节点下游的节点的信息;

·识别从上游节点到基础图中的节点的输入流并指示输入链路的删除的信息;

·识别从基础图中的节点到下游节点的输出链路并指示链路的删除的信息;以及

·识别源图或目标图中将上游节点连接到下游节点的流并指示链路的添加的信息。

指示已添加节点的信息可以包括以下各项中的一项或多项、或全部:

·指示节点的功能的信息(例如,节点的规范、节点的参数集或指示节点功能的其他信息);

·识别源图或目标图中已添加节点上游的节点的信息;

·识别源图或目标图中已添加节点下游的节点的信息;

·识别源图或目标图中从上游节点到已添加节点的链路并指示链路的添加的信息;

·识别源图或目标图中从已添加节点到下游节点的链路并指示链路的添加的信息;以及

·识别基础图中从上游节点到下游节点的链路并指示链路的删除的信息。

指示已修改节点的信息可以包括以下各项中的一项或多项、或全部:

·识别节点的信息;以及

·指示对节点的修改的信息(例如,更新的参数列表)。

在2017年5月5日提交的美国申请号15/587,987中提供了差异分析的附加描述,该申请的内容通过援引以其全文并入本文。

合并引擎320将多个差异集合312、314合并成该组合差异的集合322。为此,合并引擎320确定差异集合312、314之间的对应关系,以识别(1)涉及仅在差异集合之一中识别出的节点的差异,以及(2)涉及在多个差异集合中的两个或更多个差异集合中识别出的节点的差异。涉及特定节点的差异是指:指示差异的信息将特定节点识别为例如已删除节点、已添加节点、已修改节点、上游节点或下游节点的差异。对于涉及仅在差异集合之一中识别出的节点的每个差异,将指示该差异的信息添加到该组合差异的集合322中。对于涉及在两个或更多个差异集合中识别出的节点的每个差异,合并引擎320执行兼容性分析。

兼容性分析是确定第一差异与第二差异是冲突还是相兼容的分析。如果将一对差异中的一个差异应用到基础图的副本将阻止将该对差异中的另一个差异应用到副本,则将该对差异称为一对冲突。一对冲突的一个示例是删除过滤器组件,并且对同一过滤器组件的参数进行更改。一对冲突的另一示例是删除重新格式化组件,并且添加通过流而连接到该重新格式化组件的数据源。一对冲突的另一示例是对组件参数进行第一次更改并对该组件的同一参数进行不同的第二次更改。

合并引擎320通过选择该对差异中的一个差异来解析每对冲突。将指示所选择的差异的信息添加到该组合差异的集合322中。在一些示例中,合并引擎320参考选择标准324(例如,由用户提供的关于如何解析冲突的指令)来解析每对差异。例如,选择标准可以为多个差异集合指定优先级顺序,并指示合并引擎320将从较高优先级的差异集合中选择差异。在一些示例中,合并引擎320使多对冲突显示在用户界面340上,使得用户可以从每对冲突中手动地选择差异。

在一些示例中,可以将多对冲突作为文本信息(例如,作为列表)呈现给用户。在一些示例中,可以使用差异中的每个差异的图形表示将多对冲突呈现给用户,例如,如在2017年5月5日提交的美国申请号15/587,987中所描述的,该申请的内容通过援引以其全文并入本文。

图更新引擎330基于该组合差异的集合322中的差异来生成更新的图350。例如,图更新引擎330可以生成基础图302的副本,并将该组合差异的集合322中的差异应用于该副本。对于每个差异,该组合差异的集合322识别要进行的一个或多个更改,包括链路的添加或删除以及节点的添加、删除或修改。图更新引擎330将这些更改中的每个更改应用于副本。应用了所有更改的副本是更新的图350。

在一些示例中,该组合差异的集合可以仅包括那些相兼容的差异,并且更新的图350因此仅反映了相兼容的差异。一旦解析了多对冲突的差异,也就可以将已解析的差异应用于更新的图。

参考图4A至图4D,示出了合并差异的示例。图4A示出了用于处理银行交易记录的基础图400。基础图400具有数据源402、重新格式化节点404、过滤器节点406和数据接收器408。过滤器节点406与包括识别transaction_amount(交易_金额)字段的filter_by(筛选条件)参数的参数集405相关联。如图4A所示的,节点经由链路410、412、416相连接。

图4B和图4C分别是源图420和目标图440。差异分析识别出,在源图420中已经删除了过滤器节点406并且已经添加了附加数据源422。在目标图440中,过滤器节点406与修改的参数集405’相关联,在该参数集中,filter_by参数是transaction_date(交易_日期)字段,并且已经添加了附加排序节点442。

源图420的该差异集合包括以下信息:

·指示已删除过滤器节点406的信息:

ο过滤器节点406的标识符;

ο基础图400中过滤器节点406上游的重新格式化节点404的标识符;

ο基础图中过滤器节点406下游的数据接收器节点408的标识符;

ο基础图中重新格式化节点404与过滤器节点406之间的链路412的标识符,以及链路412删除的指示;

ο基础图中过滤器节点406与数据接收器节点408之间的链路416的标识符,以及链路416删除的指示;以及

ο源图420中重新格式化节点404与数据接收器节点408之间的新链路424的标识符。

·指示新数据源节点422的信息:

ο数据源节点422的规范;

ο源图420中数据源节点422下游的重新格式化节点404的标识符;以及

ο源图420中数据源节点422与重新格式化节点404之间的新链路426的标识符。

目标图440的该差异集合包括以下信息:

·指示过滤器节点406的修改的信息:

ο过滤器节点406的标识符;

ο目标图440中过滤器节点406上游的重新格式化节点的标识符;

ο目标图440中过滤器节点406下游的排序节点的标识符;

ο连接到过滤器节点402的每个链路412、444的标识符;以及

ο更改后的参数集405’的规范。

·指示排序节点442的添加的信息:

ο排序节点442的规范;

ο排序节点的参数集的规范;

ο目标图440中排序节点442上游的过滤器节点406的标识符;

ο目标图440中排序节点442下游的数据接收器节点408的标识符;

ο目标图440中过滤器节点406与排序节点442之间的新链路444的标识符;

ο目标图中排序节点442与数据接收器408之间的新链路446的标识符;以及

ο基础图中过滤器节点406与数据接收器408之间的链路416的标识符以及链路416删除的指示。

兼容性分析确定在源图420中添加数据源422与目标图440中的所有差异相兼容并且确定在目标图440中添加排序节点442与源图420中的所有差异相兼容。将以上列出的指示数据源422的添加和排序组件442的添加的信息添加到组合差异的集合中。

兼容性分析将源图420中过滤器节点406的删除识别为与同目标图440中过滤器节点406相关联的参数集15的修改冲突。在该示例中,在用户界面上将该冲突呈现给用户,并且用户可以例如以对参数集的修改的选择进行响应。可替代地,选择标准可以由系统300自动应用并且可能导致相同的选择。将以上列出的指示参数集的修改的信息添加到该组合差异的集合中。不将指示过滤器节点406的删除的信息添加到该组合差异的集合中。

参考图4D,将该组合差异的集合中的差异应用于基础图400的副本,以生成更新的图450。具体地,将如上所指定的对节点和链路的添加、删除和修改应用于基础图400的副本。例如,为了将对排序节点的添加应用于基础图的副本,删除链路416,添加排序节点442,并添加新链路446、448,以将排序节点连接到上游节点和下游节点。图450中的每个节点表示相应的组件,并且图450中的每个链路表示组件之间的相应数据流。

图5A示出了用于基于基础图以及源图和目标图来生成更新的图的示例过程。确定基础图与源图之间的第一差异集合(500)。参考图5B,为了确定第一差异集合,确定基础图中的每个节点或链路与源图中的节点或链路之间的对应关系(550)。将基础图中的、与源图中的第二节点或链路相对应的每个第一节点或链路与相应的第二节点或链路进行比较(552),并识别出第一节点或链路与第二节点或链路之间的任何差异(554)。如果第一节点或链路与第二节点或链路之间不存在差异(556),则不将第二节点或链路包括在第一差异集合中(558)。如果第一节点或链路与第二节点或链路之间存在差异(560),则将第二节点或链路指定为第一差异集合中的已修改节点或链路(562)。将基础图中的、不与源图中的节点或链路相对应的节点或链路指定为第一差异集合中的已删除节点或链路(564)。将源图中的、不与基础图中的节点或链路相对应的节点或链路指定为第一差异集合中的已添加节点或链路(566)。

确定基础图与目标图之间的第二差异集合(502)。为了确定第二差异集合,确定基础图中的每个节点或链路与目标图中的节点或链路之间的对应关系。将基础图中的、与目标图中的第二节点或链路相对应的每个第一节点或链路与相应的第二节点或链路进行比较,并识别出第一节点或链路与第二节点或链路之间的任何差异。如果第一节点或链路与第二节点或链路之间不存在差异,则不将第二节点或链路包括在第二差异集合中。如果第一节点或链路与第二节点或链路之间存在差异,则将第二节点或链路指定为第二差异集合中的已修改节点或链路。将基础图中的、不与目标图中的节点或链路相对应的节点或链路指定为第二差异集合中的已删除节点或链路。

评估第一差异集合中的特定差异,以确定该特定差异与第二差异集合中的差异之间的对应关系(504)。如果第二差异集合中不存在与第一差异集合中的特定差异相对应的差异(506),则将第一差异集合中的特定差异添加到组合差异的集合中(508),并将其指定为已处理。如果第二差异集合中存在与第一差异集合中的特定差异相对应的差异(510),则确定特定差异与第二差异集合中的相应差异的兼容性(512)。如果确定这些差异相兼容(514),则将第一差异集合中的特定差异添加到该组合差异的集合中(508),并将这两个差异均指定为已处理。如果确定这些差异不兼容(516),则例如根据预定义的规则或基于用户输入,确定差异中的每个差异的相对优先级(518)。将较高优先级的差异添加到该组合差异的集合中(520),并将这两个差异均指定为已处理。

审查第一差异集合,以确定是否已经处理了所有差异(522)。如果第一差异集合中仍然存在未处理的差异(524),则评估第一差异集合中的其他差异(504)。如果已经处理了第一差异集合中的所有差异(526),则将第二差异集合中的任何未处理的差异添加到该组合差异的集合中(528)。将该组合差异的集合应用于基础图,以生成更新的图(530)。

图6至图9是用于从源图和目标图生成更新的图的示例用户界面的屏幕截图。

具体参考图6,图形用户界面600示出了通过合并基础图与源图和目标图之间的差异而创建的更新的图的列表。图标可以指示每个更新的图的状态,例如,指示更新的图不存在兼容性问题(例如,如针对calculate_interest_daily(计算_利息_每日)图所示的)或具有一对或多对冲突的差异(例如,如针对apply_interest_monthly(应用_利息_每月)图所示的)。用户可以选择这些图中的一个图来查看关于该图的信息。例如,对于具有一对或多对冲突的差异的图,用户可以查看基础图与源图和目标图中一个或多个图之间的差异的图形表示。图7示出了差异的图形表示的示例。

参考图8,在一些示例中,可以以文本格式表示冲突。例如,在图8的示例中,源图包括“+400.00”值,并且目标图包括“+200.0”值。当冲突被表示为文本时,用户可以编辑文本,以保留所需内容(例如,针对给定冲突,删除与源图或目标图相对应的文本)。在一些示例中,所有差异均被包括在文本中,并且由标记来表示冲突的差异,诸如夹在“<<<<<<<<”与“>>>>>>>>>”标记之间,以使得用户能够轻松地定位所有冲突。

参考图9,在一些示例中,可以通过图形方式表示冲突。为了处理冲突,用户可以选择(例如,单击或点击)每个冲突,以访问冲突的文本表示。在一些示例中,可以通过图形表示直接处理冲突。

图10示出了用于基于基础图生成更新的图的一般过程。识别第一数据流图与第二数据流图和第三数据流图中的每个数据流图之间的差异(50)。第一数据流图包括基础图,第二数据流图包括源图,并且第三数据流图包括目标图。每个数据流图的规范定义了一个或多个节点以及连接节点的一个或多个链路。节点中的至少一个节点表示数据处理组件,该数据处理组件定义要执行的、用于处理提供给该数据处理组件的数据的操作。对差异的识别(50)包括将基础图的规范与源图的规范进行比较以识别基础图与源图之间的第一差异集合(52),例如,识别第一已删除节点、第一已删除流、第一已添加节点、第一已添加流、第一已修改节点或第一已修改流中的一者或多者。对差异的识别(50)还包括将基础图的规范与目标图的规范进行比较以识别基础图与目标图之间的第二差异集合(54),例如,识别第二已删除节点、第二已删除流、第二已添加节点、第二已添加流、第二已修改节点或第二已修改流中的一者或多者。

表征第一差异集合中的差异与第二差异集合中的差异之间的对应关系(56)。该表征包括识别以下各项中的一项或多项:(i)在第一差异集合中识别出的、与在第二差异集合中识别出的节点或链路相对应的节点或链路;(ii)在第一差异集合中识别出的、不与在第二差异集合中识别出的任何节点或链路相对应的节点或链路;或(iii)在第二差异集合中识别出的、不与在第一差异集合中识别出的任何节点或链路相对应的节点或链路。确定在第一差异集合中识别出的节点或链路与在第二差异集合中识别出的相应节点或链路之间的兼容性(58)。

基于以下各项确定组合差异的集合:所表征的对应关系、基础图与源图之间的第一差异集合、以及基础图与目标图之间的第二差异集合(60)。可以基于在第一差异集合中识别出的节点或链路与在第二差异集合中识别出的相应节点或链路之间的兼容性来确定组合差异的集合。包括在组合差异的集合中的可以是指示在第一差异集合中识别出的、不与在第二差异集合中识别出的任何节点或链路相对应的节点或链路的信息,或者可以是指示在第二差异集合中识别出的、不与在第一差异集合中识别出的任何节点或链路相对应的节点或链路的信息。

基于基础图以及组合差异的集合来生成更新的数据流图(62)。

在一些示例中,图的组件可以使用自身通过流互连的一组其他组件来实施。该组组件(通过其实施图的组件)被称为子图,并且是图的节点。这里所描述的方法可以用于合并包括子图的图之间的差异。

计划是涉及执行多个图的过程的视觉表示。在计划中,各个图是节点,并且通过指示计划的图之间的数据流的流来互连。

图11示出了用于开发数据流图的数据处理系统1000的示例,其中,可以使用这里所描述的技术。在一些实例中,数据处理系统1000还可以用于执行可执行数据流图。系统1000包括数据源1002,该数据源可包括一个或多个数据源诸如存储设备或到在线数据流的连接,数据源中的每一个可以以各种格式(例如,数据库表、电子表格文件、平面文本文件或大型计算机使用的本机格式)中的任一种存储或提供数据。数据可以是逻辑数据、分析数据或工业机器数据。执行环境或运行时环境1004包括预处理模块1006和执行模块1012。例如,在合适的操作系统(诸如UNIX操作系统版本)的控制下,执行环境1004可以被托管在一个或多个通用计算机上。例如,执行环境1004可以包括多节点并行计算环境,该多节点并行计算环境包括使用多个处理单元(诸如中央处理单元CPU)或处理器核的计算机系统的配置,这些处理单元或处理器核或是本地的(例如,多处理器系统,诸如对称多处理(SMP)计算机)、或是本地分布式的(例如,作为集群或大规模并行处理(MPP)系统耦接的多个处理器)、或是远程的或远程分布的(例如,经由局域网(LAN)和/或广域网(WAN)耦接的多个处理器)、或其任何组合。

提供数据源1002的存储设备对执行环境1004可以是本地的,例如,被存储在连接到托管执行环境1004的计算机的存储介质(例如,硬盘驱动器1008)上、或可远离执行环境1004,例如,被托管在远程系统(例如,大型计算机1010)上,该远程系统通过远程连接(例如,由云计算基础设施提供)与托管执行环境1004的计算机通信。

预处理模块1006从数据源1002读取数据并准备数据处理应用程序(例如,可执行数据流图)以供执行。例如,预处理模块1006可编译数据处理应用程序、将编译数据处理应用程序存储到执行环境1004可访问的数据存储系统1016和/或加载来自该数据存储系统的编译数据处理应用程序、以及执行其他任务以准备数据处理应用程序以供执行。

执行模块1012执行由预处理模块1006准备的数据处理应用程序,以处理数据集并生成由处理产生的输出数据1014。输出数据1014可以存储回数据源1002中或存储在执行环境1004可访问的数据存储系统1016中、或以其他方式使用。数据存储系统1016也可由可选的开发环境1018访问,其中开发者1020能够设计并编辑将由执行模块1012执行的数据处理应用程序。在一些具体实施中,开发环境1018是用于将应用程序开发为数据流图的系统,该数据流图包括通过顶点之间的有向链路(表示工作元素(即数据)的流)连接的顶点(表示数据处理组件或数据集)。例如,在名称为“为基于图的应用程序管理参数(ManagingParameters for Graph-Based Applications)”的美国专利公布号2007/0011668中更详细地描述了这种环境,该公布通过援引并入本文。在名称为“执行表示为图的计算(EXECUTINGCOMPUTATIONS EXPRESSED AS GRAPHS)”的美国专利5,966,072中描述了一种用于执行此类基于图的计算的系统,该专利的内容通过援引以其全文并入本文。根据该系统制成的数据流图提供了用于将信息输入和输出由图组件表示的各个过程、用于在过程之间移动信息、以及用于为过程限定运行顺序的方法。该系统包括从任何可用方法中选择过程间通信方法的算法(例如,根据图的链路的通信路径可使用TCP/IP或UNIX域套接字、或使用共享存储器以在过程之间传递数据)。

预处理模块1006可以从可体现数据源1002的各种类型的系统(包括不同形式的数据库系统)接收数据。数据可被组织为具有对应字段(也称为“属性”或“列”)的值(包括可能的空值)的记录。当首先从数据源读取数据时,预处理模块1006通常以关于此数据源中的记录的一些初始格式信息开始。在一些情况下,数据源的记录结构最初可能不是已知的,而是可在分析数据源或数据之后确定。关于记录的初始信息可包括例如表示不同值的位数、记录内的字段的顺序、以及由位表示的值的类型(例如,字符串、有符号/无符号整数)。

换言之,并且通常适用于本文所描述的可执行数据流图,可执行数据流图实施对从数据源1002的一个或多个输入数据集流过数据处理组件到达一个或多个输出数据集的数据执行的基于图的计算,其中,数据流图由数据存储1014中的数据结构指定,数据流图具有由数据结构指定并表示通过一个或多个链路连接的数据处理组件的多个节点,这些链路由数据结构指定并表示数据处理组件之间的数据流。执行环境或运行时环境1004耦接至数据存储1014并被托管在一个或多个计算机上,运行时环境1004包括预处理模块1006,该预处理模块被配置成读取指定数据流图的已存储数据结构并分配和配置计算资源(例如,进程、存储器、CPU等),以用于执行对由预处理模块1006指配给数据流图的数据处理组件的计算,运行时环境1004包括执行模块1012以调度和控制对数据处理组件的计算的执行。换言之,被托管在一个或多个计算机上的运行时环境或执行环境1004被配置成从数据源1002读取数据并使用以数据流图的形式表示的可执行计算机程序来处理该数据。

可以使用执行合适软件的计算系统来实施以上所描述的方法。例如,软件可包括一个或多个计算机程序中的在一个或多个编程的或可编程的计算系统(其可以具有各种架构,诸如分布式、客户端/服务器、或网格)上执行的程序,该计算系统各自包括至少一个处理器、至少一个数据存储系统(包括易失性和/或非易失性存储器和/或存储元件)、至少一个用户界面(用于使用至少一个输入设备或端口接收输入,并且用于使用至少一个输出设备或端口提供输出)。软件可包括较大程序的一个或多个模块,例如,提供与对图的设计、配置和执行有关的服务的模块。程序模块(例如,图的元素)可被实施为数据结构或符合存储在数据储存库中的数据模型的其他经组织的数据。

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

已经描述了本发明的多个实施例。然而,应当理解,前述描述旨在说明而非限制本发明的范围,本发明的范围由所附权利要求书的范围限定。因此,其他实施例也在所附权利要求书的范围内。例如,在不背离本发明的范围的情况下,可进行各种修改。另外,上述步骤中的一些可以是顺序独立的,并且因此可以以与所描述的顺序不同的顺序来执行。

相关技术
  • 更新可执行图的方法、系统和介质
  • 用于修改可执行图以实施与新任务图关联的工作负载的技术
技术分类

06120112331779