CN100485615C - 用于管理与软件组件相关的操作状态的方法和设备 - Google Patents
用于管理与软件组件相关的操作状态的方法和设备 Download PDFInfo
- Publication number
- CN100485615C CN100485615C CNB2006101647014A CN200610164701A CN100485615C CN 100485615 C CN100485615 C CN 100485615C CN B2006101647014 A CNB2006101647014 A CN B2006101647014A CN 200610164701 A CN200610164701 A CN 200610164701A CN 100485615 C CN100485615 C CN 100485615C
- Authority
- CN
- China
- Prior art keywords
- assembly
- compilation
- administration order
- state
- mode
- 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.)
- Expired - Fee Related
Links
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种用于动态修改、终止或替换在正运行的汇编中的软件组件和组件之间的连接(即合同)的方法、装置和制品。关于在正运行的汇编中的组件和组件之间的合同的信息被用来确定可允许的管理命令序列,以将组件的汇编从当前状态转变为指定的目标状态。同时,其它组件可以继续执行操作工作流。
Description
技术领域
本发明通常涉及从独立软件组件的集合中组成的计算机软件汇编(assembly)。更特别地,本发明涉及一种用于动态修改或替换在运行汇编中的组件的方法。
背景技术
软件组件已经出现为软件设计方法学,其从软件模式、面向对象设计和软件框架借用概念。通常,软件组件是封装已定义的函数组的独立部署的单元。例如,组件可以提供一组对字处理程序的拼写检查服务。开发字处理程序的一方可以开发拼写检查组件,或者可以从第三方获得。因为组件可以被独立地部署,因此相同的组件可以对电子邮件程序或者是对需要这些服务的任意其它程序提供拼写检查服务。一种实现组件的通用方式是利用面向对象的编程语言(例如C++、或Smalltalk以及其它)的类对象。
软件组件的功能性是由描述了对组件的接口的规则、在调用由组件提供的特定功能之前必须遵守的任何前置条件、和在执行功能后会存在的任意后置条件所规定的。一种查看这些条件的有用的方式是在组件接口的用户和实现接口(即组件的接口)的提供商之间的合同(contract)。合同规定了客户必须做什么来使用接口(前置条件),并规定了组件必须做什么来提供由合同承诺的服务(后置条件)。
在基于组件的设计中,在多个组件之间形成了互连(或合同)。根据接口规范和规则,组件的汇编可以被“有线”连接在一起。通用的合同就是从一个组件出来的输出“线”,并被连接到另一个组件的输入“线”。组件和组件之间的连接一起形成了工作汇编。在组成组件汇编时,开发者明确地将组件有线连接在一起,使得每个组件在汇编中作为整体正确操作。例如,汇编可以利用被硬编码到特定的汇编中的管理命令序列而被“加电”或“断电”。
如果该汇编是静态的,那么当组件被有线连接在一起时,可以形成连接,并且不会改变。在这种情况下,组件汇编起到了单一构造的功能,其中合同构造和组件之间的连线被固定为组件的一部分。为了修改或改变组件,在发生任何修改之前,必须关闭完整的组件。此外,用来启动或停止汇编的管理命令序列必须被修改来反映出这种变化。
在动态或随需汇编中,在不同组件之间的互连可能在组件正运行时发生改变。因此,可以形成和破坏不同组件之间的合同,也许会有很多次。例如,考虑在客户组件和服务器组件之间的合同,其中客户传送数据到服务器,且接着服务器操作并返回数据。客户每次传送数据到服务器时都形成新的合同。在合同终止之前,客户可能需要接收数据的当前状态,或一旦返回数据时,需要服务器来证实其已经消灭了数据的任何拷贝。简单的合同超时是不充分的。
此外,为了改变或修改动态汇编的组件,有关汇编的每个组件的信息都必须是可用的。每次当希望组件修改或替换时,管理员必须确定合适的管理命令序列以修改或替换组件。然而,如果汇编被错误地执行,则管理员可中断导致汇编瘫痪或者数据丢失的汇编。
因此,仍需要一种用于修改或替换正运行的软件组件的汇编中的组件的方法。
发明内容
本发明的实施例提供了一种用于动态修改、关闭、移除或替换在正运行的汇编中的组件和组件之间的连接(即合同)的方法。由程序员提供的关于在所述汇编中的组件和合同的信息被用来安全地及有效地关闭、修改或重启正运行的汇编的某些组件。同时,其它组件可以继续执行操作工作流。
本发明的一实施例提供了一种用于管理与多个软件组件相关的一组操作状态的方法。该方法一般包括:确定包括在正运行的汇编中的软件组件,其中所述汇编指定所述软件组件之间的连接,其中每个组件包括用来修改在所述汇编中的各个组件的操作状态的一组管理命令,以及其中第一组件还包括与所述管理命令之一相关的反应规则,所述反应规则指定当为所述第一组件调用所述管理命令时要执行的附加动作。该方法一般还包括:确定所述汇编的目标状态,其中所述目标状态指定包括在所述汇编中的组件的预期的操作状态;以及确定可允许的管理命令序列,其将把每个组件的操作状态转变为预期的操作状态。
本发明的另一实施例提供了一种包含程序的计算机可读媒体,当所述程序被执行时执行用来管理与多个软件组件相关的操作状态的操作。该操作一般包括:确定包括在正运行的汇编中的软件组件,其中所述汇编指定所述软件组件之间的连接,其中每个组件包括用来修改在所述汇编中的各个组件的操作状态的一组管理命令,以及其中第一组件还包括与所述管理命令之一相关的反应规则,所述反应规则指定当为所述第一组件调用所述管理命令时要执行的附加动作。该操作一般还包括:确定所述汇编的目标状态,其中所述目标状态指定包括在所述汇编中的组件的预期的操作状态;以及确定可允许的管理命令序列,其将把每个组件的操作状态转变为预期的操作状态。
本发明的另一实施例提供了一种计算设备。该计算设备一般包括处理器,以及被配置来存储包括指令的应用的存储器,所述指令当由所述处理器执行时使所述处理器执行用于管理与多个软件组件相关的一组操作状态的操作。所述操作一般包括:确定包括在正运行的汇编中的软件组件,其中所述汇编指定所述软件组件之间的连接,其中每个组件包括用来修改在所述汇编中的各个组件的操作状态的一组管理命令,以及其中第一组件还包括与所述管理命令之一相关的反应规则,所述反应规则指定当为所述第一组件调用所述管理命令时要执行的附加动作。该操作一般还包括:确定所述汇编的目标状态,其中所述目标状态指定包括在所述汇编中的组件的预期的操作状态;以及确定可允许的管理命令序列,其将把每个组件的操作状态转变为预期的操作状态。
附图说明
由于可以理解本发明的上述特征的方式,可以参考在附图中描述的示例性实施例来得到对以上简述的本发明的更具体的说明。然而要注意的是,附图仅仅描述了本发明的典型实施例,因此不应该认为是限制其范围,因为本发明可以容许其它等效实施例。
图1是示出了根据本发明一实施例的计算环境的逻辑和物理组件的框图。
图2是示出了可重用的软件组件的实施例的框图。
图3示出了根据本发明一实施例的通过已连接的软件组件的汇编的操作流。
图4示出了根据本发明一实施例的将正运行的软件组件的汇编从原始状态转变为目标状态的方法。
图5示出了根据本发明一实施例的已连接的软件组件的汇编。
图6示出了根据本发明一实施例的用于已连接的软件组件的汇编的组件状态规则。
图7示出了图5所示的已连接的软件组件的汇编的当前组件状态和目标组件状态。
图8示出了根据本发明一实施例的从单独的组件规则确定的管理流命令序列。
图9示出了根据本发明一实施例的在从原始状态转变为目标状态之后,图5首先示出的软件组件的汇编。
具体实施方式
本发明的实施例提供了一种用于在正运行的软件汇编中动态修改或替换组件或组件之间的连接(即合同)的方法。每个组件包括与组件相关的一组本地规则。同样地,每个连接组件(即线)包括与有线连接相关的一组规则。在一实施例中,规则定义了给定的组件是如何从一种状态转变为另一种状态的。汇编器组件被配置为访问包括在汇编中的所有组件的规则。通过利用完整的规则组,汇编器可以被配置为确定可允许的管理命令序列,以安全地和有效地关闭、修改、重启或替换正运行的汇编中的一个(或多个)组件,而同时允许其它组件不间断地执行。
以下说明参考本发明的实施例。然而本发明并不限于任何特别描述的实施例;相反地,无论是否涉及所述的实施例,以下特征和单元的任意组合都实现并实施了本发明。此外,在各种实施例中,本发明提供了超越现有技术的大量优点。尽管本发明的实施例可以获得超越其它可能的解决方案和现有技术的优点,但是特定的优点是否是由给定的实施例获得的并不限制本发明的范围。因此,以下方面、特征、实施例和优点是对本发明的说明,并不被认为是权利要求的单元或限制。同样,对“本发明”的任意引用都不应该解释为这里公开的任何发明主题的概括,也不应该认为是权利要求的单元或限制;除非在权利要求中明确记载之外。
本发明一实施例被实现为一种与计算机系统一起使用的程序产品,所述计算机系统例如在图1中所示的并在以下描述的计算机系统。程序产品定义了这里所述的实施例(包括方法)的功能,并可以被包含在各种计算机可读媒体。示例性的计算机可读媒体包括但不限于:(i)永久存储在不可写存储媒体(例如,在计算机中的只读存储器设备,诸如可由CD-ROM驱动器读取的CD-ROM盘)上的信息;(ii)存储在可写存储媒体(例如,在软盘驱动器中的软盘或硬盘驱动器)上的可变信息;以及(iii)通过包括无线通信的通信媒体(例如,计算机或电话网络)传送的信息。后一实施例特别包括在因特网或其它计算机网络上共享的信息。所述计算机可读媒体当承载执行本发明方法的计算机可读指令时代表了本发明的实施例。
通常,实现本发明实施例的软件例程可以是操作系统的一部分或特定应用、组件、程序、模块、对象或指令序列(例如可执行脚本)的一部分。这种软件例程典型地包括能够利用计算机系统执行的多个指令。同样,程序典型地包括驻留在存储器中或在存储设备上作为其操作的一部分的变量和数据结构。另外,这里所述的各种程序都可以根据实现其的应用而识别。然而,本领域技术人员可以认识到,以下的任意具体命名法或特定应用均有助于本发明的说明,并且不会把本发明限制于仅仅与特定应用或命名法一起使用。此外,这里利用彼此相交互的分离组件来描述应用程序。然而,本领域技术人员可以认识到,不同的实施例可以用许多不同的方式组合或归并这些组件。
图1是示出了多个计算机系统1051-3的物理和逻辑组件的框图。每个计算机系统105可以包括硬件资源的物理集合,例如一个或多个物理处理器(CPU)、存储器、网络接口和存储装置(例如,IDE或SCSI磁盘系统)。在图1所示并在这里描述的软件应用可以利用在现有的计算机系统(例如台式计算机、服务器计算机、膝上型计算机、平板计算机等)上执行的计算机软件应用而实现。然而,这里描述的软件应用并不限于任何现有的计算环境或程序语言,并且还可以在新的计算系统可用之时适合于利用新的计算系统。此外,计算机系统105可以被配置为通过网络140相互通信。网络140可以是局域网或大型的广域网,例如因特网。
如所示,每个计算机系统105包括汇编115。如这里使用的,汇编115是有线连接在一起以提供经连接的操作流的软件组件120的集合。每个汇编115可以提供独立的操作流。可替换地,汇编115.1、115.2和115.3可以提供由运行在三个计算机系统105的每一个上的组件构成的统一的操作流。通常地,操作流描述了由经汇编的组件获得的任意有用的计算功能或过程。也就是,操作流描述了汇编(例如汇编115.1、115.2和115.3)是怎样利用包括在汇编中的组件来执行预期的功能的。另外,每个组件120可以包括可以用于将给定的组件120从一种状态转变为另一种状态的一组管理命令。下面参考图4-9更详细讨论管理命令和组件状态转变。
在一实施例中,汇编器110可以包括被配置来控制汇编115的管理流的过程或程序。管理流描述了在正运行的汇编115的操作状态中的改变。因此,汇编器110可以被配置来调用为给定组件提供的管理命令,以改变汇编115的可操作状态。
另外,汇编器110可访问与组件120相关的状态规则130的集合。该状态规则可以指定如何或何时可以调用管理命令以改变组件120的操作状态。例如,汇编器110可以包括状态空间搜索引擎140。状态空间搜索引擎140可以被配置来根据状态规则130搜索可允许的命令序列,以将汇编115中的组件120的状态从当前状态转变为目标状态。例如,为了替换在汇编115中的一个组件120,汇编器110可以部分或全部关闭邻近的组件,同时仅在进行替换所需之时关闭汇编115中的其它组件。因此,本发明的实施例可以用来替换某些组件120,同时其它组件继续执行操作流。包括在状态规则130中的规则可以被提供为每个组件120的一部分。因为状态规则130可以根据包括在汇编115中的组件集合,因此改变组件还可改变包括在状态规则130中的规则。另外,状态规则130可以包括作为整体为汇编110定义的规则。例如,规则可以规定高峰需求时间期间不可关闭关键的组件。
在一实施例中,在汇编115进入到生产中之前,通用的状态转变可以被确定并存储。例如,通用的汇编转变包括:
全局开始:
开始:所有组件关闭。
目标:所有组件被连接并运行。
全局停止:
开始:所有组件被连接并运行。
目标:所有组件关闭。
组件交换:
开始:所有旧组件被连接并运行。
目标:所有旧组件被断开并关闭,所有新组件被连接并运行。然而,当事先不知道可允许的管理命令序列时,汇编器110可以被配置来利用规则130执行状态空间搜索。这样做允许汇编器110动态修改给定汇编115的状态,而不用完全关闭每个组件,并且不需要管理员来试图确定可允许的管理命令序列以影响预期的转变。如所述的,为了转变汇编115为目标状态,汇编器110搜索状态规则130,以识别在起始状态(即,在汇编115中的每个组件的当前状态)和目标状态(即,每个组件的指定状态组)之间的可允许命令序列。
图2是示出了可重用的软件组件120的实施例的框图。在这个例子中,组件120提供了对于通过输入连接“F.in”215和“G.in”220接收的数据的数据分类功能。组件120还包括两个输出连接,其提供了经分类的“H.out”数据流225和经分类的“K.out”数据流235。“H.out”数据流225提供了从“F.in”输入连接215接收的经分类的数据,且“K.out”数据流230提供了通过输入连接215和220接收的数据的经分类输出。
操作功能240提供了到由组件120提供的分类功能的接口。组件实现250提供了实现由组件120提供的操作功能240的操作逻辑。例如,实现250可以包括利用面向对象编程语言(例如C++、或Smalltalk以及其它)编写的二进制类对象(或库)。然而,还可以使用例如C、Pascal等的程序性语言。
另外,组件120包括规则235和管理功能245。为组件120提供的规则235可以被包括在规则数据库130中,以下参考图6描述其示例。管理命令245可以被用来将组件120的操作状态从一个状态转变为另一个。例如,组件120的通用的操作状态包括:
OFF:组件没有被初始化,没有输入被连接
INIT:组件具有已连接的输入,且组件被初始化
RUN:组件被初始化,输入被连接。数据正流到组件中(例如,通过输入连接215和220),且数据正从组件流出(例如,通过输出连接225和230)。
另外,用来连接两个“操作”组件的“有线”组件还可以具有“已连接”状态,这意味着第一组件的输出连接被连接到第二组件的输入连接。如果第一组件也是在运行状态中,那么数据通过连接流到第二组件。然而,以上状态并不意味是穷举的。例如,“INIT”状态可被分解为“INPUTCONNECTED”状态和“COMPONENT INITIALIZED”状态。对于本领域技术人员而言,对于为给定组件定义的操作状态的其它变化和扩展会更容易地用于特定的实施例,且是本发明所预期的。
图3示出了组件的完整汇编315,所述组件包括图2所示的组件120。在这个例子中,组件提供了被配置来分离、分类、处理和存储通过输入连接310接收的数据操作流305。因此,汇编315包括数据分离器组件320、数据分类器组件120、第一数据处理组件325(用于处理通过输入225接收的数据)、第二数据处理组件330(用来处理通过输出230接收的数据)和数据存储组件335。一旦每个组件被初始化和转变为运行状态,则数据流经汇编315。此外,汇编器110可以用来将包括在汇编315中的组件从一个状态转变为另一个状态(例如,从所有组件处于“OFF”状态的状态到所有组件被连接且处于“RUN”状态的状态)。
在一实施例中,汇编器110可以被配置来搜索组件状态规则130,来确定可允许的命令序列,来影响这种转变。另外,如以下更详细描述的,汇编器110可以被配置来确定可允许的命令序列,以修改或替换在正运行的汇编中的一个或多个组件,而同样不用关闭每个单独的组件。
图4示出了根据本发明一实施例的用于汇编器110将软件组件的正运行的汇编从原始状态转变为目标状态的方法400。结合图5-9描述了方法400的操作。在步骤405,汇编器110确定了在汇编中的每个组件的当前状态。在一实施例中,汇编器110可以保持记录了在汇编中的每个组件的当前状态的状态表。因此在步骤405,汇编器110可以从状态表简单地检索这种信息。在步骤410,汇编器110检索汇编的目标状态。例如,汇编器110可以包括显示正运行的汇编的组件和组件状态的用户界面组件。这种界面可以被配置来允许管理者指定预期的目标状态。目标状态可以修改汇编中的某些或全部组件的当前状态。例如,目标状态可以用新的组件替换在汇编中的组件。另外,预期的目标状态可以从正运行的汇编中增加或移除组件。汇编的目标状态还可以包括新的、被替换的和/或被移除的组件的组合,其中每一个组件都处于由目标状态指定的操作状态。
图5示出了包括八个可用组件的正运行的汇编515。示出的每个组件显示了它在汇编515中的当前操作状态。特别地,component_1505、old_1520和storage_component530每个都被示出为“RUN”状态,且有线组件wire_old1510和wire_old2525被示出为“CONNECTED”状态。wire_old1510连接component_1505的输出到old_1520的输入。同样地,wire_old2525连接old_1520的输出到storage_component 530的输入。因此,总而言之,组件505、510、520、525和530提供了通过汇编515的正运行的操作流。
另外,汇编515包括不是当前操作流的一部分的三个组件。特别地,图5示出了三种新的组件:wire_new1和wire_new2545(二者被示出为“DISCONNECTED”状态)以及组件“new_1”540(被示出为“OFF”状态)。新的组件可以用多种方式对于给定汇编变得可用。例如,软件组件的新版本可以在初始版本被发布之后变得可用。所述新版本可校正“故障”、加强现有的性能或增加新的特征到现有的组件。此外,新的组件会变得可用于在给定汇编115中使用,其可能在创建原始汇编的时候是未知的(或者甚至是不存在的)。
在这个例子中,步骤410指定的目标状态将正运行的汇编515从图5所示的状态转变为下述状态,其中三个新组件535、540和545都连接到汇编515且将数据处理为操作流的一部分。换句话说,目标状态包括用new_1组件540替换old_1组件520,以及用由新的有线组件535和540提供的连接替换由旧的有线组件510和525提供的连接。图7示出了记录汇编515中的每个组件的当前状态和每个组件的相应目标状态的表700。
返回到图4所示的方法400,在步骤415,汇编器110可以被配置来确定指定的目标状态是否有效。例如,在特定的组件在运行时可以不允许某些转变(例如,登录或追踪组件可以是可用于只在低活动时段期间包括在操作流中)。另外,对于给定的组件120,仅仅在当前状态和目标状态兼容时,某些转变才可以是可允许的。这些条件的每一个都可以在对于汇编器115可用的状态规则130中被反映。此外,汇编315的某些目标状态可能不是“稳定的”。也就是,状态规则130可以指定,调用特定的管理命令245会自动触发执行其它命令(这里称为“反应规则”)。因此,根据反应规则,管理员可能无意地指定将导致出现附加命令的“不稳定”目标状态。因此,可以要求有效的目标状态来创建与状态规则130的“平衡”,其中所述“平衡”状态将不会自动触发调用任何其它命令。因此,在步骤420,如果已经选择了无效的目标状态,则汇编器110可以指示这种错误。可替换地,汇编器110可以试图通过用“稳定的”目标状态来替换“不稳定”目标状态来校正“不稳定”目标状态。
在一实施例中,响应于执行给定的管理命令,“反应规则”可以指定一个或多个应该执行的附加命令。例如,当改变一个组件的操作状态会对其它组件产生影响时,“反应规则”可以被用来管理在正运行的汇编中的组件。考虑被配置来从上游组件接收数据的第一组件;简单地关闭第一组件是不够的,因为上游组件会继续传送数据到关闭的组件。在此情况下,与用于第一组件的“关闭”管理命令相关的反应规则可以指定来调用用于上游组件的“关闭”管理命令。可替换地,反应规则可以指定使缓冲器组件插入到汇编中的管理命令。在第一组件脱机的时段,缓冲器组件可以被用来接收输入的数据。
此外,当调用管理命令时,某些反应规则可以涉及在正运行的汇编中的现有操作流。例如,一个组件可以具有与其它组件的合同,以完成通过输入路径接收的数据的特定操作,或破坏通过输入路径接收的数据的任意拷贝。在这种情况中,用于“关闭”命令的反应规则会使组件执行(或完成)操作功能,这确保它根据它与其它组件的合同而工作。因此,反应规则可以指定调用用于受影响的组件或用于其它组件的操作功能240和/或管理命令245,并且反应规则还可以指定其组合。
返回到图4所示的方法,在步骤425,汇编器110可以确定可允许的命令序列是否已经可用于将汇编515从当前状态(在步骤405确定)转变为目标状态(在步骤410确定)。如上所述,通用的序列(例如全局启动或关闭)可以事先确定。因此,如果这种序列是可用的,则它在步骤430被检索,且在步骤445,汇编器110执行所检索的命令序列,转变汇编515为目标状态。
如果可允许的管理命令序列不是可用的,那么在步骤435,汇编器110可以执行规则130的状态空间搜索。例如,在一实施例中,状态空间搜索引擎140可以被配置来执行状态规则130的最佳优先搜索。如本领域普通技术人员理解的,最佳优先搜索是一种通过扩展根据某种规则所选择的期望的“候选”来优化深度优先搜索的算法。最佳优先搜索算法通常用于在组合搜索中的路径查找。最佳优先搜索算法的例子包括已知的Dijkstra算法和A*搜索算法。然而,本发明的实施例可以采用其它已知的或以后开发的搜索技术来确定将把汇编515从当前状态转变为目标状态的可允许的管理命令245的序列。
图6示出了根据本发明一实施例的用于包括在汇编515中的组件的组件状态规则130。示意性地,利用“动作”表610和“反应”表620来定义状态规则。在一实施例中,状态空间搜索规则130可以定义两类规则:动作和反应。首先,动作规则是由汇编器110调用的明确的管理命令245。每个规则在列640中提供了一个条件(或多个条件),所述条件在列640中指定了与规则相关的组件是否处于指定状态中,接着,调用特定命令245将把组件转变为在列650中所列的状态。例如,行4提供了用于“component_1”505的规则。该规则提供了“component_1”505是否处于“RUN”状态,接着,调用“component_1.stop”命令将把component_1转变为“INIT”状态。同样地,行2提供了一旦“componenrt_1”505处于“INIT”状态,“component1.off”命令就可以被调用,来把该组件转变为“OFF”状态。表610的其它行定义了用于图5的每个组件的规则235。
另外,反应表620提供了管理命令245,其可以响应于“动作”之一而被调用(即,表620定义了用于管理命令245的反应规则)。如前所述,反应规则定义了一个或多个命令,其可以响应于执行表610的“动作”命令而被调用。例如,在汇编器110调用“component_1.stop”命令后,汇编515的操作状态将满足在反应规则2和4中指定的条件。因此,作为调用“component_1.stop”命令、转变这两个组件为“DISCONNECTED”状态的结果,将产生“wire_old1.stop”和“wire_old2.stop”命令。这些反应命令245将“old_1”组件520和“表”组件530转变为“INIT”状态。这样做是在状态改变到component_1 505之后;一旦component_1 505不再通过汇编515的操作流来处理数据,下游组件将不再接收数据,且自动转变为“INIT”状态。
另外如上所述,当管理命令被实际调用时,某些反应可以根据存在用于给定组件的操作流。例如,关闭(或部分关闭)数据处理组件可以触发存储当前正被处理的任意数据的命令。当组件返回成联机时,这样做会允许组件恢复操作流。
在方法400的步骤435,根据汇编515的当前状态,搜索引擎140可以通过选择可允许的动作而逐渐地把规则130搜索一遍,确定会发生什么反应,以及会产生汇编515的什么状态。这种过程可以反复进行,直到搜索引擎140找到了将汇编515转变为目标状态的命令序列。另外,每个管理命令245被描述为具有“成本”。在一实施例中,在步骤435执行的状态空间搜索可以识别产生目标状态的多个命令序列。可以根据命令序列的相应“成本”来在两个或多个序列之间选择,或者如果命令序列的“成本”超过了某个已选择的阈值,就禁止用户启动可能的转变。
在执行了状态空间搜索之后,在步骤440,汇编器110可以确定可允许的命令序列是否在步骤435被识别。如果不是,则方法400可以进行到步骤420并指示错误。否则,在步骤445,汇编器110调用由状态空间搜索确定的命令序列。例如,图8示出了根据本发明一实施例的从单独的组件规则235确定的管理命令245的序列805。特别地,如图6指出的,行1-6列出了汇编器110可以调用来将汇编515从当前状态转变为目标状态的六个命令805的序列。另外,将被触发用于这些管理命令245中的某些的反应被列出在列820中。
图9是示出了根据本发明一实施例的在从原始状态被转变为目标状态之后在图5中首次示出的软件组件的汇编的框图。因此,为每个组件示出的操作状态现在对应于由图6中的目标状态指定的状态。特别地,组件old_1 525被示出为处于“OFF”状态,且有线组件wire_old1 510和wire_old2 525被示出为处于“DISCONNECTED”状态。同时,wire_new1535现在将component_1 505的输出连接到组件new_1 535的输入。同样地,wire_new2 525现在将组件new_1 540的输出连接到storage_component 530的输入。此外,component_1 505、组件new_1 540和storage_component 530被示出为处于“RUN”状态,且有线组件535和545被示出为处于“CONNECTED”状态。因此,总而言之,组件505、535、540、545和530现在提供通过汇编515的正运行的操作流。
如上所述,本发明的实施例可以被用于将组件的正运行的汇编从一种状态转变为另一种状态,以及修改正运行的汇编中的组件。除了替换某些组件,如在图4-9所示并描述的例子中所做的之外,本发明的实施例可以被用来动态修改正运行的汇编的结构。例如,返回图9所示的操作流,如果在转变汇编515到新的操作流之后,管理员察觉到“new_1”组件540比“old_1”组件525执行得更慢(但可能更精确),那么缓冲器组件可以被插入到组件505和组件535之间。为了增加缓冲器到正运行的汇编515,汇编器110会搜索将受影响的组件转变为“INIT”或“OFF”状态的有效的命令序列,为这些组件断开有线连接,再有线连接这些组件使得操作流通过缓冲器组件,并重启经修改的数据流。此外,会发生所有这些情况,而不用管理员必须确定哪些管理命令245必须被调用来完成预期的结果。因此,管理员可关注于设计执行预期的操作流所需的最佳的组件序列。
尽管以上内容针对本发明的实施例,但可以设计本发明的其它或更多实施例,而不脱离本发明的基本范围,且本发明的范围由权利要求所确定。
Claims (14)
1.一种计算机实现的用于管理与多个软件组件相关的一组操作状态的方法,包括:
识别包括在正运行的汇编中的软件组件,其中所述汇编指定所述软件组件之间的连接,其中每个组件包括用来修改在所述汇编中的各个组件的操作状态的一组管理命令,以及其中第一组件还包括与第一管理命令相关的反应规则,所述反应规则指定当为所述第一组件调用第一管理命令时要执行的附加动作;
确定所述汇编的目标状态,其中所述目标状态指定包括在所述汇编中的组件的预期的操作状态;
确定所述汇编的目标状态是否是有效的目标状态;以及
确定可允许的管理命令序列,其将把每个组件的操作状态转变为所述预期的操作状态。
2.根据权利要求1所述的方法,还包括:调用所述可允许的管理命令序列来将每个组件的操作状态转变为所述预期的操作状态。
3.根据权利要求1所述的方法,其中确定可允许的管理命令序列包括:执行对所述可允许的管理命令序列的状态空间搜索。
4.根据权利要求3所述的方法,其中所述状态空间搜索包括最佳优先搜索。
5.根据权利要求1所述的方法,其中所述反应规则响应于调用所述第一管理命令而指定调用第二管理命令。
6.根据权利要求1所述的方法,其中所述反应规则响应于调用所述第一管理命令而指定调用与所述第一组件相关的至少一个操作功能。
7.根据权利要求1所述的方法,其中确定可允许的管理命令序列包括:确定两个或多个可允许的管理命令序列,并根据为所述两个或多个可允许的管理命令序列中的每一个所确定的成本来选择所述可允许的管理命令序列中的一个。
8.根据权利要求1所述的方法,其中用于给定组件的状态规则指定所需的操作状态,其中所述给定组件必须存在于所述操作状态下,以便调用给定管理命令。
9.根据权利要求1所述的方法,其中所述目标状态修改所述汇编中的一个或多个组件的当前操作状态,替换所述汇编中的一个或多个组件,从所述汇编中增加或移除至少一个组件或其组合。
10.一种用于管理与多个软件组件相关的一组操作状态的计算设备,包括:
用于识别包括在正运行的汇编中的软件组件的装置,其中所述汇编指定所述软件组件之间的连接,其中每个组件包括用来修改在所述汇编中的各个组件的操作状态的一组管理命令,以及其中第一组件还包括与第一管理命令相关的反应规则,所述反应规则指定当为所述第一组件调用第一管理命令时要执行的附加动作;
用于确定所述汇编的目标状态的装置,其中所述目标状态指定包括在所述汇编中的组件的预期的操作状态;
用于确定所述汇编的目标状态是否是有效的目标状态的装置;以及
用于确定可允许的管理命令序列的装置,其中所述可允许的管理命令序列将把每个组件的操作状态转变为所述预期的操作状态。
11.根据权利要求10所述的计算设备,其中所述反应规则响应于调用所述第一管理命令而指定调用第二管理命令。
12.根据权利要求10所述的计算设备,其中所述反应规则响应于调用所述第一管理命令而指定调用与所述第一组件相关的至少一个操作功能。
13.根据权利要求10所述的计算设备,其中用于给定组件的状态规则指定所需的操作状态,其中所述给定组件必须存在于所述操作状态下,以便调用给定管理命令。
14.根据权利要求10所述的计算设备,其中所述目标状态修改所述汇编中的一个或多个组件的当前操作状态,替换所述汇编中的一个或多个组件,从所述汇编中增加或移除至少一个组件或其组合。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/304,131 US7735090B2 (en) | 2005-12-15 | 2005-12-15 | On demand software contract modification and termination in running component assemblies |
US11/304,131 | 2005-12-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1983176A CN1983176A (zh) | 2007-06-20 |
CN100485615C true CN100485615C (zh) | 2009-05-06 |
Family
ID=38165734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101647014A Expired - Fee Related CN100485615C (zh) | 2005-12-15 | 2006-11-14 | 用于管理与软件组件相关的操作状态的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7735090B2 (zh) |
CN (1) | CN100485615C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8572580B2 (en) * | 2008-07-28 | 2013-10-29 | Microsoft Corporation | Computer application packages with customizations |
US20100235479A1 (en) * | 2009-03-11 | 2010-09-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Device and method for identifying entities to be upgraded, added or removed |
US20110106713A1 (en) * | 2009-10-30 | 2011-05-05 | Realization Technologies, Inc. | Post facto identification and prioritization of causes of buffer consumption |
US8910133B2 (en) | 2010-06-07 | 2014-12-09 | Microsoft Corporation | Library conformity checker |
US9952953B2 (en) | 2015-11-02 | 2018-04-24 | Microsoft Technology Licensing Llc | Non-monotonic eventual convergence for desired state configuration |
US10360012B2 (en) * | 2017-11-09 | 2019-07-23 | International Business Machines Corporation | Dynamic selection of deployment configurations of software applications |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2790466B2 (ja) * | 1988-10-18 | 1998-08-27 | 株式会社日立製作所 | 文字列検索方法及び装置 |
US6216223B1 (en) * | 1998-01-12 | 2001-04-10 | Billions Of Operations Per Second, Inc. | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor |
EP1617355A1 (en) * | 2004-07-14 | 2006-01-18 | Sap Ag | Technique for flexible path optimization |
US7512773B1 (en) * | 2005-10-18 | 2009-03-31 | Nvidia Corporation | Context switching using halt sequencing protocol |
-
2005
- 2005-12-15 US US11/304,131 patent/US7735090B2/en not_active Expired - Fee Related
-
2006
- 2006-11-14 CN CNB2006101647014A patent/CN100485615C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7735090B2 (en) | 2010-06-08 |
US20070168960A1 (en) | 2007-07-19 |
CN1983176A (zh) | 2007-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6678780B2 (ja) | プロセス視覚化プラットフォーム | |
CN101617292B (zh) | 面向生成器图的编程和执行 | |
CN100485615C (zh) | 用于管理与软件组件相关的操作状态的方法和设备 | |
US6122633A (en) | Subscription within workflow management systems | |
US8589884B2 (en) | Method and system for identifying regression test cases for a software | |
US8776009B2 (en) | Method and system for task modeling of mobile phone applications | |
US20050027495A1 (en) | Application integration system and method using intelligent agents for integrating information access over extended networks | |
US20090100419A1 (en) | Method for determining priority for installing a patch into multiple patch recipients of a network | |
CN101201753A (zh) | 一种多状态机管理引擎的配置管理方法 | |
Rashid et al. | Aspect-oriented, model-driven software product lines: The AMPLE way | |
CN101641688B (zh) | 可定义应用程序助理 | |
US20110264592A1 (en) | Template-based technique for making a best practices framework actionable | |
Guérineau et al. | Towards a design-method selection framework for multidisciplinary product development | |
Cole | SoS architecture | |
CN112613792A (zh) | 数据处理方法、系统、计算机设备和存储介质 | |
US10545729B2 (en) | Computer program interface | |
EP1706805A2 (en) | System and method for configuring a graphical user interface based on data type | |
KR20010110097A (ko) | 작업흐름-관리-시스템에서의 보관 방법 | |
US20050268306A1 (en) | Method and system for presenting actions associated with a managed object in a task context | |
US20210065081A1 (en) | Computer system and work support method | |
CN111985740B (zh) | 任务处理方法与装置 | |
Thuan et al. | Understanding and modelling organisational information flows | |
Tang et al. | Goal-directed modeling of self-adaptive software architecture | |
ZERTAL et al. | A Novel Ontology-based Approach for Describing Cloud Services | |
CN109862105B (zh) | 一种多域环境中基于bpel的按需动态高性能服务组合方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090506 Termination date: 20151114 |
|
EXPY | Termination of patent right or utility model |