一种基于多状态科学工作流的数据世系追溯系统和方法

文档序号:6535357阅读:141来源:国知局
一种基于多状态科学工作流的数据世系追溯系统和方法
【专利摘要】一种基于多状态科学工作流的数据世系追溯系统和方法,以基于有向图的科学工作流过程模型为基础,对其进行扩展,得到一个扩展的科学工作流过程模型。再利用数据世系技术丰富其数据模型部分,从过程和数据两个角度全方位地描述科学工作流的执行过程,得到基于多状态的科学工作流过程数据统一管理模型,并以此对数据世系进行描述和追溯。本发明可以更好地描述大规模复杂科学计算和协同研发流程中数据的演化和状态,从而增强对流程过程的监控能力,实现流程全方位的管理策略,提高科研效率,并促进科学发展和技术进步。
【专利说明】一种基于多状态科学工作流的数据世系追溯系统和方法
【技术领域】
[0001]本发明提供了一种基于多状态科学工作流的数据世系追溯系统和方法,具体涉及一种多任务状态下科学工作流程实例中,各流程节点之间的数据世系关系追溯方法以及数据世系关系的存储方式。
【背景技术】
[0002]在大规模、复杂系统设计制造过程和科学实验中,比如航天器设计、轮船制造等,通常需要众多人员协同完成大量的、相互依赖关联的等量级任务。在这一过程中,显著的特点就是设计过程和实施过程中涉及到大量任务和海量数据,工作流程高度复杂。
[0003]对于复杂工作流程的管理,在过程方面,由于复杂型号产品的设计过程中通常包括大量的活动节点和参数,同时又要能够支持多部门多学科的协同设计和优化,这就要求过程管理应关注于各活动节点之间的数据传递,以及节点参数之间的映射,所以,过程管理需要能够控制复杂性,兼顾控制流和数据流,支持流程优化。
[0004]为了解决复杂工作流程的过程管理问题,研究人员将工作流技术被引入到科学研究领域,提出了科学工作流(Scientific Workflow, SWF)的概念和模型。工作流可以将工作分解成定义良好的任务和角色,按照预先定义好的规则和过程来执行,同时对各项任务进行协调和监控。科学工作流继承了工作流的优点,通过对任务间数据依赖关系的分析,提供了优化组合的方法,控制各部分在一定约束条件下按序完成,可以有效地控制和管理各活动节点之间的数据流动,推进工作流程向下进行。对于科学研究和复杂系统设计过程中各节点可能出现的迭代研发操作,在科学工作流基础上增加了节点的状态管理,以支持工作流程中的执行、重做等操作。
[0005]在数据管理方面,随着系统复杂度的提高,所涉及的数据越来越多,只关注集成后的结果数据无法保证数据的正确性和一致性,所以分析数据的产生和演化的过程对于评估数据质量、保证数据的正确性和安全性有很大的作用。基于此,在计算机领域中,数据世系概念被提出并成为研究热点,其重要性已经被多个科学工作流项目所认可,如GridDB,Chimera, myGRID, CMCS 等。
[0006]在工作流程中,各活动节点能够在前置节点完成、输入数据满足的情况下启动执行,执行结束后将得到的数据进行合理存储,并驱动后续节点的执行;支持任务重做功能,当一个活动节点重新执行后,其后续节点都应该获得消息,提示变更;要求能对各活动节点历次执行的数据进行有效的版本管理,可以根据活动节点的某个数据版本,追溯该版本数据是由之前各前置节点的哪个版本数据所计算得到的,并绘制成世系图。
[0007]但是这些系统之间对数据世系的表示和查询都是不同的。例如,Kepler提供了世系记录器来实时记录所创建的工作流实例的信息,这些信息包括了工作流上下文,数据历史,工作流的定义和演化。Taverna则通过使用Semantic网技术构建了四个层次,用来逐层表示世系数据:流程层,数据层,组织层和知识层。同样的RDFProv系统也使用了 Semantic网技术,继承其可互操作性,扩展性等优点,提供了存储和查询关系数据库管理系统的能力。Chimera使用一种虚拟化数据目录(VDC)的技术,由一组将可执行任务映射到变换,将任务调用映射到数据变换,将输入/输出映射到数据对象的关系组成。VisTrails则是第一个除了支持数据演化历史,也支持工作流演化世系追踪的科学工作流管理系统。

【发明内容】

[0008]针对当前基于科学工作流的复杂系统设计仿真过程和科学研究实验中,缺乏一个统一的支持多状态科学工作流的数据世系描述和追溯方法问题,本发明提供了一种基于多状态科学工作流的数据世系追溯方法,给出了科学工作流过程执行中数据世系的组织机制和挖掘方法。
[0009]本发明的原理是:以基于有向图的科学工作流过程模型为基础,对其进行扩展,得到一个扩展的科学工作流过程模型。再利用数据世系技术丰富其数据模型部分,从过程和数据两个角度全方位地描述科学工作流的执行过程,得到基于多状态的科学工作流过程数据统一管理模型,并以此对数据世系进行描述和追溯。
[0010]本发明提供的技术方案如下:
[0011]一种基于多状态科学工作流的数据世系追溯系统,其特征是,包括:系统服务端、用户端、关系数据库、数据操作单元、逻辑计算单元;其中,
[0012]所述的系统服务端,为一台或多台位于云端或局域网环境的计算机,用以接受工作流用户的工作流执行请求以及对请求作出反应;
[0013]所述的用户端,为位于本地的计算机终端,是工作流用户执行工作流过程的输入设备;
[0014]所述的关系数据库,用以保存工作流活动节点信息、逻辑节点信息、数据的依赖关系以及条件约束集等;所述的关系数据库安装在系统服务端;
[0015]所述的数据操作单元,和所述的关系数据库进行交互,包括:查询数据、增加数据、修改数据、删除数据;
[0016]所述的逻辑计算单元,根据工作流用户的当前工作状态进行逻辑计算,通过数据操作单元和关系数据库进行交互,并把计算结果通过用户端展现给工作流用户;
[0017]在工作流用户第一次执行某个任务节点时:所述的逻辑计算单元,首先,检查关系数据库中是否已经存在以这个任务为后置逻辑节点的表项,如果存在,则更新该表项的当前任务版本;然后,检查关系数据库中是否存在以这个任务为前置逻辑节点的表项,如果存在,则更新该表项的当前任务版本;如果上述两项均不存在,则在关系数据库中新增加一项,以当前任务、当前任务后置逻辑节点以及当前任务版本号创建,后置逻辑节点版本号由后置逻辑节点执行时填写;
[0018]在工作流用户重做某个任务节点时:所述的逻辑计算单元,首先检查关系数据库中是否已经存在以这个任务为后置逻辑节点的表项,如果有,则新增一项,保存已存在的前置任务版本和当前重做的任务版本之间的关系;然后,检查关系数据库中是否存在以这个任务为前置节点的表项,如果有,并且后置节点还没有进行,则直接改变该项的前置任务版本号为当前任务节点版本号;如果上述两项均不存在,则新增加一项,以当前任务、当前任务后置逻辑节点以及当前任务版本号创建,其后置逻辑节点版本号由后置逻辑节点执行时填写。[0019]所述的数据世系追溯系统,其特征是,所述的数据操作单元和逻辑计算单元位于系统服务端,所述的数据世系追溯系统为一个瘦客户端系统,用户端的用户接口为浏览器或者用户自定义系统。
[0020]所述的数据世系追溯系统,其特征是,所述的数据操作单元和逻辑计算单元位于客户端,所述的数据世系追溯系统为一个胖客户端系统,用户端的用户接口为用户自定义系统。
[0021]所述的数据世系追溯系统,其特征是,工作流用户查询数据世系关系时,直接在关系数据库中查询当前任务和当前版本号所在表项。
[0022]本发明同时提供一种基于多状态科学工作流的数据世系追溯方法,其特征是,包括:
[0023]构建关系数据库,用以保存工作流节点的活动节点信息、逻辑节点信息、数据的依赖关系以及条件约束集等;所述的关系数据库位于服务器端;
[0024]在工作流用户第一次执行某个任务节点时:首先,检查关系数据库中是否已经存在以这个任务为后置逻辑节点的表项,如果存在,则更新该表项的当前任务版本;然后,检查关系数据库中是否存在以这个任务为前置逻辑节点的表项,如果存在,则更新该表项的当前任务版本;如果上述两项均不存在,则在关系数据库中新增加一项,以当前任务、当前任务后置逻辑节点以及当前任务版本号创建,后置逻辑节点版本号由后置逻辑节点执行时填与;
[0025]在工作流用户重做某个任务节点时:首先检查关系数据库中是否已经存在以这个任务为后置逻辑节点的表项,如果有,则新增一项,保存已存在的前置任务版本和当前重做的任务版本之间的关系;然后,检查关系数据库中是否存在以这个任务为前置节点的表项,如果有,并且后置节点还没有进行,则直接改变该项的前置任务版本号为当前任务节点版本号;如果上述两项均不存在,则新增加一项,以当前任务、当前任务后置逻辑节点以及当前任务版本号创建,其后置逻辑节点版本号由后置逻辑节点执行时填写。
[0026]所述的数据世系追溯方法,其特征是,工作流用户查询数据世系关系时,直接在关系数据库中查询当前任务和当前版本号所在表项。
[0027]所述的数据世系追溯方法,其特征是,各工作流数据绑定在工作流节点上,得到的数据世系关系根据工作流节点之间关系的配置与管理自动更新。
[0028]所述的数据世系追溯方法,其特征是,所述关系数据库中,每项工作流节点数据的存储结构中应至少存储以下节点信息:当前节点引用〈CurrentNode〉,当前节点数据版本号〈CurrentNodeVersion〉,当前节点的后续节点引用〈NextNode〉,当前节点的后续节点数据版本号〈NextNodeVersion〉。
[0029]所述的数据世系追溯方法,其特征是,科学工作流节点之间数据世系关系的建立与更新方法如下:
[0030]数据世系关系建立与更新方法的输入包括已建立好的科学工作流模型和科学工作流中某个刚执行完毕的节点,对于该节点,将其视作科学工作流中的一般性节点,由科学工作流模型可以获得该节点的前置、后续节点信息,以及该节点的状态是首次执行还是重做,为表述方便,做出以下假设:
[0031].Node为工作流中的一个节点;[0032].Node 的前置节点共有 m 个,分别为 PNode1, pNode2,...,pNodem ;
[0033].Node 的后续节点共有 η 个,分别为 IiNode1, nNode2,..., nNoden ;
[0034]当节点Node执行完成、产生新数据后:
[0035]I)判断节点Node是否为首次执行,如果是首次执行,则执行步骤2);否则节点Node为重新执行,则执行步骤3);
[0036]2) Node节点为首次执行,执行以下子步骤:
[0037]2.1)检查是否存在这样的数据记录:〈NextNode>为Node的引用,<NextNodeVersion>为O ;如果存在这样的数据记录,则将该数据记录的〈NextNodeVersion〉更新为节点Node的数据版本号;如果不存在这样的数据记录,执行步骤 2.2);
[0038]2.2)为Node的第I个后续节点Node1在存储结构中增加一项数据记录,其中的<CurrentNode>存储节点Node的引用,<CurrentNodeVersion)存储节点Node的数据版本号,〈NextNode〉存储 Node1 的引用,〈NextNodeVersion〉为 O ;
[0039]2.3)重复执行步骤2.2),直至为Node的所有后续节点都在存储结构中建立了对应的数据记录;
[0040]2.4)方法结束;
[0041]3)Node节点为重新执行,假设Node原来的最新数据版本号为OldVersion,重新执行后得到的新数据版本号为NewVersion,本方法将执行以下子步骤:
[0042]3.1)在存储结构中检查是否存在这样的数据记录:〈NextNode>为Node的引用,〈NextNodeVersion〉为O ;如果存在这样的数据记录,表明该节点是由于其前置节点重做而导致的重做,则将该数据记录的〈NextNodeVersion〉更新为节点Node的新数据版本号NewVersion值,继续执行方法步骤3.3);如果不存在这样的数据记录,则执行方法步骤3.2);
[0043]3.2)在存储结构中检查是否存在这样的数据记录:〈NextNode>为Node的引用,〈NextNodeVersion〉为Node原来的数据版本号为OldVersion ;如果存在这样的数据记录,表明该节点是主动发起的重新执行,则复制该数据记录,并将复制得到的数据记录的〈NextNodeVersion〉更新为节点Node的新数据版本号NewVersion值,继续执行方法步骤
3.3 ;如果不存在这样的数据记录,则算法结束;
[0044]3.3)在存储结构中检查是否存在这样的数据记录:〈CurrentNode>为Node的引用,<CurrentNodeVersion> 为 Node 原来的数据版本号为 OldVersion,〈NextNodeVersion〉为O ;如果存在这样的数据记录,则将该数据记录的〈NextNodeVersion〉更新为End值,这样就避免了 Node的后继节点还使用旧的数据进行计算;如果不存在这样的数据记录,则跳过该步骤,继续执行步骤3.4);
[0045]3.4)为Node的第I个后续节点Node1在存储结构中增加一项数据记录,其中的<CurrentNode>存储节点Node的引用,<CurrentNodeVersion>存储节点Node的新数据版本号NewVersion,〈NextNode〉存储Node的第I个后续节点Node1的引用,〈NextNodeVersion〉为 O ;
[0046]3.5)重复执行步骤3.4),直至为Node的所有后续节点都在存储结构中建立了对应的数据记录;[0047]3.6)方法结束;
[0048]至此,数据世系关系建立与更新方法执行完毕,通过对科学工作流模型中的每个节点进行上述方法进行操作,即可为整个科学工作流模型建立数据世系关系模型。
[0049]所述的数据世系追溯方法,其特征是,科学工作流节点的数据世系追溯方法,基于之前建立的数据世系关系模型,可以基于科学工作流中任一节点的任一版本数据,向前追溯该节点的该版本数据是由前置节点的哪个版本数据推衍而来,向后查询该节点的该版本数据推衍出了哪些后置节点的数据版本;分为向前追溯和向后推衍两个子过程; [0050]数据世系追溯方法的输入应包括已建立好的科学工作流模型,以及作为追溯操作基点的科学工作流中某个节点和该节点的某个数据版本;假设输入的节点为Node并且该节点的版本号为Version,两者组成一个二元组(Node, Version),为处理方便建立一个队列数据结构Q存储该二元组,则数据世系追溯方法的执行过程如下:
[0051]?向前追溯过程:
[0052]I)对于节点Node和其版本号Version所组成的一个二元组(Node, Version),首先将其加入待处理队列Q ;
[0053]2)通过已建立好的科学工作流模型找到Node节点的所有前置节点,记为PNode1,PNode2,...,PNodem;如果不存在任何前置节点,则跳转到步骤5);
[0054]3)在建立好的世系数据结构中查找如下数据记录:〈CurrentNode〉值为对pNodei的引用,〈NextNode〉值为对Node的引用,〈NextNodeVersion〉值为Version ;如果存在这样的数据,则记录下〈CurrentNodeVersion〉的值,假设为pVersion,这表明Node节点的Version版本数据是根据其前置节点PNode1的pVersion版本数据计算出来的,如果待处理队列Q中没有二元组(PNode1,pVersion),则将其加入Q ;如果不存在这样的数据,继续执行步骤4);
[0055]4)重复步骤3),查询Node的Version版本数据所对应的前置节点pNode2,...,pNodem的版本号,加入待处理队列Q ;
[0056]5)从队列 Q 中删除(Node, Version);
[0057]6)从队列Q中顺序选择下一个二元组,重复步骤2)至5),从而递归地向前追溯数据世系关系,直至队列Q为空;
[0058]?向后推衍过程:
[0059]I)对于节点Node和其版本号Version所组成的一个二元组(Node, Version),首先将其加入待处理队列Q ;
[0060]2)判断其版本号Version是否为End或0,如果为End或0,跳转至步骤5),如果不为End,则通过已建立好的科学工作流模型找到Node节点的所有已执行完且不处在待重做状态下的后继节点,记为IiNode1, nNode2,..., nNoden ;如果不存在任何后继节点,跳转至步骤5);
[0061]3)在根据建立好的谱系数据结构中查找如下数据记录:〈CurrentNode〉值为对Node 的引用,<CurrentNodeVersion)值为 Version,〈NextNode〉值为对 IiNode1 的引用,且〈NextNodeVersion〉的版本号最新;如果存在这样的数据,则记录下〈NextNodeVersion〉的值,假设为nVersion,这表明后置节点IiNode1根据Node节点的Version版本数据计算出的最新版本数据是nVersion,如果待处理队列Q中没有二元组(IiNode1, nVersion),将其加入Q ;如果不存在这样的数据,则执行步骤4);
[0062]4)重复步骤3),查询Node的Version版本数据所对应的后置节点nNode2,...,nNoden的最新版本号,并进行记录,加入待处理队列Q ;
[0063]5)从队列 Q 中删除(Node, Version);
[0064]6)从队列Q中顺序选择下一个二元组,重复步骤2)至5),从而递归地向后推衍数据世系关系,直至队列Q为空;
[0065]最终得到了 Node节点Version版本数据的前置、后继数据版本,结合科学工作流模型中定义的节点之间前置、后继关系,可将每一个数据版本标识在对应的节点上,形成一个数据世系关系模型,再通过对科学工作流模型输出方法进行扩充,即可输出该数据世系关系1?型。
[0066]本发明的有益效果:本发明所提出的追溯数据世系的新方法——基于多状态科学工作流的数据世系追溯方法,在原有的科学工作流模型基础上,整合了数据世系技术,增加了模型动态运行时的数据状态,以及模型数据的历史记录。本发明可以更好地描述大规模复杂科学计算和协同研发流程中数据的演化和状态,从而增强对流程过程的监控能力,实现流程全方位的管理策略,提高科研效率,并促进科学发展和技术进步。
[0067]和现有技术相比,本发明所述的方法具有以下优点:
[0068]逻辑清晰:通过本发明提供的数据存储方法和追溯方法,可以在科学工作流执行过程中产生的海量数据基础之上,遵循自然的计算顺序和数据输入输出关系,由前至后生成一张网状数据世系关系图;在该图中可以清晰定位每一个数据的位置和状态信息,以及其前置和后继数据的状态信息,并可根据需要截取数据世系关系图的部分或分支进行分析。
[0069]易于实现:本发明提供的追溯方法使用软件方法实现,采用递归算法处理数据关系,对硬件要求低;此外,本发明所提供方法根据实际情况既可利用数据库语言直接构建在数据存储之上,亦可利用相关程序语言构建于数据抽象对象上。
[0070]适应性强:根据多状态的科学工作流过程数据统一管理模型,各数据绑定在工作流过程节点上,因此得到的数据世系关系可根据工作流过程节点之间关系的配置与管理自动更新。
【专利附图】

【附图说明】
[0071]在以下附图中描述前后两个关联节点的数据版本世系关系时,为表述方便,将某节点η的第V版数据信息表示为η: V,将某节点η的最新版本数据信息表示为n: [Latest]。
[0072]图1数据世系关系管理功能与科学工作流系统间的O层数据流图
[0073]图2数据世系关系管理功能与科学工作流系统间的I层数据流图
[0074]图3数据世系关系建立与更新功能流程图(节点首次执行)
[0075]图4数据世系关系建立与更新功能流程图(节点重新执行)
[0076]图5数据世系追溯方法流程图(向前追溯)
[0077]图6数据世系追溯方法流程图(向后推衍)
[0078]图7 —个简单的科学工作流模型实例
[0079]图8节点2vl.0版本数据向前追溯过程[0080]图9节点2vl.0版本数据向后推衍过程
[0081]图10节点2vl.0版本数据的数据世系图
[0082]图11节点4vl.0版本数据的向前追溯数据世系图
[0083]图12节点4vl.0版本数据的向后追溯数据世系图
[0084]图13节点4vl.0版本数据的数据世系图
[0085]图1为本发明的部署环境中,数据世系关系管理功能与科学工作流系统节点操作功能之间的数据流关系,用户向科学工作流系统输入某节点计算的数据后,系统将模型、节点和版本数据发送给数据世系关系管理子系统中进行处理和存储。用户向数据世系关系管理子系统输入指定的节点名称和版本号,该子系统可进行查询和追溯,输出数据世系关系数据。
[0086]对图1中数据世系关系管理功能进行进一步细化,可以得到图2。图2中,将数据世系关系管理功能具体分成了数据世系关系建立与更新功能和数据世系关系查询功能。
[0087]图3描述了数据世系关系建立与更新功能中,对于首次执行的节点所产生的数据进行处理的具体执行流程。为了存储前后两个关联节点的数据版本世系关系,这里每一条关系记录都包括了前置节点信息、前置节点数据版本信息,后继节点信息、后继节点数据版本信息。对于一个首次执行的节点,通过图3中的流程对其计算数据记录进行处理,即可把该节点的数据信息加入到数据世系关系中。
[0088]图4描述了数据世系关系建立与更新功能中,对于重新执行的节点所产生的数据进行处理的具体执行流程。一个节点如果由于某种原因重新执行,需要对重新执行的原因进行判断并分别处理,之后建立新的世系关系记录进行存储。
[0089]图3和图4对数据世系关系建立与更新功能的执行流程进行了描述,其中的处理细节参考后文【具体实施方式】中的解释。
[0090]图5和图6描述了本发明的数据世系追溯方法的处理流程。对指定的节点以及该节点指定的数据版本,可以在数据世系模型中进行查询追溯,得到此节点的该版本数据源自哪些前置节点数据,以及以此节点的该版本数据为基础,向后计算推衍出了哪些后继节点的数据。因此,数据世系追溯方法分为向前追溯和向后推衍两个子过程,图5展示了向前追溯子过程的处理流程,图6展示了向后推衍子过程的处理流程。其中具体处理细节可参考后文【具体实施方式】中的解释。
【具体实施方式】
[0091]本发明基于科学工作流模型,在其之上进行数据世系建立、分析、追溯,【具体实施方式】如下:
[0092]1.建立存储结构
[0093]本发明的数据世系追溯方法并不依赖于某种固定的数据存储形式,可根据具体实施环境为数据库表、数据存储对象等。本方法计算并存储科学工作流节点之间的数据版本世系关系,故要求数据存储结构(为便于表述,记为Table)中,每项数据应至少存储以下节点信息:
[0094]?当前节点引用(记为〈CurrentNode〉);
[0095]?当前节点数据版本号(记为〈CurrentNodeVersion〉);[0096]籲当前节点的后续节点引用(记为〈NextNode〉);
[0097]?当前节点的后续节点数据版本号(记为〈NextNodeVersion〉);
[0098]数据版本号可为指向某个数据版本的引用,根据具体实施环境不同而相异,但数据版本管理不在本发明的讨论范围之内,因此这里单纯将数据版本号看作某个值,此处定义一个常量数据版本号End,表明对应的节点没有产生数据。
[0099]2.数据世系关系的建立与更新操作
[0100]本发明提供了科学工作流节点之间数据世系关系的建立与更新方法,这种建立与更新方法可绑定在工作流节点的执行操作事件中,待一个节点执行完成、产生新数据后,自动调用这种数据世系关系建立与更新方法,对数据世系存储数据进行维护。
[0101]数据世系关系建立与更新方法输入包括已建立好的科学工作流模型和科学工作流中某个刚执行完毕的节点,对于该节点,应将其视作科学工作流中的一般性节点,由科学工作流模型可以获得该节点的前置、后续节点信息,以及该节点的状态(首次执行或重做),为表述方便,做出以下假设: [0102].Node为工作流中的一个节点;
[0103].Node 的前置节点共有 m 个,分别为 PNode1, pNode2,..., pNodem ;
[0104].Node 的后续节点共有 η 个,分别为 IiNode1, nNode2,..., nNoden。
[0105]当节点Node执行完成、产生新数据后,将调用数据世系关系建立与更新方法,在方法中还需针对Node是首次执行,还是重新执行进行判断,并采取不同的处理过程。需要注意的是,一个节点进行了重新执行计算而产生的数据版本变化,会导致后续节点全部变为待重新执行状态,表明这些后续节点需要进行重新执行计算,这也是科学工作流模型的特点所决定的。一个节点是主动重新执行,亦或是由于受到前置节点的影响而被动进行重新执行,两种情况下数据世系数据记录中的状态是不同的,因此一个节点进行重新执行时需要判断这是否是由于其前置节点进行重新执行而导致的。方法中具体调度与执行过程如下:
[0106]4)判断节点Node是否为首次执行,如果是首次执行,则本方法继续执行下方步骤2 ;否则节点Node为重新执行,则本方法继续执行下方步骤3。
[0107]5) Node节点为首次执行,本方法将执行以下子步骤:
[0108]2.1)在存储结构Table中检查是否存在这样的数据记录:〈NextNode>为Node的引用,〈NextNodeVersion〉为O。如果存在这样的数据记录,则将该数据记录的〈NextNodeVersion〉更新为节点Node的数据版本号;如果不存在这样的数据记录,则跳过该步骤。
[0109]2.2)为Node的第I个后续节点Node1在存储结构Table中增加一项数据记录,其中的〈CurrentNode〉存储节点Node的引用,〈CurrentNodeVersion〉存储节点Node的数据版本号,〈NextNode〉存储 Node1 的引用,〈NextNodeVersion〉为 O。
[0110]2.3)重复执行步骤2.2,直至为Node的所有后续节点都在存储结构Table中建立了对应的数据记录。
[0111]2.4)方法结束。
[0112]6)Node节点为重新执行,假设Node原来的最新数据版本号为OldVersion,重新执行后得到的新数据版本号为NewVersion,本方法将执行以下子步骤:[0113]3.1)在存储结构Table中检查是否存在这样的数据记录:〈NextNode>为Node的引用,〈NextNodeVersion〉为O。如果存在这样的数据记录,表明该节点是由于其前置节点重做而导致的重做,则将该数据记录的〈NextNodeVersion〉更新为节点Node的新数据版本号NewVersion值,继续执行方法步骤3.3 ;如果不存在这样的数据记录,则执行方法步骤
3.2。
[0114]3.2)在存储结构Table中检查是否存在这样的数据记录:〈NextNode>为Node的引用,〈NextNodeVersion〉为Node原来的数据版本号为OldVersion。如果存在这样的数据记录,表明该节点是主动发起的重新执行,则复制该数据记录,并将复制得到的数据记录的〈NextNodeVersion〉更新为节点Node的新数据版本号NewVersion值,继续执行方法步骤
3.3 ;如果不存在这样的数据记录,则算法结束。
[0115]3.3)在存储结构Table中检查是否存在这样的数据记录:〈CurrentNode〉为Node的引用,〈CurrentNodeVersion〉为Node原来的数据版本号为OldVersion,〈NextNodeVersion〉为O。如果存在这样的数据记录,则将该数据记录的〈NextNodeVersion〉更新为End值,这样就避免了 Node的后继节点还使用旧的数据进行计算;如果不存在这样的数据记录,则跳过该步骤,继续执行步骤3.4。
[0116]3.4)为Node的第I个后续节点Node1在存储结构Table中增加一项数据记录,其中的〈CurrentNode〉存储节点Node的引用,〈CurrentNodeVersion〉存储节点Node的新数据版本号NewVersion,〈NextNode〉存储Node的第I个后续节点Node1的引用,〈NextNodeVersion〉为 O。
[0117]3.5)重复执行步骤3.4,直至为Node的所有后续节点都在存储结构Table中建立了对应的数据记录。
[0118]3.6)方法结束。
[0119]至此,数据世系关系建立与更新方法执行完毕,通过对科学工作流模型中的每个节点进行上述方法进行操作,即可为整个科学工作流模型建立数据世系关系模型。
[0120]3.数据世系追溯方法
[0121]本发明提供了科学工作流节点的数据世系追溯方法,基于之前建立的数据世系关系模型,可以基于科学工作流中任一节点的任一版本数据,向前追溯该节点的该版本数据是由前置节点的哪个版本数据推衍而来,向后查询该节点的该版本数据推衍出了哪些后置节点的数据版本,因此,本方法分为向前追溯和向后推衍两个子过程。
[0122]实际上,根据前文所定义的数据关系建立与维护方法,一个节点的某个数据版本其前置节点数据版本必定是确定而唯一的,即不可能出现前置节点的不同版本数据推衍出的后继节点数据,其版本必不相同;而一个节点的某个数据版本的后置节点数据版本可能有多个而不唯一,即允许出现根据前置节点的同一个版本数据计算推衍出后继节点的不同版本数据。
[0123]数据世系追溯方法的输入应包括已建立好的科学工作流模型,以及作为追溯操作基点的科学工作流中某个节点和该节点的某个数据版本。假设输入的节点为Node并且该节点的版本号为Version,两者组成一个二元组(Node, Version),为处理方便建立一个队列数据结构Q存储该二元组,则数据世系追溯方法的执行过程如下:
[0124]?向前追溯过程:[0125]I)对于节点Node和其版本号Version所组成的一个二元组(Node, Version),首先将其加入待处理队列Q。
[0126]2)通过已建立好的科学工作流模型找到Node节点的所有前置节点,记为PNode1,PNode2,..., pNodem0如果不存在任何前置节点,则跳转到步骤5。
[0127]3)在建立好的世系数据结构中查找如下数据记录:〈CurrentNode〉值为对pNodei的引用,〈NextNode〉值为对Node的引用,〈NextNodeVersion〉值为Version。如果存在这样的数据,则记录下〈CurrentNodeVersion〉的值(假设为pVersion),这表明Node节点的Version版本数据是根据其前置节点PNode1的pVersion版本数据计算出来的,如果待处理队列Q中没有二元组(PNode1, pVersion),则将其加入Q。如果不存在这样的数据,继续执行步骤4。
[0128]4)重复步骤3,查询Node的Version版本数据所对应的前置节点pNode2,...,pNodem的版本号,加入待处理队列Q。
[0129]5)从队列 Q 中删除(Node, Version)。
[0130]6)从队列Q中顺序选择下一个二元组,重复步骤2至5,从而递归地向前追溯数据世系关系,直至队列Q为空。
[0131]?向后推衍过程:
[0132]前文已经提到,一个节点的某个数据版本的后置节点数据版本可能不唯一,向后推衍过程先只查找后继节点的最新一个版本数据。
[0133]I)对于节点Node和其版本号Version所组成的一个二元组(Node, Version),首先将其加入待处理队列Q。
[0134]2)判断其版本号Version是否为End或0,如果为End或0,跳转至步骤5,如果不为End,则通过已建立好的科学工作流模型找到Node节点的所有已执行完且不处在待重做状态下的后继节点,记为IiNode1, nNode2,..., nNoden。如果不存在任何后继节点,跳转至步骤5。
[0135]3)在根据建立好的谱系数据结构中查找如下数据记录:〈CurrentNode>值为对Node 的引用,〈CurrentNodeVersion〉值为 Version,〈NextNode〉值为对 IiNode1 的引用,且〈NextNodeVersion〉的版本号最新。如果存在这样的数据,则记录下〈NextNodeVersion〉的值(假设为nVersion),这表明后置节点IiNode1根据Node节点的Version版本数据计算出的最新版本数据是nVersion,如果待处理队列Q中没有二元组(IiNode1, nVersion),将其加AQ0如果不存在这样的数据,则执行步骤4。
[0136]4)重复步骤3,查询Node的Version版本数据所对应的后置节点nNode2,...,nNoden的最新版本号,并进行记录,加入待处理队列Q。
[0137]5)从队列 Q 中删除(Node, Version)。
[0138]6)从队列Q中顺序选择下一个二元组,重复步骤2至5,从而递归地向后推衍数据世系关系,直至队列Q为空。
[0139]最终得到了 Node节点Version版本数据的前置、后继数据版本,结合科学工作流模型中定义的节点之间前置、后继关系,可将每一个数据版本标识在对应的节点上,形成一个数据世系关系模型,再通过对科学工作流模型输出方法进行扩充,即可输出该数据世系关系1?型。[0140]向后推衍过程中,如果想推衍出后继节点的所有数据版本,只需要对步骤2)的查找进行修改,去掉限制条件〈NextNodeVersion〉的版本号最新。但这种操作在一个每个节点都有多个数据版本的科学工作流模型中,很容易导致查询操作指数级增长,严重影响系统效率,故建议采用推衍后继节点最新数据版本的操作。另外一种可行的方式是记录下后继节点的所有数据版本,根据用户选择动态推衍指定的数据版本。
[0141]为了进一步对本发明进行阐述,特举例如下:
[0142]实施例1:
[0143]图7为一个简单的科学工作流模型,其中共有7个节点,该模型具有如下规定:
[0144]1)每个节点每次执行后将产生一个版本的数据;
[0145]2)每个节点只有其所有前置节点均执行完成并产生数据后才可开始执行;
[0146]3) 一个节点执行过一次后,可以重新执行;
[0147]4) 一个节点如果重新执行,其所有后继节点也需重新执行。
[0148]对于该模型,本实例将进行如下一系列操作:
[0149]1)按照顺序执行节点1、2、3、5、4、6,每次执行得到数据的版本为1.0 ;
[0150]2)重新执行节点4,重新执行得到的数据版本为2.0 ;
[0151]3)重新执行节点4的所有已执行后续节点,得到新的数据版本2.0 ;
[0152]4)执行节点7,得到的数据版本为1.0 ;
[0153]5)查询节点2的1.0版本数据其前后数据世系关系;
[0154]6)查询节点4的1.0版本数据其前后数据世系关系;
[0155]现对该模型应用本发明的数据世系关系处理方法如下:
[0156]1.建立存储结构
[0157]在关系数据库(如SQL Server)中建立表DataProvenance结构如下:
[0158]表1 表 DataProvenance 存储结构
[0159]
[0160]
【权利要求】
1.一种基于多状态科学工作流的数据世系追溯系统,其特征是,包括:系统服务端、用户端、关系数据库、数据操作单元、逻辑计算单元;其中, 所述的系统服务端,为一台或多台位于云端或局域网环境的计算机,用以接受工作流用户的工作流执行请求以及对请求作出反应; 所述的用户端,为位于本地的计算机终端,是工作流用户执行工作流过程的输入设备; 所述的关系数据库,用以保存工作流活动节点信息、逻辑节点信息、数据的依赖关系以及条件约束集;所述的关系数据库安装在系统服务端; 所述的数据操作单元,和所述的关系数据库进行交互,包括:查询数据、增加数据、修改数据、删除数据; 所述的逻辑计算单元,根据工作流用户的当前工作状态进行逻辑计算,通过数据操作单元和关系数据库进行交互,并把计算结果通过用户端展现给工作流用户; 在工作流用户第一次执行某个任务节点时:所述的逻辑计算单元,首先,检查关系数据库中是否已经存在以这个任务为后置逻辑节点的表项,如果存在,则更新该表项的当前任务版本;然后,检查关系数据库中是否存在以这个任务为前置逻辑节点的表项,如果存在,则更新该表项的当前任务版本;如果上述两项均不存在,则在关系数据库中新增加一项,以当前任务、当前任务后置逻辑节点以及当前任务版本号创建,后置逻辑节点版本号由后置逻辑节点执行时填写; 在工作流用户重做某个任务节点时:所述的逻辑计算单元,首先检查关系数据库中是否已经存在以这个任务为后置逻辑节点的表项,如果有,则新增一项,保存已存在的前置任务版本和当前重做的任务版本之间的关系;然后,检查关系数据库中是否存在以这个任务为前置节点的表项,如果有,并且后置节点还没有进行,则直接改变该项的前置任务版本号为当前任务节点版本号;如果上述两项均不存在,则新增加一项,以当前任务、当前任务后置逻辑节点以及当前任务版本号创建,其后置逻辑节点版本号由后置逻辑节点执行时填与。
2.如权利要求1所述的数据世系追溯系统,其特征是,所述的数据操作单元和逻辑计算单元位于系统服务端。
3.如权利要求1所述的数据世系追溯系统,其特征是,所述的数据操作单元和逻辑计算单元位于客户端。
4.如权利要求1所述的数据世系追溯系统,其特征是,工作流用户查询数据世系关系时,直接在关系数据库中查询当前任务和当前版本号所在表项。
5.一种基于多状态科学工作流的数据世系追溯方法,其特征是,包括: 构建关系数据库,用以保存工作流节点的活动节点信息、逻辑节点信息、数据的依赖关系以及条件约束集;所述的关系数据库位于服务器端; 在工作流用户第一次执行某个任务节点时:首先,检查关系数据库中是否已经存在以这个任务为后置逻辑节点的表项,如果存在,则更新该表项的当前任务版本;然后,检查关系数据库中是否存在以这个任务为前置逻辑节点的表项,如果存在,则更新该表项的当前任务版本;如果上述两项均不存在,则在关系数据库中新增加一项,以当前任务、当前任务后置逻辑节点以及当前任务版本号创建,后置逻辑节点版本号由后置逻辑节点执行时填与; 在工作流用户重做某个任务节点时:首先检查关系数据库中是否已经存在以这个任务为后置逻辑节点的表项,如果有,则新增一项,保存已存在的前置任务版本和当前重做的任务版本之间的关系;然后,检查关系数据库中是否存在以这个任务为前置节点的表项,如果有,并且后置节点还没有进行,则直接改变该项的前置任务版本号为当前任务节点版本号;如果上述两项均不存在,则新增加一项,以当前任务、当前任务后置逻辑节点以及当前任务版本号创建,其后置逻辑节点版本号由后置逻辑节点执行时填写。
6.如权利要求5所述的数据世系追溯方法,其特征是,工作流用户查询数据世系关系时,直接在关系数据库中查询当前任务和当前版本号所在表项。
7.如权利要求5所述的数据世系追溯方法,其特征是,各工作流数据绑定在工作流节点上,得到的数据世系关系根据工作流节点之间关系的配置与管理自动更新。
8.如权利要求5所述的数据世系追溯方法,其特征是,所述关系数据库中,每项工作流节点数据的存储结构中应至少存储以下节点信息:当前节点引用〈CurrentNode〉,当前节点数据版本号〈CurrentNodeVersion〉,当前节点的后续节点引用〈NextNode〉,当前节点的后续节点数据版本号〈NextNodeVersion〉。
9.如权利要求8所述的数据世系追溯方法,其特征是,科学工作流节点之间数据世系关系的建立与更新方法如下: 数据世系关系建立与更新方法的输入包括已建立好的科学工作流模型和科学工作流中某个刚执行完毕的节点,对于该节点,将其视作科学工作流中的一般性节点,由科学工作流模型可以获得该节点的前置、后续节点信息,以及该节点的状态是首次执行还是重做,为表述方便,做出以下假设: ?Node为工作流中的一个节点; ?Node的前置节点共有m个,分别为PNode1, pNode2,..., pNodem ; ?Node的后续节点共有n个,分别为IiNode1, nNode2,..., nNoden ; 当节点Node执行完成、产生新数据后: .1)判断节点Node是否为首次执行,如果是首次执行,则执行步骤2);否则节点Node为重新执行,则执行步骤3); . 2)Node节点为首次执行,执行以下子步骤: .2.1)检查是否存在这样的数据记录:〈NextNode>为Node的引用,〈NextNodeVersion〉为O ;如果存在这样的数据记录,则将该数据记录的〈NextNodeVersion〉更新为节点Node的数据版本号;如果不存在这样的数据记录,执行步骤2.2); . 2.2)为Node的第I个后续节点Node1在存储结构中增加一项数据记录,其中的〈CurrentNode〉存储节点Node的引用,<CurrentNodeVersion)存储节点Node的数据版本号,〈NextNode〉存储 Node1 的引用,〈NextNodeVersion〉为 O ; .2.3)重复执行步骤2.2),直至为Node的所有后续节点都在存储结构中建立了对应的数据记录; .2.4)方法结束; .3)Node节点为重新执行,假设Node原来的最新数据版本号为OldVersion,重新执行后得到的新数据版本号为NewVersion,本方法将执行以下子步骤:. 3.1)在存储结构中检查是否存在这样的数据记录:〈NextNode>为Node的引用,〈NextNodeVersion〉为O ;如果存在这样的数据记录,表明该节点是由于其前置节点重做而导致的重做,则将该数据记录的〈NextNodeVersion〉更新为节点Node的新数据版本号NewVersion值,继续执行方法步骤3.3);如果不存在这样的数据记录,则执行方法步骤3.2); . 3.2)在存储结构中检查是否存在这样的数据记录:〈NextNode>为Node的引用,〈NextNodeVersion〉为Node原来的数据版本号为OldVersion ;如果存在这样的数据记录,表明该节点是主动发起的重新执行,则复制该数据记录,并将复制得到的数据记录的〈NextNodeVersion〉更新为节点Node的新数据版本号NewVersion值,继续执行方法步骤3.3 ;如果不存在这样的数据记录,则算法结束; . 3.3)在存储结构中检查是否存在这样的数据记录:〈CurrentNode〉为Node的引用,<CurrentNodeVersion)为 Node 原来的数据版本号为 OldVersion,〈NextNodeVersion〉为O ;如果存在这样的数据记录,则将该数据记录的〈NextNodeVersion〉更新为End值,这样就避免了 Node的后继节点还使用旧的数据进行计算;如果不存在这样的数据记录,则跳过该步骤,继续执行步骤3.4); .3.4)为Node的第I个后续节点Node1在存储结构中增加一项数据记录,其中的〈CurrentNode〉存储节点 Node 的引用,〈CurrentNodeVersion〉存储节点 Node 的新数据版本号NewVersion,〈NextNode〉存储Node的第I个后续节点Node1的引用,〈NextNodeVersion〉为 O ; .3.5)重复执行步骤3.4),直至为Node的所有后续节点都在存储结构中建立了对应的数据记录; . 3.6)方法结束; 至此,数据世系关系建立与更新方法执行完毕,通过对科学工作流模型中的每个节点进行上述方法进行操作,即可为整个科学工作流模型建立数据世系关系模型。
10.如权利要求9所述的数据世系追溯方法,其特征是,科学工作流节点的数据世系追溯方法,基于之前建立的数据世系关系模型,可以基于科学工作流中任一节点的任一版本数据,向前追溯该节点的该版本数据是由前置节点的哪个版本数据推衍而来,向后查询该节点的该版本数据推衍出了哪些后置节点的数据版本;分为向前追溯和向后推衍两个子过程; 数据世系追溯方法的输入应包括已建立好的科学工作流模型,以及作为追溯操作基点的科学工作流中某个节点和该节点的某个数据版本;假设输入的节点为Node并且该节点的版本号为Version,两者组成一个二元组(Node, Version),为处理方便建立一个队列数据结构Q存储该二元组,则数据世系追溯方法的执行过程如下: ?向前追溯过程: 1)对于节点Node和其版本号Version所组成的一个二元组(Node,Version),首先将其加入待处理队列Q ; 2)通过已建立好的科学工作流模型找到Node节点的所有前置节点,记为PNode1,PNode2,...,PNodem;如果不存在任何前置节点,则跳转到步骤5); 3)在建立好的世系数据结构中查找如下数据记录:〈CurrentNode>值为对PNode1的引用,<NextNode>值为对Node的引用,<NextNodeVersion>值为Version ;如果存在这样的数据,贝丨』记录下〈CurrentNodeVersion〉的值,假设为pVersion,这表明Node节点的Version版本数据是根据其前置节点PNode1的pVersion版本数据计算出来的,如果待处理队列Q中没有二元组(PNode1, pVersion),则将其加入Q ;如果不存在这样的数据,继续执行步骤4); 4)重复步骤3),查询Node的Version版本数据所对应的前置节点pNode2,..pNodem的版本号,加入待处理队列Q ; 5)从队列Q中删除(Node,Version); 6)从队列Q中顺序选择下一个二元组,重复步骤2)至5),从而递归地向前追溯数据世系关系,直至队列Q为空; ?向后推衍过程: 1)对于节点Node和其版本号Version所组成的一个二元组(Node,Version),首先将其加入待处理队列Q ; 2)判断其版本号Version是否为End或0,如果为End或0,跳转至步骤5),如果不为End,则通过已建立好的科学工作流模型找到Node节点的所有已执行完且不处在待重做状态下的后继节点,记为IiNode1, nNode2,..., nNoden ;如果不存在任何后继节点,跳转至步骤5); 3)在根据建立好的谱系数据结构中查找如下数据记录:〈CurrentNode>值为对Node的引用,<CurrentNodeVersion)值为 Version,〈NextNode〉值为对 IiNode1 的引用,且<NextNodeVersion>的版本号最新;如果存在这样的数据,则记录下〈NextNodeVersion〉的值,假设为nVersion,这表明后置节点IiNode1根据Node节点的Version版本数据计算出的最新版本数据是nVersion,如果待处理队列Q中没有二元组(IiNode1, nVersion),将其加入Q ;如果不存在这样的数据 ,则执行步骤4); 4)重复步骤3),查询Node的Version版本数据所对应的后置节点nNode2,...,nNoden的最新版本号,并进行记录,加入待处理队列Q ; 5)从队列Q中删除(Node,Version); 6)从队列Q中顺序选择下一个二元组,重复步骤2)至5),从而递归地向后推衍数据世系关系,直至队列Q为空; 最终得到了 Node节点Version版本数据的前置、后继数据版本,结合科学工作流模型中定义的节点之间前置、后继关系,可将每一个数据版本标识在对应的节点上,形成一个数据世系关系模型,再通过对科学工作流模型输出方法进行扩充,即可输出该数据世系关系模型。
【文档编号】G06Q10/06GK103745319SQ201410010013
【公开日】2014年4月23日 申请日期:2014年1月9日 优先权日:2014年1月9日
【发明者】黄雨, 井玉欣, 王捍贫, 张世琨 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1