一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

依赖性版本冲突自动解决的制作方法

2021-12-18 02:58:00 来源:中国专利 TAG:

依赖性版本冲突自动解决


背景技术:

1.涉及很多任务(其中一些任务可能依赖于(多个)其他任务)的复杂进程可能难以先验地准确地建模。例如,由特定任务执行的处理可能频繁地改变,和/或特定任务的依赖性可能在特定作业开始之后发生改变。


技术实现要素:

2.本文中描述的是一种用于作业执行的系统,该系统包括:包括处理器和存储器的计算机,存储器上存储有计算机可执行指令,该计算机可执行指令在由处理器执行时使得计算机:在包括多个任务的工作流的特定版本的执行期间,接收关于多个任务中的要执行的特定任务的信息,该特定任务依赖于多个任务中的另一任务;从全局依赖性数据结构中检索关于依赖性的信息,其中全局依赖性数据结构存储关于多个任务的当前依赖性信息;确定关于特定任务对另一任务的依赖性是否存在冲突;并且当确定存在冲突时:检索关于依赖性和多个工作流的信息;检索关于与多个任务中的至少一个任务相关的依赖性改变历史的信息;检索关于工作流的特定版本和工作流的不同版本的信息;至少部分地基于从全局依赖性数据结构中检索到的信息、检索到的关于与多个任务中的至少一个任务相关的依赖性改变历史的信息、检索到的关于依赖性和多个工作流的信息、以及检索到的关于工作流的特定版本和工作流的不同版本的信息,标识冲突的解决方案;并且至少部分地基于标识出的解决方案,执行校正动作以解决冲突。
3.提供本“发明内容”以便以简化的形式介绍下面在“具体实施方式”中进一步描述的概念的选择。本“发明内容”并非旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
4.图1是示出用于作业执行的系统的功能框图。
5.图2是示出工作流提交系统的功能框图。
6.图3和图4是依赖性版本冲突自动解决的方法的流程图。
7.图5是工作流提交的方法的流程图。
8.图6是示出示例性计算系统的功能框图。
具体实施方式
9.现在参考附图描述与依赖性版本冲突自动解决有关的各种技术,其中同样的附图标记自始至终用于指代同样的元件。在以下描述中,出于解释的目的,阐述了众多具体细节以提供对一个或多个方面的透彻理解。然而,可能明显的是,可以在没有这些具体细节的情况下实践(多个)这样的方面。在其他实例中,众所周知的结构和设备以框图形式示出,以便于描述一个或多个方面。此外,要理解,被描述为由某些系统部件实行的功能可以由多个部件执行。类似地,比如,一个部件可以被配置为执行被描述为由多个部件实行的功能。
10.本主题公开支持执行或被配置为执行关于依赖性版本冲突自动解决的各种动作的各种产品和进程。以下是一种或多种示例性系统和方法。
11.本主题公开的方面涉及检测(多个)执行作业的(多个)任务和/或(多个)子任务的(多个)依赖性冲突的技术问题。与解决该问题相关联的技术特征涉及:在包括多个任务的工作流的特定版本的执行期间,接收关于多个任务中的要执行的特定任务的信息,该特定任务依赖于多个任务中的另一任务;从全局依赖性数据结构中检索关于依赖性的信息,其中全局依赖性数据结构存储关于多个任务的当前依赖性信息;确定关于特定任务对另一任务的依赖性是否存在冲突;并且当确定存在冲突时:检索关于依赖性和多个工作流的信息;检索关于与多个任务中的至少一个任务相关的依赖性改变历史的信息;检索关于工作流的特定版本和工作流的不同版本的信息;至少部分地基于从全局依赖性数据结构中检索到的信息、检索到的关于与多个任务中的至少一个任务相关的依赖性改变历史的信息、检索到的关于依赖性和多个工作流的信息、以及检索到的关于工作流的特定版本和工作流的不同版本的信息,标识冲突的解决方案;并且至少部分地基于标识出的解决方案,执行校正动作以解决冲突。因此,这些技术特征的方面表现出更高效和有效地执行作业的技术效果,例如,从而减少了(多个)计算资源和/或带宽的消耗。
12.而且,术语“或”旨在意指包括性的“或”,而不是排他性的“或”。也就是说,除非另有说明或从上下文中清楚地看出,否则短语“x采用a或b”旨在意指任何自然包括性排列。也就是说,以下实例中的任何一种满足短语“x采用a或b”:x采用a;x采用b;或x采用a和b两者。此外,除非另有说明或从上下文中清楚地看出指向单数形式,否则本技术和所附权利要求中使用的冠词“一个(a)”和“一个(an)”一般应当解释为意指“一个或多个”。
13.如本文中使用的,术语“部件”和“系统”及其各种形式(例如,部件、系统、子系统等)旨在指代计算机相关实体,其是硬件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于在处理器上运行的进程、处理器、对象、实例、可执行文件、执行线程、程序和/或计算机。举例来说,在计算机上运行的应用和计算机两者都可以是部件。一个或多个部件可以驻存在进程和/或执行线程内,并且部件可以位于一个计算机上和/或分布在两个或更多计算机之间。此外,如本文中使用的,术语“示例性”旨在意指用作某事物的说明或示例,而不旨在指示偏好。
14.按常规,(多个)作业和(多个)进程可以是自动化的工作流(任务)。典型的工作流可以是由各种团队(拥有团队)所拥有的很多子工作流(子作业)和个体活动(任务)的复杂复合物,其中一些子工作流(子作业)和个体活动(任务)彼此并行运行,并且可以具有大量依赖性。
15.被设计为驱动长时间运行的进程的系统需要声明各种阶段之间的依赖性并且需要根据那些依赖性进行编排。例如,长时间运行的进程/作业可以具有同时运行的多个实例,该多个实例具有特定工作流的各种版本。这可能会带来关于如何在具有相同工作流的不同版本(例如,(多个)任务/(多个)子任务的(多个)不同版本和/或(多个)任务/(多个)子任务的(多个)依赖性)的作业之间进行编排的重大挑战。
16.如下文更详细地讨论的,出于解释而非限制的目的,作业可以被表示为由多个节点组成的执行图(或树),其中每个节点表示特定任务(或子任务)。节点中的至少一些节点可以依赖于一个或多个其他节点的处理。在一些实施例中,依赖性可以基于特定节点,该特
定节点只能在另一节点的处理完成之后执行。在一些实施例中,依赖性可以基于特定节点,该特定节点只能在(例如,在另一节点的处理期间和/或在另一节点的处理完成时)从另一节点接收到信息之后执行。
17.本文中描述的是一种用于作业执行的系统和方法,该作业执行利用全局依赖性数据结构的单个版本。全局依赖性数据结构用作与当前应用到作业执行环境上的所有依赖性建模(例如,对于(多个)当前版本、(多个)先前版本和可选的(多个)未来版本)有关的唯一真实源。在一些实施例中,这种方法的优点是在应对跨作业依赖性时简化图部署模型,因为只需要维护一个单个版本。对于跨版本编排,系统采用自动化的冲突解决进程,而不是维护依赖性图的多个版本的显著更复杂的解决方案。
18.出于解释而非限制的目的,在用于(多个)计算机数据中心的构建进程的工作流/作业的上下文中描述系统和方法;然而,该系统和方法可以用于针对涉及很多任务(其中一些任务依赖于(多个)其他任务)的其他复杂进程而执行依赖性版本冲突自动解决。例如,该系统和方法可以用于在针对软件开发、制造等的(多个)进程中执行依赖性版本冲突自动解决。
19.参考图1,示出了用于作业执行的系统100。系统100通过采用全局依赖性数据结构110(例如,全局依赖性图)来采用依赖性感知编排。全局依赖性数据结构110可以用作与当前应用到系统100上的依赖性建模有关的唯一真实源。在一些实施例中,这种方法的优点是在应对跨作业依赖性时简化模式部署模型,因为系统100只有单个版本要经由全局依赖性数据结构110来维护。
20.如本文中使用的,“作业”是指由包括一个或多个任务的多个工作流组成的整体进程。每个任务可以包括零个、一个或多个子任务等。在一些实施例中,拥有者(例如,拥有权团队)可以被分配对每个任务的责任。任务可以是自动化进程(例如,软件模块的配置)、半自动化进程(例如,具有人工输入的软件模块的配置)和/或手动进程(例如,接收人工输入、物理地安装一块硬件)。
21.关于(多个)工作流(和任何相关联的(多个)任务和/或(多个)子任务)的信息可以存储在工作流存储库114中。在一些实施例中,该信息可以包括用于工作流的特定版本的代码、以及(多个)依赖性的声明(如果有的话)。工作流存储库114可以存储特定工作流的多个版本的信息(例如,代码和(多个)依赖性的(多个)声明)。
22.系统100还可以包括工作流/映射存储库118,其存储关于(多个)任务的(多个)依赖性和多个工作流的信息。在一些实施例中,关于具体实体如何联系到工作流的信息可以存储在工作流/实体映射存储库118中。该信息可以包括将实体映射到工作流代码包的跟踪信息。在一些实施例中,工作流/映射存储库118还可以存储:关于多个任务中的至少一个任务的依赖性改变历史的信息、和/或关于工作流的特定版本和工作流的不同版本的信息。
23.在执行的各种(多个)阶段中对用于(多个)作业的(多个)不断改变的依赖性模式的管理是一个极其复杂的场景。例如,推出新的模式更新可能会变得越来越多,并且可能导致破坏(多个)现有作业。
24.利用全局依赖性数据结构110,当需要移除特定工作流的特定依赖性时,开发者可以执行以下步骤序列。首先,开发者从工作流代码中移除依赖性关联(例如,通过移除其与任务的绑定,或通过从工作流中移除整个任务)。接下来,推出新的工作流代码,以运行作
业。在一些示例中,平均作业执行环境针对每天运行的每个构建类型可能具有大约一千个作业,因此更新所有他们的包可能是巨大的操作负担。而且,可能存在众多复杂的场景,其中作业运行数月并且推出包改变可能不可行。最后,从全局依赖性数据结构110中移除依赖性。
25.如果与这些步骤存在任何偏差,则移除进程可能导致(多个)问题。例如,如果工作流代码推出错过了任何作业,则移除的依赖性仍绑定到活动作业并且可能导致问题,从而需要手动回填数据。
26.类似地,利用全局依赖性数据结构110,当需要在特定工作流内添加依赖性时,开发者可能需要遵循精确的步骤序列。首先,向全局依赖性数据结构110添加新的依赖性。接下来,更新第一工作流代码,以将某个任务绑定到依赖性实体的先决条件端。接下来,推出新的工作流代码,以运行作业(例如,这可能非常昂贵且有时不切实际)。然后,然后更新第二工作流代码,以将某个任务绑定到依赖性实体的等待端。然后,推出第二工作流代码,以运行作业。同样,与这些步骤的任何偏差都可能导致(多个)问题并且需要(多个)手动解决方法。
27.全局依赖性数据结构110跟踪例如(多个)工作流的(多个)各种版本的(多个)依赖性实体改变。简要地参考图2,示出了工作流提交系统200。系统200包括接收已更新工作流的工作流更新部件210。工作流更新部件210将已更新工作流存储在工作流存储库114中。
28.系统200还包括依赖性更新部件220,依赖性更新部件220至少部分地基于先前存储在全局依赖性数据结构110中的信息来确定已更新工作流的模式的(多个)任何改变。在一些实施例中,依赖性更新部件220可以通过跟踪依赖性实体改变来实现对(多个)模式改变的理解。
29.接下来,依赖性更新部件220还可以确定具体实体如何联系到特定工作流。这可以通过跟踪实体与工作流代码包之间的映射来实现。在一些实施例中,依赖性更新部件220可以将关于全局依赖性数据结构110中的模式的任何改变(例如,模式改变差量)和具体实体如何联系到特定工作流的信息存储在全局工作流/映射存储库118中(例如,依赖性实体映射的跟踪)。该信息可以在运行时被利用,以允许作业执行环境确定除了检查实体的存在之外,还考虑实体的改变以及包相关联任务上正在发生什么,如下面讨论的。
30.返回图1,系统100包括运行时依赖性部件120,运行时依赖性部件120可以在运行时执行依赖性自动冲突解决,以克服由依赖性版本不匹配引起的潜在问题,例如,由移除的依赖性、添加的依赖性和/或依赖性范围改变引起的潜在问题。
31.运行时依赖性部件120包括依赖性标识部件130和依赖性自动冲突解决部件140。依赖性标识部件130从全局依赖性数据结构110中检索关于特定工作流的依赖性信息,并且标识特定工作流的当前版本的(多个)依赖性(如果有的话)。
32.如果(多个)标识出的依赖性中的任何一个被确定为有问题,则依赖性自动冲突解决部件140可以执行一个或多个自动冲突解决动作。通过在运行时审查(多个)依赖性,运行时依赖性部件120可以(1)检查实体的存在,(2)考虑实体中什么改变了;以及(3)(多个)包相关联任务上正在发生什么。由于现在每个作业包都可以与依赖性模式混合匹配——因此,很可能的是,对于跨作业交互场景,一个包具有的依赖性实体与其他包的依赖性实体相冲突。在一些实施例中,自动冲突解决部件140可以至少部分地基于从全局依赖性结构110
中检索到的信息以及从工作流/实体映射存储库118中检索到的关于依赖性和多个工作流的信息,来自动解决冲突。在一些实施例中,运行时依赖性部件120可以经由输出部件150(例如,经由图形用户界面、报告)向用户(例如,人)提供关于被破坏的依赖性关系(事件)的信息。
33.(多个)依赖性改变场景可以包括依赖性添加和/或依赖性移除。出于解释而非限制的目的,将利用以下符号和约定来描绘包及其依赖性模式:
34.[包,作业]:[依赖性实体]
[0035]

>指示依赖性关系
[0036]
n/a指示“不关心或不存在依赖性关系”[0037]
<

>指示绑定到依赖性实体的任务
[0038]
表1
[0039]
依赖性移除场景
[0040]
1.正在进行中,模式改变以移除依赖性
[0041]
在包p内,作业j1以模式a

>b开始。然而,在作业正在进行中的情况下,模式被改变以移除依赖性:
[0042]
最初
[0043]
[p,j1]:a

>b
[0044]
最后
[0045]
[p,j1]:n/a
[0046]
表2
[0047]
按常规,因为作业以模式a

>b开始,所以它使用该模式并且等待该依赖性。
[0048]
利用系统100,当作业到达依赖性检查时,它将不会等待存储在全局依赖性数据结构110中的任何基于依赖性的依赖性信息。由于当前工作流不包括先前的依赖性,所以作业将不会等待。
[0049]
2.正在进行中,满足的任务被改变为使用不同包
[0050]
作业以模式a

>b开始。然而,在正在进行中的情况下,满足b的任务被改变为使用不包含实体b的不同包。这可以是在相同作业内或跨作业。
[0051]
跨作业
[0052]
最初
[0053]
[p1,j1]:a

>b
[0054]
[p2,j2]:a

>b
[0055]
最后
[0056]
[p1,j1]:a

>b
[0057]
[p3,j2]:空
[0058]
在作业内
[0059]
最初
[0060]
[p1,j1]:a

>b
[0061]
最后
[0062]
[p2,j1]:空
[0063]
表3
[0064]
按常规,创建事件;然而,该事件不包含附加细节,可能难以快速理解出了什么问题。
[0065]
利用系统100,如果存在任务<

>a,但没有任务<

>b,则认为依赖性关系被破坏,并且可以利用标识被破坏的依赖性的附加信息来创建事件,该附加信息例如为“b绑定到包p2中的任务,而不是当前包p3中的任务”。该附加信息可以至少部分地基于从全局依赖性数据结构110和工作流/实体映射存储库118中获得的信息。
[0066]
3.正在进行中,工作流包改变
[0067]
最初,作业具有依赖性a

>b,其中a和b两者都附接到相同工作流内的任务。工作流包改变,使得不存在发出实体的任务。
[0068]
最初
[0069]
[p1,j1]:a

>b
[0070]
最后
[0071]
[p2,j1]:空
[0072]
表4
[0073]
按常规,创建事件而没有任何附加细节。
[0074]
利用系统100,如果存在任务<

>a,但没有任务<

>b,则认为依赖性关系被破坏并且可以利用附加信息来创建事件,该附加信息例如为“b绑定到包p1中的任务,而不是当前包p2中的任务”。该附加信息可以至少部分地基于从全局依赖性数据结构110和工作流/实体映射存储库118中获得的信息。
[0075]
依赖性添加场景
[0076]
1.正在进行中,具有绑定任务,模式改变以添加依赖性
[0077]
最初,作业开始于绑定到a并且绑定到b而没有依赖性的任务。在作业正在进行中的情况下,模式改变以添加a

>b:
[0078]
最初
[0079]
[p,j1]:n/a
[0080]
最后
[0081]
[p,j1]:a

>b
[0082]
表5
[0083]
按常规,由于模式在作业开始与当前时间之间发生了改变,并且当前模式始终是真实源,因此作业将等待依赖性,而不检查活动绑定。
[0084]
利用系统100,由于任务是<

>a并且任务是<

>b,但是由于包具有这两个任务,所以在一些实施例中,需要附加信息。首先,如果任务被活动地绑定,则系统100将等待依赖性被满足。如果任务被绑定但不活动(例如,它由标志来保护,该标志的值此时是未知的),则系统100将等待直到任务开始。
[0085]
在这样做时,系统100将检查全局依赖性数据结构110和工作流/实体映射存储库118,以获得实体的当前细节以及哪个包包含哪个实体。而且,检查绑定的依赖性实体,以查看任务与实体的活动绑定。2.正在进行中,模式改变以添加依赖性,具有最初未绑定的任务
[0086]
在这种场景中,当作业开始时,存在绑定到a但未绑定到b而没有依赖性的任务。在
作业正在进行中的情况下,模式改变以添加a

>b:
[0087]
最初
[0088]
[p,j1]:n/a
[0089]
最后
[0090]
[p,j1]:a

>b
[0091]
表6
[0092]
按常规,执行环境会记录模式,观察新的依赖性,并且抛弃未满足的依赖性错误,而没有任何附加细节。
[0093]
利用系统100,可以观察到,任务绑定到a,但任务未绑定到b。由于包未改变,所以系统100可以确定(a)依赖性被引入(从全局依赖性数据结构110),以及(b)何时包被创建(从工作流/实体映射存储库118)。如果a>b(在包创建之后引入依赖性),则可以跳过(例如,忽略)该依赖性。如果a<=b(在包创建之前或同时引入依赖性),则系统100确定依赖性关系被破坏。系统100可以创建事件,该事件提供关于所确定的被破坏的依赖性关系的信息,例如“b从未绑定到p中的任何任务”。
[0094]
依赖性范围类型改变场景
[0095]
在一些实施例中,依赖性范围是系统100要考虑的另一变量。在一些场景中,每个依赖性以一个或许多不同范围类型而存在(例如,动作a依赖于用于构建给定的新集群的动作b,但它们两者都依赖于通过在其中构建新集群的整个数据中心的构建而被执行的动作c)。当依赖性范围类型改变时,系统100的冲突自动解决可以是有帮助的。
[0096]
范围类型移除通常不是问题,因为范围类型可以简单地从全局模式中被移除,并且所有作业可以立即开始从它们的依赖性编排中忽略它。
[0097]
然而,范围类型添加可能是有问题的,因为如果旧的先决条件利用范围类型的旧子集而被满足,这意指在范围类型添加之后到达编排点的作业将不具有关于先决条件的正确信息。系统100可以通过扩展编排点检查以将所支持的范围类型考虑在内,来便于自动解决。
[0098]
例如,如果a依赖于b,并且依赖性b具有“集群”的范围并且它被改变(扩展为具有“集群”和“区域”两者的范围),则系统100在验证时使用来自工作流/实体映射存储库118的信息(例如,其他范围值(otherscopevalue))。因此,当系统100针对先决条件b而评估a时,系统100可以确定b是否完全存在。系统100还可以确定:在一个这样的情况下,otherscopevalue的区域值是否也与a的上下文中的区域值匹配。如果系统100确定匹配,则它将满足依赖性,而不是抛弃(多个)事件。
[0099]
如果范围从一种范围类型改变为另一范围类型,则系统100的自动解决可以检查范围之间的关系(例如,范围类型可以彼此嵌套或完全独立)。如果改变是从较小范围x变为完全包括x的较大范围y,则可以通过检查较旧范围依赖性被满足,来自动解决使用新范围的任何依赖性。如果范围改变没有嵌套关系,则不执行系统100的自动解决;然而,系统100可以例如利用信息来填充事件,以帮助操作者手动解决问题(例如,“依赖性模式随着范围从集群到区域的改变而改变”)。
[0100]
图3至图5示出了与依赖性版本冲突自动解决相关的示例性方法。虽然这些方法被示出为和描述为按序列执行的一系列动作,但是要理解和领会,这些方法不受该序列的顺
序的限制。例如,一些动作可以以与本文中描述的顺序不同的顺序发生。此外,一个动作可以与另一动作同时发生。此外,在一些实例中,可能并非需要所有动作来实施本文中描述的方法。
[0101]
而且,本文中描述的动作可以是计算机可执行指令,计算机可执行指令可以由一个或多个处理器来实施,和/或存储在一个或多个计算机可读介质上。计算机可执行指令可以包括例程、子例程、程序、执行线程等。更进一步地,方法的动作的结果可以存储在计算机可读介质中、显示在显示设备上等。
[0102]
参考图3和图4,示出了依赖性版本冲突自动解决的方法300。在一些实施例中,方法300由系统100执行。
[0103]
在310处,在包括多个任务的工作流的特定版本的执行期间,关于多个任务中的要执行的特定任务的信息被接收。特定任务依赖于多个任务中的另一任务。
[0104]
在320处,从全局依赖性数据结构中检索关于依赖性的信息。全局依赖性数据结构存储关于多个任务的当前依赖性信息。
[0105]
在330处,关于特定任务对另一任务的依赖性是否存在冲突,做出确定。例如,冲突可以是:任务链接到不存在的依赖性实体;和/或一个实体依赖于另一实体,该另一实体未链接到包括给定作业的任何工作流中的任何任务。
[0106]
如果330处的确定为“否”,则不发生进一步处理。如果330处的确定为“是”,则在340处当确定存在冲突时:在350处,关于依赖性和多个工作流的信息被检索。在354处,关于与多个任务中的至少一个任务相关的依赖性改变历史的信息被检索。在358处,关于工作流的特定版本和工作流的不同版本的信息被检索。
[0107]
在360处,至少部分地基于从全局依赖性数据结构中检索到的信息、检索到的关于与多个任务中的至少一个任务相关的依赖性改变历史的信息、检索到的关于依赖性和多个工作流的信息、以及检索到的关于工作流的特定版本和工作流的不同版本的信息,标识冲突的解决方案。
[0108]
在364处,至少部分地基于标识出的解决方案,校正动作被执行以解决冲突。在一些实施例中,校正动作可以包括:如果依赖性不再适用,则跳过该依赖性;如果依赖性仍然适用,则等待该依赖性;将工作流的版本更新为没有冲突的较新版本;和/或反映给用户,以例如使用关于标识出的冲突及其历史的详细信息,手动执行校正动作。
[0109]
转向图5,示出了工作流提交的方法500。在一些实施例中,方法500由系统200执行。
[0110]
在510处,多个任务中的特定任务的版本被接收。在520处,至少部分地基于所接收的特定任务的版本,存储在全局依赖性数据结构中的依赖性信息被更新。全局依赖性数据结构存储关于多个任务的当前依赖性信息。在530处,特定工作流被打包,该特定工作流包括多个任务中的至少一些任务的特定版本。在540处,将特定工作流映射到多个任务中的至少一些任务的依赖性的信息被存储。
[0111]
本文中描述的是一种用于作业执行的系统,该系统包括:包括处理器和存储器的计算机,存储器上存储有计算机可执行指令,该计算机可执行指令在由处理器执行时使得计算机:在包括多个任务的工作流的特定版本的执行期间,接收关于多个任务中的要执行的特定任务的信息,特定任务依赖于多个任务中的另一任务;从全局依赖性数据结构中检
索关于依赖性的信息,其中全局依赖性数据结构存储关于多个任务的当前依赖性信息;确定关于特定任务对另一任务的依赖性是否存在冲突;以及当确定存在冲突时:检索关于依赖性和多个工作流的信息;检索关于与多个任务中的至少一个任务相关的依赖性改变历史的信息;检索关于工作流的特定版本和工作流的不同版本的信息;至少部分地基于从全局依赖性数据结构中检索到的信息、检索到的关于与多个任务中的至少一个任务相关的依赖性改变历史的信息、检索到的关于依赖性和多个工作流的信息、以及检索到的关于工作流的特定版本和工作流的不同版本的信息,标识冲突的解决方案;以及至少部分地基于标识出的解决方案,执行校正动作以解决冲突。
[0112]
该系统可以包括:其中冲突通过使用特定工作流的不同版本而被自动解决。该系统还可以包括:其中冲突通过执行特定工作流而被自动解决。该系统可以包括:其中冲突通过经由图形用户界面向用户提供关于冲突的信息而被自动解决。
[0113]
该系统还可以包括:其中向用户提供的信息至少部分地基于从全局依赖性数据结构中检索到的信息、以及检索到的关于依赖性和多个工作流的信息。该系统还可以包括:其中全局依赖性数据结构还存储多个任务中的至少一个任务的当前依赖性信息。该系统还可以包括:其中冲突还基于任务是否被绑定到依赖性而被自动解决。
[0114]
该系统可以包括存储器,存储器上存储有另外的计算机可执行指令,该另外的计算机可执行指令在由处理器执行时使得计算机:接收多个任务中的特定任务的版本;至少部分地基于所接收的特定任务的版本,来更新存储在全局依赖性数据结构中的依赖性信息;打包特定工作流,该特定工作流包括多个任务中的至少一些任务的特定版本;以及存储将特定工作流映射到多个任务中的至少一些任务的依赖性的信息。
[0115]
本文中描述的是一种依赖性版本冲突自动解决的方法,该方法包括:在包括多个任务的工作流的特定版本的执行期间,接收关于多个任务中的要执行的特定任务的信息,特定任务依赖于多个任务中的另一任务;从全局依赖性数据结构中检索关于依赖性的信息,其中全局依赖性数据结构存储关于多个任务的当前依赖性信息;确定关于特定任务对另一任务的依赖性是否存在冲突;以及当确定存在冲突时:检索关于依赖性和多个工作流的信息;检索关于与多个任务中的至少一个任务相关的依赖性改变历史的信息;检索关于工作流的特定版本和工作流的不同版本的信息;至少部分地基于从全局依赖性数据结构中检索到的信息、检索到的关于与多个任务中的至少一个任务相关的依赖性改变历史的信息、检索到的关于依赖性和多个工作流的信息、以及检索到的关于工作流的特定版本和工作流的不同版本的信息,标识冲突的解决方案;以及至少部分地基于标识出的解决方案,执行校正动作以解决冲突。
[0116]
该方法还可以包括:其中冲突通过使用特定工作流的不同版本而被自动解决。该方法还可以包括:其中冲突通过执行特定工作流而被自动解决。该方法还可以包括:其中冲突通过经由图形用户界面向用户提供关于冲突的信息而被自动解决。
[0117]
该方法还可以包括:其中向用户提供的信息至少部分地基于从全局依赖性数据结构中检索到的信息、以及检索到的关于依赖性和多个工作流的信息。该方法还可以包括:其中全局依赖性数据结构还存储多个任务中的至少一个任务的未来依赖性的依赖性信息。该方法还可以包括:其中冲突还基于任务是否被绑定到依赖性而被自动解决。
[0118]
该方法还可以包括:接收多个任务中的特定任务的版本;至少部分地基于所接收
的特定任务的版本,来更新存储在全局依赖性数据结构中的依赖性信息;打包特定工作流,该特定工作流包括多个任务中的至少一些任务的特定版本;以及存储将特定工作流映射到多个任务中的至少一些任务的依赖性的信息。
[0119]
本文中描述的是一种计算机存储介质,该计算机存储介质存储计算机可读指令,该计算机可读指令在被执行时使得计算设备:在包括多个任务的工作流的特定版本的执行期间,接收关于多个任务中的要执行的特定任务的信息,特定任务依赖于多个任务中的另一任务;从全局依赖性数据结构中检索关于依赖性的信息,其中全局依赖性数据结构存储关于多个任务的当前依赖性信息;确定关于特定任务对另一任务的依赖性是否存在冲突;并且当确定存在冲突时:检索关于依赖性和多个工作流的信息;检索关于与多个任务中的至少一个任务相关的依赖性改变历史的信息;检索关于工作流的特定版本和工作流的不同版本的信息;至少部分地基于从全局依赖性数据结构中检索到的信息、检索到的关于与多个任务中的至少一个任务相关的依赖性改变历史的信息、检索到的关于依赖性和多个工作流的信息、以及检索到的关于工作流的特定版本和工作流的不同版本的信息,标识冲突的解决方案;并且至少部分地基于标识出的解决方案,执行校正动作以解决冲突。
[0120]
计算机存储介质还可以包括:其中冲突通过使用特定工作流的不同版本而被自动解决。计算机存储介质还可以包括:其中全局依赖性数据结构还存储多个任务中的至少一个任务的未来依赖性的依赖性信息。
[0121]
计算机存储介质可以存储另外的计算机可读指令,该另外的计算机可读指令在被执行时使得计算设备:接收多个任务中的特定任务的版本;至少部分地基于所接收的特定任务的版本,来更新存储在全局依赖性数据结构中的依赖性信息;打包特定工作流,该特定工作流包括多个任务中的至少一些任务的特定版本;并且存储将特定工作流映射到多个任务中的至少一些任务的依赖性的信息。
[0122]
参考图6,示出的是示例通用计算机或计算设备602(例如,移动电话、台式机、膝上型计算机、平板计算机、手表、服务器、手持式设备、可编程消费或工业电子产品、机顶盒、游戏系统、计算节点等)。比如,计算设备602可以用在用于作业执行的系统100中。
[0123]
计算机602包括一个或多个处理器620、存储器630、系统总线640、(多个)大容量存储设备650以及一个或多个接口部件670。系统总线640至少通信耦合上述系统组成部分。然而,要领会,计算机602以其最简单的形式可以包括耦合到存储器630的一个或多个处理器620,该一个或多个处理器620执行存储在存储器630中的各种计算机可执行动作、指令和/或部件。比如,指令可以是用于实施被描述为由上面讨论的一个或多个部件实行的功能的指令、或用于实施上述方法中的一个或多个方法的指令。
[0124]
(多个)处理器620可以用被设计为执行本文中描述的功能的以下项来实施:通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件或其任何组合。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何处理器、控制器、微控制器或状态机。(多个)处理器620还可以被实施为计算设备的组合,例如dsp和微处理器的组合、多个微处理器的组合、多核处理器的组合、一个或多个微处理器与dsp核结合的组合、或任何其他这样的配置。在一个实施例中,(多个)处理器620可以是图形处理器。
[0125]
计算机602可以包括各种各样的计算机可读介质或以其他方式与各种各样的计算
机可读介质交互,以便于对计算机602的控制,以实施所要求保护的主题的一个或多个方面。计算机可读介质可以是可以由计算机602访问的任何可用介质,并且包括易失性和非易失性介质以及可移除和不可移除介质。计算机可读介质可以包括两种不同且相互排斥的类型,即计算机存储介质和通信介质。
[0126]
计算机存储介质包括用于存储信息的以任何方法或技术实施的易失性和非易失性的、可移除和不可移除的介质,该信息诸如为计算机可读指令、数据结构、程序模块或其他数据。计算机存储介质包括存储设备,诸如存储器设备(例如,随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)等)、磁存储设备(例如,硬盘、软盘、卡带、磁带等)、光盘(例如,紧凑盘(cd)、数字多功能盘(dvd)等)和固态设备(例如,固态驱动器(ssd)、闪存驱动器(例如,卡、棒、钥匙驱动器等)、或存储(而不是传输或传达)由计算机602可访问的期望信息的任何其他类似的介质。因此,计算机存储介质不包括调制数据信号、以及关于通信介质所描述的内容。
[0127]
通信介质在诸如载波之类的调制数据信号或其他输运机制中体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息递送介质。术语“调制数据信号”意指一种信号,该信号的特性中的一个或多个特性以使得在信号中编码信息的方式被设置或改变。通过示例而非限制的方式,通信介质包括:有线介质,诸如有线网络或直接有线连接;以及无线介质,诸如声学、rf、红外线和其他无线介质。
[0128]
存储器630和(多个)大容量存储设备650是计算机可读存储介质的示例。依赖于计算设备的确切配置和类型,存储器630可以是易失性的(例如,ram)、非易失性的(例如,rom、闪存等)或这两者的某种组合。通过示例的方式,基本输入/输出系统(bios)(包括基本例程,以诸如在启动期间,在计算机602内的元件之间传送信息)可以被存储在非易失性存储器中,而易失性存储器可以充当外部高速缓冲存储器,以除了其他方面之外便于(多个)处理器620的处理。
[0129]
(多个)大容量存储设备650包括用于存储相对于存储器630而言的大量数据的可移除/不可移除的、易失性/非易失性的计算机存储介质。例如,(多个)大容量存储设备650包括但不限于一个或多个设备,诸如磁盘或光盘驱动器、软盘驱动器、闪存、固态驱动器或记忆棒。
[0130]
存储器630和(多个)大容量存储设备650可以包括或已经在其中存储有操作系统660、一个或多个应用662、一个或多个程序模块664和数据666。操作系统660用于控制和分派计算机602的资源。应用662包括系统和应用软件中的一者或两者,并且可以通过存储在存储器630和/或(多个)大容量存储设备650中的用于执行一个或多个动作的程序模块664和数据666,来利用操作系统660对资源的管理。因此,应用662可以根据由此提供的逻辑将通用计算机602转变为专用机器。
[0131]
所要求保护的主题的全部或部分可以使用标准编程和/或工程技术来实施,以产生软件、固件、硬件或其任何组合,以控制计算机实现所公开的功能。通过示例而非限制的方式,系统100或其部分可以是应用662或形成应用662的一部分,并且包括存储在存储器和/或(多个)大容量存储设备650中的一个或多个模块664和数据666,该一个或多个模块664和数据666的功能可以在由一个或多个处理器620执行时实现。
[0132]
在一些实施例中,(多个)处理器620可以对应于片上系统(soc)或类似架构,该类
似架构在单个集成电路基板上包括或换言之集成硬件和软件两者。这里,除了其他方面之外,(多个)处理器620可以包括至少类似于(多个)处理器620和存储器630的一个或多个处理器以及存储器。常规处理器包括最少量的硬件和软件,并且广泛依靠于外部硬件和软件。相比之下,处理器的soc实施方式更强大,因为它将硬件和软件嵌入在其中,该硬件和软件在最少或不依靠于外部硬件和软件的情况下实现特定功能。例如,系统100和/或相关联的功能可以嵌入在soc架构中的硬件内。
[0133]
计算机602还包括通信耦合到系统总线640并且便于与计算机602交互的一个或多个接口部件670。通过示例的方式,接口部件670可以是端口(例如,串行、并行、pcmcia、usb、火线等)或接口卡(例如,声音、视频等)等。在一个示例实施方式中,接口部件670可以被体现为用户输入/输出接口,以使得用户能够将命令和信息输入到计算机602中,比如通过一个或多个手势或语音输入的方式,通过一个或多个输入设备(例如,诸如鼠标之类的指向设备、跟踪球、触笔、触摸板、键盘、麦克风、操纵杆、游戏板、卫星碟、扫描仪、相机、其他计算机等)。在另一示例实施方式中,接口部件670可以被体现为输出外围接口,以除了其他之外,向显示器(例如,lcd、led、等离子体等)、扬声器、打印机和/或其他计算机提供输出。更进一步地,接口部件670可以被体现为网络接口,以使得能够诸如通过有线或无线通信链路与其他计算设备(未示出)通信。
[0134]
以上描述的内容包括所要求保护的主题的方面的示例。当然,为了描述所要求保护的主题的目的,不可能描述部件或方法的每一种可想到的组合,但是本领域的普通技术人员可以认识到,所公开的主题的很多另外的组合和排列是可能的。因此,所公开的主题旨在包括落入所附权利要求的精神和范围内的所有这样的更改、修改和变化。此外,在详细描述或权利要求中使用术语“包括(includes)”的程度上,这样的术语旨在以类似于术语“包括(comprising)”的方式是包括性的,如“包括(comprising)”在权利要求中用作过渡词时所解释的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献