具体实施方式
现有技术是首先通过写脚本的方式,逐层地迭代找出所有中间过程数据,然后通过匹配任务和数据的关系再找出所有的中间任务节点,最后对找出的中间任务节点人工手动查看代码以确认中间任务节点是否正确,如果部分中间任务节点不存在输出数据的时候,还要人工一一查看确认。
也就是说,现有技术需要人工手动编写层层迭代查找的脚本,通过编写的脚本读取数据关系,寻找所有中间数据后,通过数据和任务之间的关系找出所有中间任务。这样,人工编写脚本的过程中有出错的可能性,同时,这样所找到的数据或这任务可能不全。
本说明书提供一种节点血缘关系确定方法、装置以及电子设备,利用所述数据节点和所述任务节点之间的对应关系对所述数据血缘关系和所述任务血缘关系进行融合,可以对任务血缘关系和数据血缘关系中的至少一个血缘关系进行调整,进而得到更精确的目标节点血缘关系,该方案利用融合的方式调整血缘关系,可以带来更高效的用户体验。
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
如图1所示,为本说明书的一个实施例提供的节点血缘关系确定方法的流程图。
步骤110:确定数据节点之间的数据血缘关系。
所述数据节点所对应的数据可以是业务场景的业务数据。例如,人口普查场景中的流动人口数据、老年人数据、残疾人数据、学龄儿童数据、社区人和房对应关系数据等等。
所述数据血缘关系是指数据之间由于产生、加工融合、流转流通和最终消亡等形成的路径。例如,数据A产生了数据B,数据B产生了数据C,以此类推会产生父子关系。具体可以是比如根据流动人口数据产生老年人数据、残疾人数据、学龄儿童数据等数据。
所述数据血缘关系的确定可以是直接获取已知数据血缘关系,可以是利用脚本代码解析所得等等,本说明书的实施例并不限定。
在本说明书的一个实施例中,所述数据被实施为表。例如,所述数据是指人口普查所对应的公安户籍人口表、流动人口表、老年人表、育龄妇女表、学龄儿童表、社区人房关系表等等。
对应地,确定数据节点之间的数据血缘关系,包括:
确定表节点之间的表血缘关系。
具体地,所述表血缘关系是指数据表之间由于产生、加工融合、流转流通和最终消亡等形成的路径。
步骤120:确定任务节点之间的任务血缘关系。
所述任务可以对所述数据的处理。具体地,所述任务节点所对应的任务可以是创建数据、删除数据、修改数据等等。例如创建流动人口数据、修改学龄儿童数据等等。
所述任务血缘关系是指各个所述任务节点之间的依赖关系。例如,任务B的实现需要依赖于任务A实现的结果等等。
所述任务血缘关系的确定可以是直接获取已知的所述任务血缘关系,也可以利用脚本代码解析获取等等,本说明书的实施例并不限制。
在本说明书的一个实施例中,当所述数据被实施为表,所述任务可以对所述表的处理。例如,所述任务可以生成新的表、修改表中的数据等等。
步骤130:利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,在具有对应关系的所述数据节点和任务节点中,执行所述任务节点对应的任务得到所述数据节点。
所述数据节点和所述任务节点之间的对应关系实质上就是预设的所述数据和所述任务之间的对应关系,可以直接从所述任务的开发记录中获取、也可以是解析任务获得,本说明书的实施例并不限定。
所述目标节点可以是指数据节点,也可以是指任务节点。具体目标节点所指内容与业务场景的需求有关。如果业务场景的需求是想得到更全的数据血缘关系,则目标节点是指数据目标节点。如果业务场景的需求是想得到更全的任务血缘关系,则目标节点是指任务目标节点。
所述目标节点血缘关系是指处理所述数据血缘关系和所述任务血缘关系所得到的新的血缘关系中各个目标节点之间的依赖关系。
在本说明书的一个实施例中,所述数据节点和所述任务节点之间的对应关系是指执行所述任务节点对应的任务得到所述数据节点。也就是说,在本实施例中,只有所述任务执行后可以得到所述数据,所述数据节点和所述任务节点之间才具有对应关系,而得不到所述数据的任务节点和所述数据节点之间不具有对应关系。
当然,本领域技术人员可以知道的是,所述数据节点和所述任务节点之间的对应关系可以根据业务场景有所不同,例如所述数据节点和所述任务节点之间的对应关系可以是指所述任务是对对应的所述数据修改、更新等等。
在本说明书的一个实施例中,当所述数据被实施为表时,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,包括:
利用所述表节点和所述任务节点之间的对应关系,对所述表血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系。
进一步,融合所述数据血缘关系和所述任务血缘关系可以是根据所述数据节点和所述任务节点之间的对应关系,包括但不限于将所述数据和对应的所述任务融合,以确定对应的目标节点;数据节点之间的关系和对应的任务节点之间的关系融合,以确定目标节点之间的关系等。
具体地,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,包括:
根据所述数据节点和所述任务节点之间的对应关系,利用所述数据血缘关系和所述任务血缘关系中的一个对另一个进行调整,得到目标节点血缘关系。
也就是说,本说明书的节点血缘关系确定方法可以利用所述数据血缘关系对所述任务血缘关系进行调整,从而达到补充或修正所述任务血缘关系中的中间任务节点及任务节点之间的依赖关系的目的,从而得到目标任务节点血缘关系。
反之,可以利用所述任务血缘关系对所述数据血缘关系进行调整,从而达到补充或修正所述数据血缘关系中的中间数据节点及数据节点之间的依赖关系的目的,从而得到目标数据节点血缘关系。
进一步,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,包括:
如果根据所述数据节点和所述任务节点之间的对应关系确定所述任务血缘关系中的所述任务节点与所述数据血缘关系中至少一个数据节点具有对应关系,则根据所述任务节点或所述至少一个数据节点确定对应的目标节点。
例如,在具体任务实现过程中经常会为了产出实效等原因排除一些依赖,这就使得很难通过解析等方法确定这些单一的任务与其他任务的血缘关系。这样,确定出的任务血缘关系经常不全面的,会缺失中间任务。
在本说明书的实施例中,可以根据所述数据节点和所述任务节点之间的对应关系,找到这些单一的任务节点所对应的所述数据节点,确定对应的目标节点,进而根据所对应的所述数据节点和其他数据节点的血缘关系,确定所确定的对应的目标节点和其他目标节点的血缘关系。
进一步,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,包括:
如果根据所述数据节点和所述任务节点之间的对应关系确定在所述任务血缘关系中缺失与所述数据血缘关系中的数据节点对应的任务节点,则根据缺失的任务节点所对应的数据节点确定目标节点;
根据所述缺失的任务节点所对应的数据节点和其他数据节点之间的血缘关系,确定对应的所述目标节点和其他目标节点之间的血缘关系。
或者,例如所述数据血缘关系是人工编写脚本解析得到的,而脚本存在错误或逻辑不完整而没有找到所有的中间数据。这样,确定出的数据血缘关系是不全面的,会缺失中间数据。
在本说明书的实施例中,可以根据所述数据节点和所述任务节点之间的对应关系,确定出遗漏的中间数据节点及其对应的任务节点,以确定对应的目标节点,进而根据所对应的任务节点和其他任务节点的血缘关系,确定所确定的对应的目标节点和其他目标节点的血缘关系。
进一步,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,包括:
如果根据所述数据节点和所述任务节点之间的对应关系确定所述数据血缘关系中缺失与所述任务血缘关系中的任务节点对应的数据节点,则根据缺失的数据节点所对应的任务节点确定目标节点;
根据所述缺失的数据节点所对应的任务节点和其他任务节点之间的血缘关系,确定对应的所述目标节点和其他目标节点之间的血缘关系。
在实际应用过程中,部分数据可能没有具有对应关系的所述任务。这可能是对应关系记录本身有缺陷,没有记录本应记录的对应关系。或者这也有可能是数据本身就不具有预设的对应关系的所述任务,比如数据和任务之间的关系是指执行任务对数据进行了修改,则没有被修改过的数据就缺失对应的任务。
在本实施例中,当融合过程确定出数据缺失具有对应关系的所述任务时,可以通过该数据的上游数据或下游数据等具有血缘关系的关系数据,分析这些关系数据所对应的任务是否和该数据具有对应关系。例如,对应关系是指数据被对应的任务创建,则当这些关系数据所对应的任务被执行后可以创建该数据,则可以认定具有对应关系,进而建立对应关系。这样,原本缺失对应关系的数据具有了对应关系,就可以继续根据对应关系确定目标节点。
或者基于怀疑所确定的数据血缘关系的正确性,可以进一步判断该数据与相邻数据节点之间是否实际上具有依赖关系。例如,解析相邻数据节点所对应的任务是否基于该数据得到相邻的数据,解析相邻数据节点所对应的任务或者是否能够得到该数据,判断实际上具有依赖关系。
具体地,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,包括:
当所述数据节点和所述任务节点之间的对应关系中不包括与所述数据血缘关系中的数据节点对应的任务节点,判断所述数据血缘关系中的数据节点与相邻数据节点之间是否具有依赖关系;
若否,则确定目标节点为空。
也就是说,如果业务场景的需求和目标是确定数据节点血缘关系,则当所述数据血缘关系中的数据节点与相邻数据节点之间不具有依赖关系时,就可以认定所确定的数据血缘关系出错,该数据节点不应被连接入当前所确定的血缘关系中,则目标节点为空。如果业务场景的需求和目标是确定任务节点血缘关系,则当所述数据血缘关系中的数据节点与相邻数据节点之间不具有依赖关系时,也就无需考虑该数据节点的影响。
同理,在实际应用过程中,部分任务可能没有具有对应关系的所述数据。这也可能是对应关系记录本身有缺陷,没有记录本应记录的对应关系。或者这也有可能是任务本身就不具有预设的对应关系的所述数据,比如数据和任务之间的关系是指执行任务创建了数据,则没有创建数据的任务就缺失对应的数据,这样就单独以所述任务构建对应的节点。
具体地,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,包括:
当所述数据节点和所述任务节点之间的对应关系中不包括与所述任务血缘关系中的任务节点对应的数据节点,判断所述任务节点所对应的任务执行后是否得到数据;
如果所述任务节点所对应的任务执行后没有得到数据,则根据所述任务节点确定对应的目标节点。
进一步,判断所述任务节点所对应的任务执行后是否得到数据之后,还可以包括:
如果执行所述任务节点所对应的任务得到数据,判断所得到的数据是否为所述数据血缘关系中已存在数据节点所对应的数据;
如果所得到的数据是所述数据血缘关系中已存在数据节点所对应的数据,则对所述已存在数据节点和所述任务节点建立对应关系;
根据所述已存在数据节点或对应的所述任务节点,确定对应的目标节点。
也就是说,如果执行所述任务能够得到数据,且所得到的数据是所述数据血缘关系中已存在数据节点所对应的数据,就有可能是对应关系记录本身有缺陷。本实施例这样,就可以对所述已存在数据和所述任务建立对应关系,继而根据所述已存在数据节点和对应的所述任务节点确定为对应的目标节点。
进一步,在判断所得到的数据是否为所述数据血缘关系中已存在数据节点所对应的数据之后,包括:
如果所得到的数据不是所述数据血缘关系中已存在数据节点所对应的数据,则构建所得到的数据为新数据节点;
对所述新数据节点和对应的所述任务节点建立对应关系;
根据所述新数据节点或对应的所述任务节点,确定对应的目标节点;
根据所述任务节点和其他任务节点的血缘关系,确定对应的所述目标节点和其他目标节点的血缘关系。
也就是说,如果执行任务得到数据,且所得到的数据不是所述数据血缘关系中已存在数据节点对应的数据,就有可能是对应关系记录本身有缺陷,同时之前确定的所述数据血缘关系也有缺陷。本实施例这样,根据任务的执行结果得到新数据之后,就可以建立对应关系,继而根据所述新数据节点或对应的所述任务节点确定对应的目标节点。这不仅弥补了对应关系缺陷,也弥补了所述数据血缘关系的不足。
在本说明书的一个实施例中,在融合所述数据血缘关系和所述任务血缘关系时,可以按照从起始数据节点到终止数据节点依次或反向依次地融合,或者可以按照从起始任务节点到终止任务节点依次或反向依次地融合。
对应地,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,包括如下一种:
按照所述数据血缘关系中所述数据节点之间的依赖关系和所述任务血缘关系中所述任务节点之间的依赖关系,从起始数据节点到终止数据节点依次或反向依次地融合;
按照所述数据血缘关系中所述数据节点之间的依赖关系和所述任务血缘关系中所述任务节点之间的依赖关系,从起始任务节点到终止任务节点依次或反向依次地融合。
具体地,所述目标节点血缘关系确定之后,可以图搜索算法筛选出符合预设条件的目标节点血缘关系。例如筛选出从起始表A到终止表M的表血缘关系,或者筛选出从代号为139073的起始任务到代号为139085的终止任务的任务血缘关系。
对应地,所述的节点血缘关系确定方法,包括:
根据所述预设条件,利用图搜索算法遍历所述目标节点血缘关系;
确定符合所述预设条件的目标节点血缘关系。
进一步,为了方便检查和查看结果,可以对所述数据血缘关系、所述任务血缘关系或所述目标节点血缘关系进行可视化处理。
对应地,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,包括:
根据所述数据血缘关系确定对应的数据血缘关系图;
根据所述任务血缘关系确定对应的任务血缘关系图;
利用所述数据节点和所述任务节点之间的对应关系,将所述数据血缘关系图和所述任务血缘关系进行融合图进行融合,得到目标节点血缘关系图。
如图2所示,为本说明书的一个实施例的节点血缘关系确定方法的流程图。在本实施例中,所述数据被实施为表,所述任务是对所述表的处理,所述目标节点根据目标需求有可能是表或任务。
步骤210:确定表节点之间的表血缘关系。
步骤220:确定任务节点之间的任务血缘关系。
步骤230:利用所述表节点和所述任务节点之间的对应关系,对所述表血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,在具有对应关系的所述表节点和任务节点中,执行所述任务节点对应的任务得到所述表节点。
具体地,对所述表血缘关系和所述任务血缘关系的处理可以参考前述,此处不再赘述。
为了方便理解,本说明书以具体实施例对所述节点血缘关系确定方法进行解释和阐述,如图3至图8所示。图3为本说明书的一个具体实施例的所述节点血缘关系确定方法流程图。图4至图8为图3所示节点血缘关系确定方法中各个血缘关系的可视化示意图。
在本具体实施例中,所述数据被实施为表,已知起始表为表A,终止表为表M,起始任务为代号为139078的任务,终止任务为代号为139085的任务。
步骤310:确定从起始表A到终止表B的表血缘关系。
如前文所示,所述表血缘关系可以通过脚本代码初步解析得到等等,本说明书并不限制。
如图4所示,为本实施例中图3所示节点血缘关系确定方法中所确定的所述表血缘关系示例。图4所显示的是所述表血缘关系可视化的结果,在实际应用中,本领域的技术人员可以选择不进行可视化处理。
在该表血缘关系中,表A到表M有多条依赖关系,表血缘关系复杂。例如,表B依赖于表A,表E依赖于表B,表F依赖于表E,表M依赖于表F,等等其他依赖路径。
步骤320:确定从起始任务到终止任务的任务血缘关系。
如前文所示,所述任务血缘关系可以通过脚本代码初步解析得到等等,本说明书并不限制。
如图5所示,为本实施例中图3所示节点血缘关系确定方法中所确定的所述任务血缘关系示例。图5所显示的是所述任务血缘关系可视化的结果,在实际应用中,本领域的技术人员可以选择不进行可视化处理。
另外,图中所显示的是任务的标识ID号,通过标识代号对应相应的任务。具体在该任务血缘关系中,从起始任务到终止任务的路径有很多条,血缘关系复杂。例如,任务139079依赖于任务139078,任务139082依赖于任务139079,任务139087依赖于任务139082,任务139085依赖于任务139087。
步骤330:利用所述表节点和所述任务节点之间的对应关系,对所述表血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系。
在本实施例中,所述表和所述任务之间的对应关系是指所述表是执行所述任务得到的。如图6所示,为本实施例中图3所示节点血缘关系确定方法中所述表和所述任务之间的对应关系的示例。例如,表A和任务139078具有对应关系,即任务139078执行后可以得到表A;表E、表F、和表G均和任务139082具有对应关系,即任务139082执行后可以得到表E、表F、和表G;任务139087缺失对应的表,即任务139087执行后并不得到表。
具体地,对所述表血缘关系和所述任务血缘关系的融合包括:将所述数据和对应的所述任务融合,以确定对应的目标节点;数据之间的关系和对应的任务之间的关系融合,以确定目标节点之间的关系等等。
例如,表A和任务139078具有一一对应关系,表B和任务139079也具有一一对应关系。对应地,则可以将表A和任务139078融合来确定对应的目标节点,将表B和任务139079也融合来确定对应的目标节点。同时,表A和表B的表血缘关系与任务139078和任务139079的任务血缘关系也可以对应地融合。
类似地,表C和任务139080具有一一对应关系。对应地,表C和任务139080被融合来确定对应的节点。同时,表A和表C的表血缘关系与任务139078和任务139080的任务血缘关系也可以对应地融合。
同理,其他类似的表和任务一一对应关系的也可以如此进行处理,此处不再赘述。
进一步,当多个表和同一任务具有对应关系时,例如表E、表F、和表G均和任务139082具有对应关系,可以将这些表和所述任务融合来确定对应的目标节点。具体地,将表E、表F、表G和任务139082融合来确定对应的目标节点。此外,表E、表F、和表G的表血缘关系也可以被融合来确定对应的目标节点。
此外,这样所确定的对应的目标节点和其他目标节点的血缘关系可以通过所确定的对应的目标节点中的任务和其他任务的血缘关系或通过所确定的对应的目标节点中的起始表和终止表的血缘关系来确定。
例如,任务139082和任务139087具有血缘关系,则所确定的对应的目标节点(例如任务目标节点)可以和通过任务139087所确定的目标节点(例如任务目标节点)具有对应的血缘关系。或者,表E和表B具有血缘关系,则所确定的对应的目标节点(例如数据目标节点)可以和表B所确定的节点(例如数据目标节点)具有对应的血缘关系。
进一步,根据所述数据和所述任务之间的对应关系,利用所述数据血缘关系和所述任务血缘关系中的一个对另一个进行调整,得到节点及对应的血缘节点关系。
例如,根据如图6所示的对应关系,确定出所述任务血缘关系中缺失的任务139089。任务139089与表H具有对应关系,则可以根据表H或任务139089先确定为对应的目标节点。这样,根据表H与其他表的血缘关系,可以确定所确定的对应的目标节点和其他目标节点的血缘关系。例如,表H和表D具有血缘关系,即表H依赖于表D,对应地,表H所确定的对应的目标节点(例如任务目标节点)依赖于表D所确定的对应的目标节点;表I依赖于表H,对应地表I所确定的对应的目标节点依赖于表H所确定的对应的目标节点。
具体地,利用所述表H的血缘关系,可以构建任务139089的血缘关系,进而对所述任务血缘关系进行调整。表H依赖于表D,表D和任务139081具有对应关系,则对应地,任务139089依赖于任务139081;表I依赖于表H,表I和任务139083具有对应关系,则对应地,任务139083依赖于任务139089。这样,所述任务血缘关系调整之后,可以对应地得到目标节点和对应的目标节点关系。
如图7所示,为本实施例中融合表血缘关系和任务血缘关系过程的示意图。图7所显示的是融合过程的可视化的结果,在实际应用中,本领域的技术人员可以选择不进行可视化处理
在本实施例的实现是基于充分信任所得对应关系。根据本实施例的对应关系,任务139088和任务139087缺失具有对应关系的表,可能是这两个任务没有得到表;表J缺失具有对应关系的任务,可能是由于根据业务场景废除表J的路径,无需考虑了。
当然,本领域技术人员也可以不信任所得对应关系,当发现任一表或任务缺失对应关系时,通过解析任务等方式进一步操作,本说明书并不限定。
步骤340:利用广度优先算法遍历所述目标节点血缘关系。
步骤350:记录从起始任务到终止任务的关系路径,得到从起始任务到终止任务的目标节点血缘关系。
利用广度优先算法从一层一层的,向下遍历,层层堵截,记录遍历得到的能够从起始任务到终止任务的关系路径,进而得到从起始任务到终止任务的节点血缘关系,如图8所示。
当然,本领域技术人员也可以用其他的图搜索算法来实现遍历搜索,例如深度优先算法等。
对比图8和图5,可以看出的是,通过本说明书的目标节点血缘关系确定方法所得到的节点血缘关系相比于初始阶段确定的任务血缘关系更全面,不仅补充了原先遗漏的任务节点,也补充了所遗漏的任务节点的血缘关系。
此外,根据业务场景需求设定的预设条件,在遍历所述目标节点血缘关系的过程中可以排除不必要的节点。比如,在本实施例中,表L和任务139086也具有对应关系并且两者融合成功,但是由于本实施例中目标是得到从起始任务到终止任务的节点血缘关系,而表L和任务139086融合所得到的节点不符合从起始任务到终止任务要求被排除。
当然,如果业务场景需求设定的预设条件是从表L到表M的路径,则遍历所述目标节点血缘关系时,会记录从表L到表M的路径,排除表A及表A对应任务。
根据本说明书的另一个方面,如图9所示,本说明书的实施例提供一种节点血缘关系确定装置,包括:
第一确定模块10,确定数据节点之间的数据血缘关系;
第二确定模块20,确定任务节点之间的任务血缘关系;
融合模块30,利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,在具有对应关系的所述数据节点和任务节点中,执行所述任务节点对应的任务得到所述数据节点。
所述数据节点对应的所述数据可以是业务场景的业务数据。例如,人口普查场景中的流动人口数据、老年人数据、残疾人数据、学龄儿童数据、社区人和房对应关系数据等等。
所述数据血缘关系是指数据之间由于产生、加工融合、流转流通和最终消亡等形成的路径。例如,数据A产生了数据B,数据B产生了数据C,以此类推会产生父子关系。具体可以是指根据流动人口数据产生老年人数据、残疾人数据、学龄儿童数据等数据。
所述任务节点对应的所述任务可以对所述数据的处理。具体地,所述任务可以是创建数据、删除数据、修改数据等等。例如创建流动人口数据、修改学龄儿童数据等等。
所述任务血缘关系是指各个所述任务之间的依赖关系。例如,任务B的实现需要依赖于任务A所实现的结果等等。
第一确定模块10确定所述数据血缘关系可以是直接获取已知血缘关系,可以是利用脚本代码解析所得等等,本说明书的实施例并不限定。
同理,第二确定模块20确定所述任务血缘关系可以是直接获取已知血缘关系,可以是利用脚本代码解析所得等等,本说明书的实施例并不限定。
所述数据节点和所述任务节点之间的对应关系可以直接从开发所述任务的记录中获取、也可以是解析任务获得,本说明书的实施例并不限定。
所述目标节点可以是指数据、可以是指任务。具体目标节点所指内容与业务场景目标有关。
所述目标节点血缘关系是指处理所述数据血缘关系和所述任务血缘关系所得到的新的血缘关系中各个节点之间的依赖关系。
所述融合模块30融合所述数据血缘关系和所述任务血缘关系,具体地,所述融合模块30可以是根据所述数据和所述任务之间的对应关系,调整所述数据血缘关系和所述任务血缘关系,包括将所述数据和对应的所述任务融合,以确定对应的目标节点;数据节点之间的关系和对应的任务节点之间的关系融合,以确定目标节点之间的关系等。
图10为图9所示的一种节点血缘关系确定装置中的融合模块的结构示意图。
具体地,所述融合模块30包括对应关系获取模块31。所述对应关系获取模块31用于获取所述数据和所述任务之间的对应关系。在本说明书的一个实施例中,所述对应关系获取模块31获取所述数据和所述任务之间的对应关系是所述数据由对应的所述任务创建的。对应关系的获取可以是所述应关系获取模块31获取的开发记录。
所述融合模块30包括确定模块32。所述确定模块32用于根据所述数据和所述任务之间的对应关系,确定对应的目标节点以及目标节点之间的关系,得到所述目标节点血缘关系。
具体地,所述确定模块32根据所述数据节点和所述任务节点之间的对应关系,利用所述数据血缘关系和所述任务血缘关系中的一个对另一个进行调整,得到目标节点及对应的目标节点关系。
例如,在具体任务实现过程中经常会为了产出实效等原因排除一些依赖,这就使得很难通过解析等方法确定这些单一的任务与其他任务的血缘关系。这样,确定出的任务血缘关系经常不全面的,会缺失中间任务。
对应地,所述确定模块32根据所述数据节点和所述任务节点之间的对应关系,找到这些单一的任务节点所对应的所述数据节点,确定对应的目标节点,进而根据所对应的所述数据节点和其他数据节点的血缘关系,确定对应的目标节点和其他目标节点的血缘关系。
具体地,所述确定模块32可以根据所述数据节点和所述任务节点之间的对应关系,确定所述任务血缘关系中缺失的任务节点。所述确定模块32还可以根据所述数据节点和所述任务节点之间的对应关系,确定所缺失的任务节点对应的所述数据节点。这样,所述确定模块32将所述缺失的任务节点及其对应的所述数据节点确定对应的目标节点之后,所述确定模块32可以根据所对应的所述数据节点和其他数据节点的数据血缘关系,确定对应的目标节点和其他目标节点的血缘关系。
当两个或多个数据节点与相同的任务节点具有对应关系时,所述确定模块32根据所述两个或多个数据节点、所述两个或多个数据节点之间的血缘关系和对应的所述任务确定对应的目标节点。
例如前文举例中,所述表E、表F、和表G均和任务139082具有对应关系,可以根据这些表和所述任务确定对应的目标节点。具体地,将表E、表F、表G和任务139082对应地融合。此外,表E、表F、和表G的表血缘关系也可以被对应地融合。目标节点是数据时,可以确定目标节点表E、表F、和表G以及他们的表血缘关系;目标节点是任务时,可以确定目标节点任务139082。
进一步,当数据节点缺失具有对应关系的所述任务节点时,所述确定模块32可以所述数据血缘关系确定与该数据节点具有血缘关系的关系数据节点。然后,所述确定模块32可以解析所述关系数据节点对应的所述任务节点执行后是否得到该数据节点。如果所述关系数据节点对应的所述任务节点执行后得到该数据节点,所述确定模块32对该数据节点和所述关系数据节点对应的所述任务节点建立对应关系,并将两者对应地融合以确定对应的目标节点。此外,所述确定模块32可以将该数据节点和其对应的任务节点之间的对应关系反馈至所述对应关系获取模块31,所述对应关系获取模块31更新存储的对应关系。
进一步,当任务节点缺失具有对应关系的所述数据节点时,所述确定模块32可以解析所述任务节点执行后是否得到数据节点。如果所述任务执行后没有得到数据节点,则所述确定模块32可以单独以所述任务确定对应的任务目标节点。
如果所述任务节点执行后得到数据节点,所述确定模块32可以判断所得到的数据节点是否为所述数据血缘关系中已存在数据节点。如果所得到的数据节点是所述数据血缘关系中已存在数据节点,所述确定模块32可以对所述已存数据节点和所述任务节点建立对应关系,并根据所述已存数据节点和对应的所述任务节点确定对应的目标节点。此外,所述确定模块32可以将该任务节点和其对应的已存在数据节点之间的对应关系反馈至所述对应关系获取模块31,所述对应关系获取模块31更新存储的对应关系。
如果所得到的数据节点不是所述数据血缘关系中已存在数据节点,所述确定模块32可以构建所得到的数据节点为新数据节点,并对所述新数据节点和对应的所述任务建立对应关系。然后,所述确定模块32将所述新数据节点和对应的所述任务节点确定为对应的目标节点。最后,所述确定模块32可以根据所述任务节点和其他任务节点的血缘关系,确定对应的所述目标节点和其他目标节点的血缘关系。
所述确定模块32采用上述的方法或其他方法一一构建每个节点和节点之间的关系,即可得到所述目标节点血缘关系。
在本说明书的一个实施例中,所述数据被实施为表。
对应地,所述节点血缘关系确定装置,包括:
第一确定单元10A,确定表节点之间的表血缘关系;
第二确定单元20A,确定任务节点之间的任务血缘关系;
融合单元30A,利用所述表节点和所述任务节点之间的对应关系,对所述表血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,在具有对应关系的所述表节点和任务节点中,执行所述任务节点对应的任务得到所述表节点。
根据本说明书的另一个方面,本说明书还提供所述电子设备,包括至少一个处理器及存储器,存储器存储有程序,并且被配置成由至少一个处理器执行以下步骤:
确定数据节点之间的数据血缘关系;
确定任务节点之间的任务血缘关系;
利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,在具有对应关系的所述数据节点和任务节点中,执行所述任务节点对应的任务得到所述数据节点。
基于同一发明构思,本说明书实施例还提供一种计算机可读存储介质,包括与电子设备结合使用的程序,程序可被处理器执行以完成以下步骤:
确定数据节点之间的数据血缘关系;
确定任务节点之间的任务血缘关系;
利用所述数据节点和所述任务节点之间的对应关系,对所述数据血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,在具有对应关系的所述数据节点和任务节点中,执行所述任务节点对应的任务得到所述数据节点。
根据本说明书的另一个方面,本说明书还提供所述电子设备,包括至少一个处理器及存储器,存储器存储有程序,并且被配置成由至少一个处理器执行以下步骤:
确定表节点之间的表血缘关系;
确定任务节点之间的任务血缘关系;
根据所述表节点和所述任务节点之间的对应关系,对所述表血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,在具有对应关系的所述表节点和任务节点中,执行所述任务节点对应的任务得到所述表节点。
基于同一发明构思,本说明书实施例还提供一种计算机可读存储介质,包括与电子设备结合使用的程序,程序可被处理器执行以完成以下步骤:
确定表节点之间的表血缘关系;
确定任务节点之间的任务血缘关系;
根据所述表节点和所述任务节点之间的对应关系,对所述表血缘关系和所述任务血缘关系进行融合,得到目标节点血缘关系,在具有对应关系的所述表节点和任务节点中,执行所述任务节点对应的任务得到所述表节点。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。