CN116569141A - 工作流修补 - Google Patents
工作流修补 Download PDFInfo
- Publication number
- CN116569141A CN116569141A CN202180074778.5A CN202180074778A CN116569141A CN 116569141 A CN116569141 A CN 116569141A CN 202180074778 A CN202180074778 A CN 202180074778A CN 116569141 A CN116569141 A CN 116569141A
- Authority
- CN
- China
- Prior art keywords
- workflow
- nodes
- patches
- target workflow
- target
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
提供了用于由计算***中的一个或多个处理器修补计算环境中的工作流的方法。可以从源工作流提取一个或多个补丁。多个节点中的目标工作流可以通过将一个或多个补丁应用于目标工作流被静态地或动态地修改。根据应用一个或多个补丁,在目标工作流活动时,可以在目标工作流中添加、移除或修改所述多个节点中的一个或多个节点。
Description
背景技术
本发明总体上涉及计算***,并且更具体地涉及使用计算处理器在计算***中对计算环境中的工作流进行静态或动态修补(patching)的不同实施例。
发明内容
根据本发明的实施例,提供了一种用于计算***中的工作流的静态或动态修补的方法。从源工作流提取的一个或多个补丁可以应用于多个节点中的目标工作流。响应于应用所述一个或多个补丁,在目标工作流活动时,可以添加、移除或修改目标工作流中的多个节点中的一个或多个。
在另外的实施例中,可以从源工作流提取一个或多个补丁。多个节点中的目标工作流可以通过将所述一个或多个补丁应用于目标工作流来静态或动态地修改。响应于应用所述一个或多个补丁,当目标工作流活动时,所述多个节点中的一个或多个节点可在目标工作流中被添加、移除或修改。
在另一实施例中,可以从源工作流提取一个或多个补丁。多个节点中的目标工作流可以通过将所述一个或多个补丁应用于目标工作流来静态或动态地修改。响应于应用所述一个或多个补丁,可以修改目标工作流中的多个节点的那些节点的配置。响应于应用所述一个或多个补丁,可以识别和选择性地移除在目标工作流中活动或不活动的所述多个节点中的那些节点和任何依赖节点。
实施例包括计算机可用程序产品。该计算机可用程序产品包括计算机可读存储装置,以及存储在该存储装置上的程序指令。
实施例包括计算机***。该计算机***包括处理器、计算机可读存储器和计算机可读存储装置,以及存储在该存储装置上用于由处理器经由存储器执行的程序指令。
由此,除了上述示例性方法实施例之外,还提供了用于计算环境中的工作流的静态或动态修补的其他示例性***和计算机产品实施例。
附图说明
图1是描绘了根据本发明的实施例的示例性云计算节点的框图;
图2描绘了根据本发明的实施例的云计算环境;
图3描绘了根据本发明的实施例的抽象模型层;
图4是描绘本发明的各个方面之间的示例性功能关系的附加框图;
图5A-5E是描绘可实现本发明的各方面的处理器对计算环境中的工作流进行静态或动态修补的示例性***和功能的流程框图;
图6是描绘可实现本发明的各方面的处理器对计算环境中的工作流进行静态或动态修补的示例性方法的流程图;
图7是描绘可实现本发明的各方面的处理器对计算环境中的工作流进行静态或动态修补的示例性方法的流程图;以及
图8是描绘可实现本发明的各方面再次通过处理器由计算环境中的处理器对计算环境中的计算环境中的工作流进行静态或动态修补的示例性方法的流程图。
具体实施方式
计算资源通常由供应商以固定的配置级别预先配置。一个方面是每个单独的计算资源(诸如存储器大小、CPU数量、磁盘大小等)具有有限的边界。另一个方面是每个计算平台具有有限数量的物理定制选项。当今的工作负载在这些限制下运行,这随后成为在计算环境中使用诸如存储器交换和高速缓存优化之类的技术的原因。
例如,一般而言,云计算提供无限资源池的幻象并且向用户弹性供应和解除供应资源。这种动态供应对于性能敏感的工作负载(诸如例如,深度学习训练和高性能计算(“HPC”))导致付出代价。这些工作负载要求所供应的资源最接近于可能实现最佳执行时间。这些工作负载具有交替的计算和通信周期,并且进展速率受到具有最慢计算周期和到其他机器的最长通信周期的机器的限制。
工作流管理提供用于建立、执行和监视可被布置为工作流的过程中的定义任务的基础设施。当前工作流***假定过程的模型可用,并且***的主要任务是确保所有活动以正确顺序执行并且过程成功终止。工作流过程的各个任务可以取决于在开始和完成后续任务之前的先前任务的完成。在过程的任何阶段完成任何先前任务的延迟可具有级联效应,其继而可延迟后续任务的完成,因此延迟整个过程的完成。
一些应用已经利用工作流调度器来加速作业性能,例如科学家的研究速率。例如,工作流调度器使得终端用户(例如,科学家)能够使用高性能计算(HPC)和云资源聚焦于特定主题(例如,科学家的研究),而不需要关于HPC/云计算的专业知识。工作流还促进了可再现和便携式管线的想法。这进而使得用户(例如,科学家、研究人员等)能够与任何其他实体(例如,研究团队)共享信息,诸如例如科学家的研究。直观地,工作流对于研究的影响就像容器对于云计算的一样。当然,终端用户(例如科学家)不限于仅使用工作流。用户还可以修改工作流,并且通常这样做,以针对他们的需要调整工作流。可以从库中检索工作流。工作流可以被调整以在一些HPC/云基础设施上启动工作流之前添加、移除、修改节点。一旦工作流终止,研究者/工具分析工作流的输出并且可以使用此信息来改进工作流。该反馈循环可以重复多次,直到达到期望的结果。
当终端用户希望修改活动工作流时,与工作流一起工作变得复杂。这是特别具有挑战性的操作,这是工作流用户通常经由静态修补来停止、修改和然后重启工作流的原因。静态修补要直接得多,但可能导致进度损失,因为停止工作流可能导致节点的任务立即终止。照此,存在使得用户能够静态地(即,在工作流不活动时)或动态地修改工作流的需要。
因而,本发明的各个实施例提供工作流的静态或动态修补。在一个方面,可以从源工作流提取补丁并且将其应用于目标工作流。静态补丁可以1)注入新节点,2)从目标工作流移除节点,3)修改目标工作流中的任何节点。动态补丁1)可以在不要求工作流被停止和重启的情况下被应用,和/或2)可以修改目标工作流中的节点(例如,在动态修补的时刻活跃或不活跃的节点,或在其生命周期中活动地生成多个任务的节点)的未来任务。在一个方面,“补丁”(静态或动态)可以是计算机应用补丁,该计算机应用补丁是被设计成修复/解决计算机程序的问题的一个软件。例如,该补丁可以用于改正安全漏洞、改正编程缺陷(错误)、改进现有功能、或改变计算机程序的软件行为。可以将补丁应用于管理程序(hypervisor)、操作***、中间件和不同的其他计算机软件应用。
在一个方面中,工作流可以使用机器学习操作(例如,人工智能)被静态地(即,当工作流不活动时)或动态地修改。可以采用机器学习操作来学习静态地或动态地将从源工作流所提取的补丁修改到目标工作流。可以使用机器学习操作来识别目标工作流。
在另外的方面,所示实施例的机制允许从源工作流提取鲁棒的补丁并经由静态修补或动态修补来应用所提取的补丁。动态修补可应用于目标工作负载,而无需在执行动态修补时停止和/或重新启动活动的目标工作流。以这种方式,提供从源工作流到目标工作流的工作流静态或动态修补,减少了使用HPC和云基础设施的时间(例如,开发时间)、测试、调试,和/或在其生产周期期间利用工作流的研究/产品的“上市时间”时间。这些改进还可降低研究和开发的成本。
如本文所使用的,工作流可以是有向无环图。图的节点可以是应用/服务,并且图的边可以指示节点之间的一个或多个依赖性。任务(例如,工作流的任务)可以是应用/服务的执行。工作流编排器/管理器可以是解释工作流的配置及其节点以创建、管理和监视图的节点的框架。
调度器(例如,工作流调度器)可以从工作流编排器/管理器接收指令,并且可以处理、处置和/或编排任务的调度、管理和监视。节点的配置或“节点配置”可以是定义节点的行为和节点的任务的信息,包括但不限于可执行任务、对于可执行任务的自变量、容器映像、环境变量、文件依赖性、对其他节点的输入依赖性、后端选项(即,队列、集群选择器等)、用于改善调度的元数据和/或错误检测和纠正等。
另外,在另一方面,本发明提供了将打补丁的节点的输入自动连接到目标工作流中的节点的输出。在向打补丁的节点提供输入的目标节点的配置和所述打补丁的节点的输入节点的预期配置之间可以检测和解决一个或多个冲突。所示实施例的机制进一步理解工作流的外部依赖性的不同概念(例如,应当存在于文件***上的文件、在其执行时提供给工作流的文件等)。如本文所描述的,动态修补也不要求针对修补操作实现附加的软件/应用代码,动态修补也不要求针对要发生的修补操作停止和重启活动工作流。由此,动态修补支持并实现现有节点从活动目标工作流的移除,以及支持和实现活动目标工作流中的活动节点的修改。因此,动态修补可以通过a)添加新节点、b)修改现有节点、c)移除现有节点而不启动、停止或重启活动目标工作负载来动态修改工作流。
在另外的方面,工作流的静态或动态修补使得所得工作流被认为是全新的工作流,其可以重用工件/节点。由此,使得工作流的静态或动态修补能够以更大的自由度操作并且执行对目标工作流的更明显的改变。工作流的静态或动态修补可以在任何子工作流中添加新节点,这将它们的输入自动映射到目标工作流中的现有节点,移除目标工作流的任何节点,和/或改变整个目标工作流的签名/结构和功能等。
此外,工作流的静态或动态修补可以基于以下规则和定义的集合来操作。“后端”使用一些物理/虚拟硬件执行过程或服务。后端可以是例如OpenShift、Kubernetes、云/混合云、负载分担设施(“LSF”)等。任务可以是在后端执行的过程或服务。工作流节点可包括后端用来执行任务的信息。工作流管理器协调工作流的执行并将工作流节点的各个任务的调度决策委托给调度器。调度器理解工作流的节点之间的依赖性。调度器确定节点何时准备好执行并且决定何时在某个后端上执行节点的任务。在线/动态修补可以指当工作流是活动的(即,节点中的至少一个是准备好执行或者正在后端上活动地运行任务)时修改工作流的过程。修补可以向工作流图添加新节点,修改工作流中的现有节点,或删除工作流中的现有节点。被修改的现有节点将仅具有由在将来(即,在补丁应用终止后)执行的任务所反映的修改。
应提前理解的是,虽然本公开包括关于云计算的详细描述,但是本文所引用的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知的或以后开发的任何其他类型的计算环境来实现。
云计算是一种服务交付模型,用于使得能够方便地、按需地访问可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储装置、应用、虚拟机和服务)的共享池,其能够以最小的管理努力或与服务的提供商的交互快速地供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特性如下:
按需自助服务:云消费者可以单方面地根据需要自动地提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者的人类交互。
广泛的网络接入:能力可通过网络获得并且通过标准机制接入,该标准机制促进异构瘦客户机平台或厚客户机平台(例如,移动电话、膝上型计算机和PDA)的使用。
资源池:提供者的计算资源被池化以使用多租户模型来服务于多个消费者,其中不同的物理和虚拟资源根据需要动态地指派和重新指派。存在位置独立性的感觉,因为消费者通常不具有对所提供的资源的确切位置的控制或了解,但可能能够以较高抽象级别(例如,国家、州或数据中心)指定位置。
快速弹性:能够快速和弹性地提供能力,在一些情况下自动地快速缩小和快速释放以快速放大。对于消费者而言,可用于供应的能力通常显得不受限制并且可以在任何时间以任何数量购买。
测量的服务:云***通过在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某个抽象级别处利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用,为所利用的服务的提供者和消费者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。可通过诸如web浏览器(例如,基于web的电子邮件)之类的瘦客户端接口从不同客户端设备访问应用。消费者不管理或控制包括网络、服务器、操作***、存储或甚至单独的应用能力的底层云基础设施,可能的例外是有限的用户特定应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建的或获取的使用由提供商支持的编程语言和工具创建的应用部署到云基础设施上。消费者不管理或控制包括网络、服务器、操作***或存储的底层云基础设施,但是对所部署的应用和可能的应用托管环境配置具有控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其他基本计算资源,所述软件可以包括操作***和应用。消费者不管理或控制底层云基础设施,而是具有对操作***、存储、所部署的应用的控制以及对所选联网组件(例如,主机防火墙)的可能受限的控制。
部署模型如下:
私有云:云基础架构仅为组织运作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
社区云:云基础架构被若干组织共享并支持共享了关注(例如,任务、安全要求、策略、和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公共云:使云基础架构对公众或大型行业组可用,并且由出售云服务的组织拥有。
混合云:云基础架构是两个或更多个云(私有、社区或公共)的组合,这些云保持唯一实体但通过使数据和应用能够移植的标准化或专有技术(例如,云突发以用于云之间的负载平衡)绑定在一起。
云计算环境是面向服务的,集中于无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
现在参见图1,示出了云计算节点的示例的示意图。云计算节点10仅仅是合适的云计算节点的一个示例,并不旨在对本文所述的本发明的实施例的使用或功能的范围提出任何限制。无论如何,云计算节点10能够被实现和/或执行上文阐述的任何功能。
在云计算节点10中,存在计算机***/服务器12,其可与许多其他通用或专用计算***环境或配置一起操作。可以适用于计算机***/服务器12的公知的计算***、环境和/或配置的示例包括但不限于个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持式或膝上型设备、多处理器***、基于微处理器的***、机顶盒、可编程消费电子产品、网络PC、小型计算机***、大型计算机***和包括上述任何***或设备的分布式云计算环境等。
计算机***/服务器12可以在由计算机***执行的计算机***可执行指令(例如程序模块)的一般上下文中描述。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机***/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机***存储介质中。
如图1所示,云计算节点10中的计算机***/服务器12以通用计算设备的形式示出。计算机***/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、***存储器28和将包括***存储器28的不同***组件耦合到处理器16的总线18。
总线18表示若干类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、***总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,此类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线以及***组件互连(PCI)总线。
计算机***/服务器12通常包括各种计算机***可读介质。这样的介质可以是可由计算机***/服务器12访问的任何可用介质,并且其包括易失性和非易失性介质、可移动和不可移动介质。
***存储器28可包含呈易失性存储器形式的计算机***可读媒体,例如随机存取存储器(RAM)30和/或高速缓冲存储器32。计算机***/服务器12可以进一步包括其他可移动/不可移动、易失性/非易失性计算机***存储介质。仅通过示例的方式,存储***34可以被提供用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)中读取和向其写入。尽管未示出,可以提供用于从可移动非易失性磁盘(例如,“软盘”)读取或向其写入的磁盘驱动器,以及用于从可移动非易失性光盘(如CD-ROM、DVD-ROM或其他光学介质)读取或向其写入的光盘驱动器。在这样的情况下,每一个可以通过一个或多个数据介质接口连接到总线18。如以下将进一步描绘和描述的,***存储器28可以包括具有被配置为执行本发明的实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
具有一组(至少一个)程序模块42的程序/实用程序40,可以存储在***存储器28中,作为示例而非限制,以及操作***、一个或多个应用程序、其他程序模块和程序数据。操作***、一个或多个应用程序、其他程序模块和程序数据中的每一个或它们的一些组合可以包括网络环境的实现方式。程序模块42通常执行如在此所描述的本发明的实施例的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14(例如键盘、定点设备、显示器24等)通信;和/或使得计算机***/服务器12能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可经由输入/输出(I/O)接口22进行。此外,计算机***/服务器12可以通过网络适配器20与一个或多个网络通信,例如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如互联网)。如图所示,网络适配器20通过总线18与计算机***/服务器12的其他组件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机***/服务器12结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器和数据归档存储***等。
现在参见图2,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,本地计算设备诸如例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机***54N。节点10可彼此通信。它们可以物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上所述的私有云、社区云、公共云或混合云、或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为云消费者不需要为其维护本地计算设备上的资源的服务。应当理解,图2中所示的计算设备54A-N的类型仅旨在是说明性的,并且计算节点10和云计算环境50可通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参见图3,示出了由云计算环境50(图2)提供的一组功能抽象层。应当事先理解,图3中所示的组件、层和功能仅旨在是说明性的,并且本发明的实施例不限于此。如所描述,提供以下层和对应功能:
设备层55包括物理和/或虚拟设备,该物理和/或虚拟设备嵌入有和/或还包括独立的电子器件、传感器、致动器、和其他对象以在云计算环境50中执行不同任务。设备层55中的每个设备将联网能力结合到其他功能抽象层,使得从设备获得的信息可以被提供给其他功能抽象层,和/或来自其他抽象层的信息可以被提供给设备。在一个实施例中,包括设备层55的不同设备可以合并统称为“物联网”(IoT)的实体网络。如本领域普通技术人员将理解的,这样的实体网络允许数据的互通、收集和传播以实现各种各样的目的。
如所示的设备层55包括如图所示的传感器52、致动器53、具有集成处理、传感器和联网电子装置的“学习”恒温器56、相机57、可控家用插座/插孔58、以及可控电开关59。其他可能的装置可以包括但不限于各种另外的传感器装置、网络装置、电子装置(如远程控制装置)、另外的致动器装置、所谓的“智能”电器(如冰箱或洗衣机/烘干机)、以及多种其他可能的互连对象。
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:大型机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作***74;以及虚拟客户端75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价82在云计算环境内利用资源时提供成本跟踪,并为这些资源的消费开账单或***。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和***管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(SLA)规划和履行85提供云计算资源的预安排和采购,根据该SLA预期该云计算资源的未来要求。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟课堂教育交付93;数据分析处理94;事务处理95;以及,在本发明的所示实施例的上下文中,用于计算环境中(例如,神经网络架构中)的工作流的静态或动态修补的不同工作负载和功能96。此外,用于计算环境中的工作流的静态或动态修补的工作负载和功能96可以包括诸如分析、深度学习以及如将进一步描述的用户和设备管理功能等操作。本领域普通技术人员将认识到,用于计算环境中的工作流的静态或动态修补的工作负载和功能96还可以与不同抽象层的其他部分(例如硬件和软件60、虚拟化70、管理80和其他工作负载90(例如数据分析处理94)中的那些部分)结合工作,以实现本发明的所示实施例的不同目的。
如前所述,本发明提供了用于在计算***中提供计算环境中的工作流的静态或动态修补的新颖解决方案。可以从源工作流提取一个或多个补丁。多个节点中的目标工作流可以通过将所述一个或多个补丁应用于目标工作流被静态地或动态地修改。响应于应用所述一个或多个补丁,当目标工作流活动时,所述多个节点中的一个或多个可在目标工作流中被添加、移除或修改。
现在转向图4,示出了描绘根据所示实施例的不同机制的计算环境中(例如,神经网络架构中)的工作流的静态或动态修补的***400的示例性功能组件的框图。在一个方面中,图1-3中所描述的组件、模块、服务、应用程序和/或功能中的一个或多个可用在图4中。如将看到的,许多功能块也可以被认为是功能的“模块”或“组件”,具有与之前在图1-3中描述的相同的描述性意义。
示出了工作流修补服务410,其结合了处理单元420(“处理器”)以执行根据本发明的各个方面的不同计算、数据处理和其他功能。在一个方面中,处理器420和存储器430可以在工作流修补服务410的内部和/或外部,以及在计算***/服务器12的内部和/或外部。工作流修补服务410可被包括在计算机***/服务器12中和/或在计算机***/服务器12的外部,如图1所示。处理单元420可以与存储器430通信。工作流修补服务410可以包括管理器组件440(例如,编排器)、配置组件450、调度器组件460和节点组件470。
在一个方面,***400可提供虚拟化计算服务(即,虚拟化计算、虚拟化存储、虚拟化联网等)。更具体地,***400可提供在硬件基板上执行的虚拟化计算、虚拟化存储、虚拟化联网和其他虚拟化服务。
在一个方面,与节点组件470相关联地,管理器组件440可以识别节点或节点组中的一个或多个源工作流(例如,具有一个或多个任务的源工作流)。管理器组件440可以从源工作流提取一个或多个补丁。管理器组件440可以将从源工作流提取的一个或多个补丁应用于多个节点中的目标工作流。即,管理器组件440可以动态地或静态地将一个或多个补丁应用于目标工作流。
与节点组件470相关联地,管理器组件440可以识别一个或多个接合点(splicepoint)以应用所述一个或多个补丁。接合点可以是目标工作流中的节点,其向在所述一个或多个补丁中识别的节点提供输入。
与配置组件450相关联地,管理器组件440可以响应于应用所述一个或多个补丁在目标工作流活动时添加、移除或修改目标工作流中的多个节点中的一个或多个。
与调度器组件460相关联地,管理器组件440可以调度节点或节点组中的每个工作流任务。管理器组件440与调度器组件460相关联地可以在应用所述一个或多个补丁时,限制对所述多个节点的额外节点的任何调度。
与配置组件450和/或节点组件470相关联地,管理器组件440可以识别在所述一个或多个补丁中定义的元数据与目标工作流中的多个节点中的那些节点之间的任何冲突。与配置组件450和/或节点组件470相关联地,管理器组件440还可以生成一个或多个解决动作以解决任何识别的冲突,以使得所述一个或多个补丁能够与目标工作流兼容。
与配置组件450和/或节点组件470相关联地,管理器组件440可以初始化包括在要被包括在目标工作流中的一个或多个补丁中的多个节点。在一个方面中,目标工作流是活动工作流。与调度器组件460和/或节点组件470相关联地,管理器组件440可以调度在与所述一个或多个补丁相关联的目标工作流中活动的节点或节点组。
在操作中,仅通过示例的方式,可使用如图4中所示的工作流修补服务410和工作流修补服务410的一个或多个组件执行以下步骤。在步骤1)中,工作流修补服务410可从源工作流提取补丁。在步骤2)中,工作流修补服务410(经由管理器组件440(例如,编排器))可指示调度器组件460不调度任何新节点。在步骤3)中,工作流修补服务410可从目标工作流移除任何“待删除”(例如,需要从工作流删除的节点)和与“待删除节点”相关联的任何下游节点。在步骤4)中,工作流修补服务410可识别目标工作流中的一个或多个接合点(例如,目标工作流中的向补丁中定义的节点提供输入的节点)。在步骤5),工作流修补服务410可识别在提取的补丁中定义的元数据与目标工作流中的节点之间的冲突(因为保持未处理的任何冲突禁止补丁的应用)。在步骤6)中,工作流修补服务410可解决冲突(例如,产生动作以使得补丁能够与目标工作流兼容)。在步骤7)中,工作流修补服务410可初始化补丁中存在的节点,但不初始化活动工作流。在步骤8)中,工作流修补服务410可修改目标工作流中与补丁冲突的节点的配置。在步骤9)中,工作流修补服务410可以(经由管理器组件440(例如,编排器))指示调度器组件460调度任何准备好执行的节点。
应注意,对于动态修补,可执行上述步骤中的每一者,而静态修补算法可仅涉及步骤1、3、4、5、6、7和8(按步骤1、3、4、5、6、7和8的此次序或任何其他选定/布置的次序)。还应注意,在一个实施例中,源工作流和目标工作流可以是相同的工作流。然而,在另一实施例中,源工作流和目标工作流可以是不同的工作流。
现在转向图5A-5E,流程框图500、515、525、535和545进一步描绘来自以上步骤1-9的并且被更详细描述的工作流的静态或动态修补的示例性***和功能。在一个方面中,图1-3中所描述的组件、模块、服务、应用和/或功能中的一个或多个可用在图4中。如将看到的,许多功能块还可以被认为是功能的“模块”或“组件”或“节点”,具有与先前在图1至图3中所描述的相同的描述性意义。
现在转向图5A-5B,工作图500是描述用于从源工作流500提取补丁的步骤1)的示例性源工作流。
首先,可以识别具有一个或多个节点(诸如例如节点502A-G和节点504A-C)的源工作流。
第二,用于提取的工作流的子图,诸如包括节点502A-G的子图,该子图选择在将组件集合“A”和“B”连接的子图中存在的节点(例如,节点502A-G),其中A的输出(最终)被B(它包括集合A和B)所消费。而且,不会被提取且包括在补丁中的那些节点可以被识别和标记,诸如例如节点504A-C。
第三,步骤1)还可以包括识别一个或多个输入节点(I),例如针对源工作流500的子图的节点502A。
第四,子图依赖性可被划分成内部依赖性512和外部依赖性510(例如,用于外部依赖性的元数据)。即,内部依赖性512可以是对包括在源工作流包中的数据/文件/二进制文件的引用。外部依赖性510可以是对不是源工作流包的一部分的数据、文件、二进制文件的引用(例如,到执行平台文件***的绝对路径、或对在执行时间提供的输入数据的引用)。
第五,可以识别子图的一个或多个工作流元素(例如,组件配置、环境变量定义、节点变量等)。第六,所收集的信息可转换成一组文件,这组文件包含:a)所述子图的节点定义以及表示对于所述子图的生产者节点的依赖性的元数据,b)子图输入节点的节点定义,以及c)源工作流内部的依赖性(例如,二进制文件、数据文件)。
应当注意,用于指示调度器组件460不调度任何新节点的步骤2)可被限制或排他地用于在线/动态修补操作。照此,用于执行指示调度器组件460不调度任何新节点的步骤2)的操作可以包括以下操作。
首先,目标工作流的编排器/管理器(例如,图4的管理器组件440)可通知调度器(例如,图5的调度器组件460)正在应用补丁。调度器作出以下反应:a)一旦节点对上游节点的输入依赖性被满足(例如,现有活动节点,并且相关联的任务不以任何方式受影响),就推迟将节点加标签、标记或标识为“准备好”,b)推迟调度来自完成的节点的事件的处理直到补丁完成。
在补丁正在发生时,新节点的任务不被调度执行,即使它们的依赖性被满足以确保“任务的配置”在任务被调度执行时不改变。而且,任务已经被提交到后端以供执行的节点不受影响。调度器可以代表节点继续提交任务,就好像没有发生补丁。这样,由于修补过程,目标工作流不经历任何减速。
现在转向图5C,流程框图525描述了用于从目标工作流移除任何“待删除”(例如,需要从工作流删除的节点)和与“待删除节点”相关联的任何下游节点的步骤3)。
如图5C所示,所示实施例的机制提供将新节点添加到目标工作流和修改现有节点,而且还有从工作流图移除节点的能力。例如,“待删除”节点的初始列表(例如,待删除节点的识别、加标签、标记)可以与如在步骤1)中描述的定义子图的过程类似地被指定,但是不是引用源工作流中的节点,而是在目标工作流中识别引用节点。在这个操作期间,编排器/管理器发现并识别目标工作流中的对待删除节点的列表具有依赖性的所有节点,并将它们添加到“待删除”节点的列表。
通过目标工作流的编排器/管理器(例如,图4的管理器组件440)通知或通报调度器,与节点(例如,“待删除”节点的列表)相关联的任务将在目标工作流中终止,并且通知或通报调度器将“待删除”节点的列表视为正常终止。换言之,调度器不将“待删除”节点的列表视为异常终止和错误。依赖性分析可以由调度器执行并且确定初始“待删除”节点(例如,用户/机器学习***期望/意图从目标工作流移除的节点,诸如例如节点502F、502I、502J和502K)的输出传播到所识别的“待删除”节点的列表的输入。调度器被目标工作流的编排器/管理器(例如,图4的管理器组件440)通知或通报关闭和终止与如图5C中所描绘的“待删除”节点的列表相关联的任务作为结果目标工作流(“结果”),诸如例如节点502A-H。
应当注意,“初始待删除”节点可以是用户和/或机器学习***期望从目标工作流移除的节点的一个或多个集合。在依赖性分析完成之后,“待删除”节点包括“初始待删除”节点和直接/间接消费“初始待删除”节点的输出的任何其他节点。
例如,图5C中的“初始待删除”节点是节点502D(例如,被选择用于删除/移除的节点)。应用依赖性分析(即,跟踪流过其下游工作流节点的502D的输出),发现节点502F、502I、502J和502K全部直接/间接地依赖502D。具体地,502F直接消费502D的输出,而其他节点间接地(即,连接502D与这些节点中的任一个的路径包含至少一个以上的节点)。
现在转向图5D,流程框图535描述了步骤4),用于识别目标工作流中的一个或多个接合点(例如,目标工作流中的向补丁中定义的节点提供输入的节点)。
在一个方面,一个或多个接合点是目标工作流的节点。所述一个或多个接合点可被自动识别,例如,通过机器学习。接合点是担当存在于补丁中的节点的输入节点的节点。例如,自动接合点识别可以包括以下操作中的一个或多个。首先,可以针对在补丁内部包括或识别的节点的每个输入节点(例如,在下文中称为并标记为“新节点的输入”)生成特征向量。该特征向量可以是一组字段,例如:[“节点的命名空间”、“节点的名称”、“可执行文件”、“自变量”]。
接下来,可以针对目标工作流图的所有节点生成特征向量。在另外的实施例中,可以从补丁的一个或多个根节点生成一个或多个输入特征向量并且将其与目标中的一个或多个输出特征向量进行比较(例如,将域匹配至共域(co-domain))。(如在机器学习中所使用的)“特征”可以例如在任何实体的特性中被提及。“特征向量”可以是特征的集合。可以执行操作以识别、发现、定位其特征向量与“新节点的输入”的特征向量类似的目标工作流的那些节点,其中相似性因子高于所选阈值(例如,“特征向量匹配”阈值)。可以记录所识别的匹配对(例如,具有相似特征向量的节点)。另外,用户和/或机器学习操作可以通过提供目标工作流节点标识符(命名空间和名称)和“新节点的输入”标识符的对来指定来自目标工作流的哪些节点用作包含在补丁中的节点的输入。
因此,如图5D所示,识别补丁中的节点(例如,节点502Q-W)的配置及其输入节点(例如,节点502Q)。例如,来自目标工作流的节点502E具有包括在补丁中的节点502Q的匹配特征向量。节点502Q包括并识别节点502Q的每个节点依赖性。
此时,应当注意,补丁包含从源工作流提取的修补节点和“新节点的输入”的信息。如果补丁中的任何节点已经存在于目标工作流中,则有存在冲突的机会。在“新节点的输入”的定义与在步骤4期间发现的匹配节点之间也存在冲突的机会。在一个方面,仅作为示例,冲突是两个节点的配置之间的差异,其中一个节点是补丁的一部分,而另一个节点是目标工作流的一部分。所以,在步骤4)之后,可以执行步骤5的操作以识别在所提取的补丁中定义的元数据与目标工作流中的节点之间的冲突。此外,步骤5)可以遍历目标工作流中的节点并记录目标工作流和补丁之间的任何冲突。
再次,在步骤5)之后,可以执行步骤6),其中工作流修补服务410可解决冲突(例如,产生动作以使得补丁能够与目标工作流兼容)。在这样做时,可以有多种方式来解决此类冲突。例如,可以采用采用语义知识和语言处理技术的工具(例如,机器学习操作工具)来确定如何适当地合并两个节点的冲突配置。在另外的方面,机器学习操作可以用于检查任何冲突信息,并且通过以下任一者确定如何解决冲突:1)接受目标节点的配置,2)接受源节点的配置,或3)输入将两个节点组合的新配置。所以,步骤6的目的是确保补丁的组件/节点和目标工作流的现有节点可以各自能够成功地执行其任务中的每一个。
现在转向图5E,流程框图545描述了步骤7),用于初始化存在于补丁中的节点,但不初始化活动工作流。对于静态修补,每个新节点可以被***到目标工作流中。动态修补操作提供包括在补丁中、但不存在于目标工作流中的节点的列表。编排器/管理器可以更新其自身的内部数据结构并利用以下步骤来初始化“新节点的输入”,所述步骤包括但不限于:a)后端的初始化,b)对文件***上的文件的改变(例如,从补丁复制“内部依赖性”(参见步骤1)或更多信息)、c)对目标工作流的元数据的更新、和/或d)对调度器的数据结构的更新等。
在步骤7之后,再次,步骤8)可以用于修改目标工作流中与补丁冲突的节点的配置。包括在步骤8)中的是目标工作流的编排器/管理器可修改与包含在补丁中的信息冲突的节点的配置。目标工作流的编排器/管理器可重放和检查在步骤6)中做出的决定。编排器/管理器可以更新其内部数据结构并为冲突节点中的每一个执行初始化步骤,包括但不限于:a)后端的初始化,b)对文件***上的文件的改变(例如,从补丁复制“内部依赖性”(参见步骤1)或更多信息)、c)对目标工作流的元数据的更新、和/或d)对调度器的数据结构的更新等。因此,步骤8)完成目标工作流的变换以包括在补丁中编码的信息。
此外,用于指示调度器组件460调度任何准备好执行的节点的步骤9)可以仅应用于动态修补操作。包括在步骤9)中的是目标工作流的编排器/管理器可通知调度器动态修补现在完成。调度器可以a)追溯地处置/处理在步骤2)期间推迟的调度事件,以及b)移除/解除对在动态修补的过程开始之前尚未准备好执行的节点的调度任务的禁止/限制。
现在转到图6,描绘了用于使用处理器修补计算环境中的工作流的方法600,其中可以实现所示实施例的各个方面。功能600可以实现为在机器上作为指令执行的方法(例如,计算机实现的方法),其中指令被包括在至少一个计算机可读介质或一个非暂态机器可读存储介质上。功能600可以在框602中开始。
从源工作流提取的一个或多个补丁可以应用于多个节点中的目标工作流,如在框604中。目标工作流中的多个节点中的一个或多个可以根据应用一个或多个补丁在目标工作流活动时被添加、移除(如经由机器学习和/或由用户/管理员所指示的)、或修改,如在框606中。功能600可以结束,如在框608中。
现在转向图7,描绘了用于使用处理器静态或动态地修补计算环境中的工作流的附加方法700。功能700可以被实现为在机器上作为指令执行的方法(例如,计算机实现的方法),其中指令被包括在至少一个计算机可读介质或一个非暂态机器可读存储介质上。功能700可在框702中开始。
如在框704中,可以从源工作流提取一个或多个补丁。多个节点中的目标工作流可以通过将一个或多个补丁应用于目标工作流被静态地或动态地修改,如在框706中。多个节点中的一个或多个可以根据应用一个或多个补丁在目标工作流活动时在目标工作流中被添加、移除或修改,如在框708中。功能700可结束,如在框710中。
现在转向图8,描绘了用于使用处理器静态或动态地修补计算环境中的工作流的附加方法800。功能800可以被实现为在机器上作为指令执行的方法(例如,计算机实现的方法),其中所述指令被包括在至少一个计算机可读介质或一个非暂态机器可读存储介质上。功能800可在框802中开始。
可以从源工作流提取一个或多个补丁,如在框804中。多个节点中的目标工作流可以通过将一个或多个补丁应用于目标工作流被静态地或动态地修改,如在框806中。目标工作流中的多个节点中的那些节点的配置可根据应用一个或多个补丁被修改,如在块808中。响应于应用一个或多个补丁,可以识别和移除在目标工作流中活动或不活动的所述多个节点中的那些节点和任何依赖节点,如在框810中。在一个方面,可以基于机器学习、用户偏好而不仅仅因为节点固有地不活动而移除活动或不活动的(例如,不期望的节点)。功能800可结束,如在框812中。
在一个方面,结合图6-8的至少一个框和/或作为图6-8的至少一个框的一部分,600、700和/或800的操作可包括以下的每个。600、700和/或800的操作可以从源工作流提取一个或多个补丁,并且动态地或静态地将一个或多个补丁应用于目标工作流。
600、700和/或800的操作可以在应用一个或多个补丁时限制对所述多个节点的额外节点的任何调度并且识别应用一个或多个补丁的接合点。接合点可以是目标工作流中的向在一个或多个补丁中识别的一个或多个节点提供输入的节点。600、700和/或800的操作可以识别在一个或多个补丁中定义的元数据与目标工作流中的所述多个节点中的那些节点之间的任何冲突,并且生成一个或多个解决动作以解决任何所识别的冲突,以使得所述一个或多个补丁能够与目标工作流兼容。
600、700和/或800的操作可以为目标工作流图的所有节点生成特征向量。在另外的实施例中,600、700和/或800的操作可以从补丁的一个或多个根节点生成一个或多个输入特征向量,并且将所述一个或多个输入特征向量与目标中的一个或多个输出特征向量进行比较(例如,将域与共域匹配)。
600、700和/或800的操作可以初始化要包括在目标工作流中的一个或多个补丁中所包括的多个节点,其中目标工作流是活动的,并且调度与一个或多个补丁相关联的目标工作流中活动的所述多个节点中的那些节点。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质。
计算机可读存储媒体可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储媒体不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输媒体传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)、以及常规的过程式程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的***、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的***来实现。
已经出于说明的目的呈现了本发明的各种实施方式的描述,但并不旨在是详尽的或者限于所公开的实施方式。在不脱离所描述的实施例的范围的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。
Claims (25)
1.一种用于通过一个或多个处理器修补计算环境中的工作流的方法,包括:
将从源工作流提取的一个或多个补丁应用于多个节点中的目标工作流;以及
根据应用所述一个或多个补丁,当所述目标工作流活动时,添加、移除或修改所述目标工作流中的所述多个节点中的一个或多个。
2.根据权利要求1所述的方法,进一步包括从所述源工作流提取所述一个或多个补丁。
3.根据权利要求1所述的方法,进一步包括动态地或静态地将所述一个或多个补丁应用于所述目标工作流。
4.根据权利要求1所述的方法,进一步包括在应用所述一个或多个补丁时,限制对所述多个节点的额外节点的任何调度。
5.根据权利要求1所述的方法,进一步包括识别一个或多个接合点以应用所述一个或多个补丁,其中接合点是所述目标工作流中的向在所述一个或多个补丁中识别的节点提供输入的节点。
6.根据权利要求1所述的方法,进一步包括:
识别在所述一个或多个补丁中定义的元数据和所述目标工作流中的所述多个节点中的那些节点之间的任何冲突;以及
生成一个或多个解决动作以解决任何识别的冲突以使得所述一个或多个补丁能够与所述目标工作流兼容。
7.根据权利要求1所述的方法,进一步包括:
初始化在要包括在所述目标工作流中的所述一个或多个补丁中所包括的所述多个节点,其中所述目标工作流是活动的;以及
调度与所述一个或多个补丁相关联的所述目标工作流中活动的所述多个节点中的那些节点。
8.一种用于修补计算环境中的工作流的***,包括:
具有可执行指令的一个或多个计算机,所述可执行指令在被执行时使得所述***:
将从源工作流提取的一个或多个补丁应用于多个节点中的目标工作流;以及
根据应用所述一个或多个补丁,当所述目标工作流活动时,添加、移除或修改所述目标工作流中的所述多个节点中的一个或多个。
9.根据权利要求8所述的***,其中,所述可执行指令在被执行时使所述***从所述源工作流提取所述一个或多个补丁。
10.根据权利要求8所述的***,其中,所述可执行指令在被执行时使所述***动态地或静态地将所述一个或多个补丁应用于所述目标工作流。
11.根据权利要求8所述的***,其中,所述可执行指令在被执行时使所述***在应用所述一个或多个补丁时限制对所述多个节点的额外节点的任何调度。
12.根据权利要求8所述的***,其中,所述可执行指令在被执行时使所述***识别一个或多个接合点以应用所述一个或多个补丁,其中,接合点是所述目标工作流中的向在所述一个或多个补丁中识别的节点提供输入的节点。
13.根据权利要求8所述的***,其中,所述可执行指令在被执行时使所述***:
识别在所述一个或多个补丁中定义的元数据和所述目标工作流中的所述多个节点中的那些节点之间的任何冲突;以及
生成一个或多个解决动作以解决任何识别的冲突以使得所述一个或多个补丁能够与所述目标工作流兼容。
14.根据权利要求8所述的***,其中,所述可执行指令在被执行时使所述***:
初始化在要包括在所述目标工作流中的所述一个或多个补丁中所包括的所述多个节点,其中所述目标工作流是活动的;以及
调度与所述一个或多个补丁相关联的所述目标工作流中活动的所述多个节点中的那些节点。
15.一种用于修补计算环境中的工作流的计算机程序产品,所述计算机程序产品包括:
一个或多个计算机可读存储介质,以及共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括:
将从源工作流提取的一个或多个补丁应用于多个节点中的目标工作流的程序指令;以及
根据应用所述一个或多个补丁,在所述目标工作流活动时,添加、移除或修改所述目标工作流中的所述多个节点中的一个或多个的程序指令。
16.根据权利要求15所述的计算机程序产品,进一步包括用于从所述源工作流提取所述一个或多个补丁的程序指令。
17.根据权利要求15所述的计算机程序产品,进一步包括用于动态地或静态地将所述一个或多个补丁应用于所述目标工作流的程序指令。
18.根据权利要求15所述的计算机程序产品,进一步包括用于在应用所述一个或多个补丁时限制对所述多个节点的额外节点的任何调度的程序指令。
19.根据权利要求15所述的计算机程序产品,进一步包括用于识别一个或多个接合点以应用所述一个或多个补丁的程序指令,其中接合点是所述目标工作流中的向在所述一个或多个补丁中识别的节点提供输入的节点。
20.根据权利要求15所述的计算机程序产品,进一步包括用于以下操作的程序指令:
识别在所述一个或多个补丁中定义的元数据和所述目标工作流中的所述多个节点中的那些节点之间的任何冲突;以及
生成一个或多个解决动作以解决任何识别的冲突以使得所述一个或多个补丁能够与所述目标工作流兼容。
21.根据权利要求15所述的计算机程序产品,进一步包括用于以下操作的程序指令:
初始化在要包括在所述目标工作流中的所述一个或多个补丁中所包括的所述多个节点,其中所述目标工作流是活动的;以及
调度与所述一个或多个补丁相关联的所述目标工作流中活动的所述多个节点中的那些节点。
22.一种用于通过一个或多个处理器修补计算环境中的工作流的方法,包括:
从源工作流提取一个或多个补丁;
通过将所述一个或多个补丁应用于多个节点中的目标工作流来静态地或动态地修改所述目标工作流;以及
响应于应用所述一个或多个补丁,当所述目标工作流活动时,添加、移除或修改所述目标工作流中的所述多个节点中的一个或多个节点。
23.根据权利要求22所述的方法,进一步包括识别一个或多个接合点以应用所述一个或多个补丁,其中接合点是所述目标工作流中的向在所述一个或多个补丁中识别的节点提供输入的节点。
24.根据权利要求22所述的方法,进一步包括:
识别在所述一个或多个补丁中定义的元数据和所述目标工作流中的所述多个节点中的那些节点之间的任何冲突;以及
生成一个或多个解决动作以解决任何识别的冲突以使得所述一个或多个补丁能够与所述目标工作流兼容。
25.一种用于通过一个或多个处理器修补计算环境中的工作流的方法,包括:
从源工作流提取一个或多个补丁;
通过将所述一个或多个补丁应用于多个节点中的目标工作流来静态地或动态地修改所述目标工作流;
响应于应用所述一个或多个补丁,修改所述目标工作流中的所述多个节点中的那些节点的配置;以及
响应于应用所述一个或多个补丁,识别和移除所述目标工作流中活动或不活动的所述多个节点中的那些节点以及任何依赖节点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/949,741 | 2020-11-12 | ||
US16/949,741 US11886867B2 (en) | 2020-11-12 | 2020-11-12 | Workflow patching |
PCT/CN2021/126861 WO2022100439A1 (en) | 2020-11-12 | 2021-10-28 | Workflow patching |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116569141A true CN116569141A (zh) | 2023-08-08 |
Family
ID=81454390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180074778.5A Pending CN116569141A (zh) | 2020-11-12 | 2021-10-28 | 工作流修补 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11886867B2 (zh) |
JP (1) | JP2023548500A (zh) |
CN (1) | CN116569141A (zh) |
DE (1) | DE112021005927T5 (zh) |
GB (1) | GB2616544B (zh) |
WO (1) | WO2022100439A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11762874B2 (en) * | 2021-07-28 | 2023-09-19 | Alteryx, Inc. | Interactive workflow for data analytics |
CN113919728A (zh) * | 2021-10-22 | 2022-01-11 | 长鑫存储技术有限公司 | 工艺流程管理方法及设备 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7281018B1 (en) * | 2004-05-26 | 2007-10-09 | Microsoft Corporation | Form template data source change |
US7562356B2 (en) | 2004-09-22 | 2009-07-14 | Hewlett-Packard Development Company, L.P. | Automatically resolving patch dependencies for a path bundle |
US7565640B2 (en) | 2004-10-01 | 2009-07-21 | Microsoft Corporation | Framework for seamlessly authoring and editing workflows at design and runtime |
US8122446B2 (en) * | 2005-11-03 | 2012-02-21 | International Business Machines Corporation | Method and apparatus for provisioning software on a network of computers |
US7895226B2 (en) * | 2007-11-30 | 2011-02-22 | Sap Ag | System and method for translating and executing update requests |
US8335773B2 (en) | 2008-12-17 | 2012-12-18 | Sap Ag | Stable linking and patchability of business processes through hierarchical versioning |
US9778921B2 (en) * | 2009-06-02 | 2017-10-03 | Apple Inc. | Method for creating, exporting, sharing, and installing graphics functional blocks |
US20110138374A1 (en) | 2009-12-09 | 2011-06-09 | Suprio Pal | Downtime reduction for enterprise manager patching |
US8984503B2 (en) | 2009-12-31 | 2015-03-17 | International Business Machines Corporation | Porting virtual images between platforms |
US8209564B2 (en) * | 2010-02-26 | 2012-06-26 | Red Hat, Inc. | Systems and methods for initiating software repairs in conjunction with software package updates |
US20120259913A1 (en) * | 2011-04-07 | 2012-10-11 | Infosys Technologies, Ltd. | System and method for implementing a dynamic change in server operating condition in a secured server network |
US9710307B1 (en) | 2012-05-07 | 2017-07-18 | Amazon Technologies, Inc. | Extensible workflows for processing content |
EP3198431A1 (en) | 2014-09-24 | 2017-08-02 | Oracle International Corporation | System and method for supporting patching in a multitenant application server environment |
US11237814B2 (en) | 2017-08-17 | 2022-02-01 | Oracle International Corporation | System and method for supporting custom hooks during patching in an application server environment |
US10552779B2 (en) | 2017-10-27 | 2020-02-04 | International Business Machines Corporation | Cognitive learning workflow execution |
US10474977B2 (en) | 2017-10-27 | 2019-11-12 | International Business Machines Corporation | Cognitive learning workflow execution |
US20190163463A1 (en) * | 2017-11-30 | 2019-05-30 | International Business Machines Corporation | Relational patch orchestration |
US11303533B2 (en) * | 2019-07-09 | 2022-04-12 | Cisco Technology, Inc. | Self-healing fabrics |
US11397873B2 (en) * | 2020-02-25 | 2022-07-26 | Oracle International Corporation | Enhanced processing for communication workflows using machine-learning techniques |
-
2020
- 2020-11-12 US US16/949,741 patent/US11886867B2/en active Active
-
2021
- 2021-10-28 CN CN202180074778.5A patent/CN116569141A/zh active Pending
- 2021-10-28 WO PCT/CN2021/126861 patent/WO2022100439A1/en active Application Filing
- 2021-10-28 GB GB2308448.6A patent/GB2616544B/en active Active
- 2021-10-28 JP JP2023526625A patent/JP2023548500A/ja active Pending
- 2021-10-28 DE DE112021005927.0T patent/DE112021005927T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023548500A (ja) | 2023-11-17 |
GB2616544A (en) | 2023-09-13 |
DE112021005927T5 (de) | 2023-10-05 |
US20220147344A1 (en) | 2022-05-12 |
US11886867B2 (en) | 2024-01-30 |
GB2616544B (en) | 2024-01-31 |
GB202308448D0 (en) | 2023-07-19 |
WO2022100439A1 (en) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11178207B2 (en) | Software version control without affecting a deployed container | |
US10089135B2 (en) | Expediting the provisioning of virtual machines based on cached repeated portions of a template | |
US10430171B2 (en) | Extensions for deployment patterns | |
US11030049B2 (en) | Data backup management during workload migration | |
US10901700B2 (en) | Automatic generation of container image in a runtime environment | |
US10412195B2 (en) | Risk-aware service management stack transformation during workload migration | |
US20180081653A1 (en) | Accelerating software builds | |
JP2017107555A (ja) | ソフトウェア・コンテナ中のソフトウェアの識別を決定するための方法、システム、およびプログラム | |
US9959135B2 (en) | Pattern design for heterogeneous environments | |
US11288232B2 (en) | Database deployment objects and deterministic locking models | |
WO2022100439A1 (en) | Workflow patching | |
US11243868B2 (en) | Application containerization based on trace information | |
US10331419B2 (en) | Creating composite templates for service instances | |
US10831638B2 (en) | Automated analytics for improving reuse of application solutions | |
US10331421B2 (en) | Execution of a composite template to provision a composite of software service instances | |
WO2022206295A1 (en) | Program context migration | |
US10248554B2 (en) | Embedding profile tests into profile driven feedback generated binaries | |
US20190163523A1 (en) | Performing an action on a composite of software instances | |
US11953972B2 (en) | Selective privileged container augmentation | |
US11880668B2 (en) | Dynamically altering a code execution workflow during development using augmented reality | |
US20230315535A1 (en) | Dynamic factoring and composing workflows |
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 |