用于基于延续的元运行时环境的抽象执行模型的制作方法

文档序号:6454468阅读:177来源:国知局
专利名称:用于基于延续的元运行时环境的抽象执行模型的制作方法
用于基于延续的元运行时环境的抽象执行模型
背景
现有系统试图通过高级工作流对自治代理之间的业务流程或其它现实交
互建模。然而,工作流可能在各个方面有所不同,诸如(a)执行和建模的复 杂性、(b)在设计时对流程的结构的了解、(c)静态定义或自组织/动态的、 (d)在其生命周期的各个时间点创作和编辑流程的容易程度以及(e)业务逻 辑与核心工作流过程之间弱或强的关联。现有的工作流模型不能适应所有这些 因素。
此外,大多数现有工作流模型是基于以下中任一个的基于语言的方法(例 如,BPEL4WS、 XLANG/S以及WSFL)或基于应用程序的方法。基于语言的 方法是具有帮助向用户/程序员对工作流过程建模的预定义构造的闭集的高级 工作流语言。工作流语言携带允许用户构建工作流模型的构造的闭集的所有语 义信息。然而,语言不是可由开发员扩展的,且表示构成工作流模型的原语的 闭集。语言被绑定至由工作流系统厂商提供的语言编译器。仅工作流系统产品 厂商可通过用产品将来版本中的一组新构造扩展语言来扩展模型。这通常要求 升级与该语言相关联的编译器。此外,语言通常不会声明性地展示或定义可由 其它程序容易且高效使用的功能或操作。
基于应用程序的方法是在应用程序内具有解决域特有问题的工作流能力 的应用程序。这些应用程序不是真正可扩展的,它们也不具有可编程模型。
概述
本发明的实施例对工作流中的现实过程建模。在一个实施例中,本发明定 义与工作流中的活动关联的自动机。虚拟化具有固定功能的托管执行环境的元 运行时引擎基于定义的自动机执行包括活动的程序片段。响应于接收到针对正 在执行的程序片段的挂起信号,元运行时引擎确定与程序片段相关联的延续数 据,并释放与程序片段相关联的任何资源。提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一 些概念。该概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨 在用于帮助确定所要求保护的主题的范围。
其它特征的一部分将是显而易见的, 一部分将在下文中指出。
附图简述


图1是示出用于本发明各方面的示例性操作环境的框图。
图2是示出根据本发明的实施例的基于延续的工作流框架的示例性框图。
图3是示出根据本发明的实施例的工作流的示例性框图。 图4是示出根据本发明的实施例的工作流活动的分层结构的示意图。 图5是示出根据本发明的实施例的活动的示例性状态自动机的示意图。 图6是示出根据本发明的实施例的用于处理工作流活动的示例性系统的 框图。
图7是示出基于延续的运行时环境的抽象执行模型的操作的示例性流程图。
相应的附图标记在各附图中指示相应的部分。 详细描述
首先参考图1, 一框图示出了用于对工作流中的过程中心活动建模的典型 编程范例。在该附图中,示意图示出在最高级具有虚拟化操作系统104的托管 执行环境106的三级虚拟化模型。托管执行环境106按照可独立于计算设备的 处理器架构实现的抽象栈机器来虚拟化在环境106中执行的程序的执行。操作 系统104虚拟化最低级的处理单元102。由于在托管执行环境106中仅固定的 功能可用,因此托管执行环境106级处的程序缺少适应工作流中的过程之间的 复杂交互的能力和效率。托管执行环境106还包括不适于处理对现实工作流建 模的工作流的复杂性和能力的各种严格要求。此外,操作系统104中的编程代 码或例程依赖于处理单元102的类型或配置以及计算体系结构的类型(例如, 与IBM个人计算机、APPLE个人计算机或其它系统兼容)以及其它约束。此 外,编程语言一般要求硬件专用数据结构,诸如栈、堆或线程以供操作系统104正确运作。
接着参考图2,本发明的各方面包括基于延续的工作流引擎202、元运行
时引擎或虚拟化托管执行环境106的其它框架。工作流包括将活动的分层组成, 每一活动表示一个单位的工作。工作流引擎202对表示现实过程的工作流中的 操作码(op-code)或活动的执行提供异步的抽象模型。工作流引擎202是能够 在执行周期期间的任何时刻挂起程序并恢复它们的基于延续的运行时环境。尽 管活动是域专用的,但域细节对于工作流引擎202是不可知的。而且,工作流 引擎202不了解按照活动包装的特定控制流模式。因此,本发明各方面提供的 执行模型是抽象的。此外,尽管整个工作流实例可在逻辑上运行任意时间量(例 如,天、月或年),但与工作流相关联的活动可执行短暂的工作并以协作多任 务的方式生产。本发明各方面的抽象执行模型允许工作流引擎202在执行中间 挂起实例和/或将其从存储器中驱逐并在将来恢复它。工作流引擎202跨程序钝 化(passivation)管理这样的操作。
在一个实施例中,工作流引擎202用于虚拟化托管执行环境106的以下方 面中的一个或多个域专用操作码、线程、同步原语、执行机、对象生存周期、 源格式、异常、故障、故障传播以及故障处理。例如,本发明的各方面允许用 户按照自定义活动来编写自定义操作码。 一般而言,工作引擎202使用来自托 管执行环境106的线程、栈和/或堆。具有执行以任何编程语言编写并以任何文 件格式编发的程序的能力,工作流引擎202允许程序开发员在没有损害的情况 下设计程序。通过将表示工作流任务或过程的活动定义为要由工作流引擎202 执行的基类,本发明的各方面允许开发员容易且高效地构建域专用操作码而无 需依附托管执行环境106中刚性、硬编码、不灵活且固定的功能或活动类集合。 操作码可以是对于卫生保健行业、金融行业或其它领域专用的。图2中的工作 流引擎202可以是层叠在任何现有的执行框架(例如,图1中的托管执行环境 106、操作系统104或处理单元102)上允许对延续及其各个方面建模以允许程 序员对复杂和动态的控制流模式建模的任何基于延续的运行时环境。本发明的 各方面允许按照任何方式或表示(例如,流程图、示意图、编号描述等)来定 义活动。
延续可用于对复杂和动态控制流模式建模。延续表示动作被冻结的程序,且可包括包含计算状态的单个功能对象。当评估该对象时,所存储的计算可在 其停止处重启。当解决某些类型的问题时,能够保存程序的状态并在稍后重启 可能有很大帮助。例如,在多处理中,延续方便地表示挂起的进程。在非确定 性搜索程序中,延续可表示搜索树中的节点。
当托管执行环境106在程序之间创建公共然而固定的通信环境时,缺乏在
这样的环境中对现实过程建模的能力。例如,在托管执行环境106中执行的应 用程序限于共享功能或公共的面向对象的类的中间语言。该中间语言具有固定 的参数、自变量或模式或功能。
再次参考图2,用户204 (例如,人、应用程序、操作系统等)与提供工 作流基础框架的计算机206交互。计算机206和与之相关联的处理器(未示出) 能够访问存储延续数据210以及具有用于实现工作流基础的计算机可执行指令 的一个或多个计算机可读组件或模块的存储器区208。延续数据210包括应用 程序状态和运行时状态。在一个实施例中,应用程序状态包括活动对象的列表, 并指示活动状态(例如,参考活动树),而运行时状态包括标识接下来调度执 行的异常处理程序的程序计数器或指示调度器队列状态(例如,与调度器相关 联的队列中的项目)。由延续数据210表示的延续一般表示给定时刻程序片段 的的活动执行上下文或其它状态。活动执行上下文可独立于与来自托管执行环 境106的物理线程相关联的栈获得。
在图2的实施例中,计算机可执行组件或模块包括自动机模块212、执行 机模块214、延续模块216以及恢复模块218。自动机模块212当由计算机206 执行时,定义与工作流中的活动相关联的自动机。所定义的自动机具有有与之 相关联的一组状态以及对应于每一状态的一个或多个方法。执行机模块214基 于由自动机模块212定义的自动机执行包括活动的程序片段。延续模块216响 应于接收针对正由执行机模块214执行的程序片段的挂起信号,捕捉程序片段 的延续数据210并释放与程序片段相关联的资源。延续模块216的操作可被称 为封藏程序片段、驱逐程序片段、对程序片段脱水和/或卸载程序片段。例如, 延续数据用于对以下中的一个或多个建模控制流模式、迭代、并行foreach (对每一个)语句、状态机、页流程控制器、序列生成器以及另一延续。
当由计算机206或其它计算设备执行时,恢复模块218响应于接收到针对正由执行机模块214执行的程序片段的恢复信号,还原由延续模块216捕捉的 程序片段的延续数据210。执行机模块214基于所还原的延续数据210恢复程 序片段的执行。
例如,使用对延续的参考,执行处理程序(例如,与活动相关联的方法) 可调度更多的执行处理程序(例如,合成活动可调度其子活动的执行)。在一 个实施例中,对延续的参考包括作为直接或隐式自变量的活动执行上下文。对 成功完成的活动的补偿可在将来通过重新调用所持久保存的上下文并在该上 下文内执行活动实例的补偿器方法来执行。
图2、其它附图以及本文语言中的任何元素构成了提供元运行时的装置以 及用于捕捉与程序片段相关联的延续的装置。
接着参考图3,示出了示例性工作流300。在图3的示例中,工作流300 是用于处理购买定单的工作流。工作流中的活动可被定序,使得某些活动可与 工作流300中的其它活动并行或同时执行,而工作流300中的某些活动在工作 流300中的其它活动完成之后执行。工作流300从诸如从顾客接收定单等开始 时刻302开始。工作流300包括条件语句304 (例如,IF语句或WHILE语句), 它根据条件语句304中的条件的结果分支为条件语句306和308。沿着条件语 句306,工作流300包括具有要异步执行的两个序列的并行结构310。在图3 中所示的示例中,"发送电子邮件"活动的"获得批准"活动在工作流在314完成 之前被并行处理。
在条件语句308之后,"将活动放在此"区316指示活动编写者或其它用户 可在工作流在314完成之前向工作流添加活动。
接着参考图4, 一框图示出了工作流活动的分层结构402(例如,树结构)。 活动的执行包括在树的根开始的活动树的执行。活动可由采用任何编程语言的 软件代码配置。例如,软件代码可表示在特定域或执行环境中编写的业务或应 用程序逻辑或规则。活动可包括实现逻辑或规则的一个或多个工作项目或其它 活动。在图4的实施例中,活动以及相关联的工作项目根据结构402或其它执 行序列来安排和执行。
元运行时引擎为与活动相关联的每一工作项目定义范围或边界。该范围或 边界包括并展示了诸如要由工作项目访问的共享数据或资源、相关联的属性、处理程序、约束、事件等的信息(例如,以数据、元数据等的形式)。
接着参考图5,示例性状态自动机定义了活动可在其中转换的一组状态。
一般而言,状态自动机500为活动定义执行生存周期。在图5的示例性自动机
中,在元运行时引擎执行活动并评估转换条件时,活动在一组定义的状态中转 换。元运行时引擎对每个抽象的自动机实施活动的执行。在一个实施例中,活
动的执行是按照状态机500中的状态以及对每一状态特定的可能转换来进行 的。
一个示例性自动机包括初始化状态、执行状态和关闭状态。在图5的示例 中,状态自动机500包括初始化状态502、执行状态504、取消状态506、故障 状态508、补偿状态510和关闭状态512。在另一实施例中,可在状态自动机 500中定义一个或多个附加状态,而不背离本发明的实施例的范围。
一般而言,状态自动机500具有定义活动在一组状态之中的转换的一个或 多个转换条件。在一个实施例中,如果第一自动机与第一活动相关联,且第二 自动机与第二活动相关联,则第一活动的第一自动机的转换条件可取决于第二 活动的第二自动机的当前状态。
此外,状态自动机500可在合成活动的工作项目或活动之间建立一个或多 个关系。例如,关系规则之一可包括,在将活动树的根节点中的方法或工作项 目转换到关闭状态512之前,在子节点中的所有工作项目应处于初始化状态 502或关闭状态512。另一规则可指定,根节点中的工作项目应在将活动树的 子节点中的工作项目转换到执行状态504之前处于执行状态中。
接着参考图6, 一示意图示出了根据本发明的实施例用于处理工作流活动 的系统600。系统600包括处理器602,它可以是诸如图1的处理单元102等 处理单元或处理单元的集合。系统600也包括用于存储可由处理器602访问的 数据的存储或存储器区604。在一个实施例中,系统600可以是具有一个或多 个处理器或处理单元(例如,处理器602)、系统存储器(例如,存储器区604) 和将包括处理器602的各种系统组件耦合到存储器区604的其它组件的计算 机。
例如,存储器区604存储用于在工作流(例如,图3中的工作流300)中 处理的多个活动606。多个活动606中的每一个包括一个或多个工作项目,且工作项目可在诸如树结构(见图4)等分层结构中组织。在处理多个活动606 时,处理器602访问或执行调度器608。调度器608包括工作项目的队列610 (例如工作队列)以及分派器612,它使项目出队并调用执行与所出队的工作 项目相关联的工作的相应的实现,直到队列610为空。队列610中的每一工作 单位对应于由活动实现的一方法。方法可被称为执行处理程序。给定的活动的 完整执行可横跨在早先时候加入队列610中的一组执行处理程序的调用和执 行。
诸如图5中的状态自动机500等状态自动机为工作流活动中的工作项目 (例如,工作项目622)定义执行流。处理器608经由组件或一组计算机可执 行指令(诸如初始化工作项目622并使工作项目622入队或存储到队列610的 调度器608)访问多个活动606中的工作项目。例如,如图6中所示的工作项 目622-1被初始化并在队列610中入队。工作项目622-1然后在转换到执行状 态(例如,图5中的执行状态504)供执行之前由分派器612从队列610中出 队或移除。
在一个示例中,工作项目622-1包括活动方法或活动操作624、例程或用 于执行"向用户请求输入"的功能的代码的集合。 一个或多个其它活动方法、活 动操作、例程或代码可被包括在每一工作项目622中,而不背离本发明各方面 的范围。
当分派器612分派工作项目622时,处理器602在614执行每一工作项目 622中的方法624。在工作项目622-1的示例中,处理器602可向用户提供输 入所请求的信息或数据的用户界面(UI)。在另一实施例中,处理器602可连 接到或访问外部数据源以获得输入。在完成活动方法或活动操作624之后,处 理器602在616结束工作项目622-1的执行。
或者,处理器602可在618将工作项目(例如,工作项目622-1)的执行 状态钝化或以其它方式捕捉到数据存储620供后续的检索和继续执行。
根据工作项目622-1的执行期间的参数或条件,工作项目622-1可继续到 取消状态(例如,图5的取消状态506)或故障状态(例如,图5的故障状态 508)。在一个实施例中,工作项目422-1可从取消状态继续到故障状态。在 替换实施例中,补偿状态(例如,图5中的补偿状态)描述当发生故障或异常时要执行的一组操作或功能。
接着参考图7, 一示例性流程图示出基于延续的运行时环境的抽象执行模
型的操作。该方法包括在702定义与工作流中的活动相关联的自动机。所定义
的自动机具有与之相关联的一组状态以及定义活动在这组状态中的转换的一 个或多个转换条件。在将活动从一个状态转换到另一状态(或允许活动转换) 之前,该方法包括验证转换条件。在一个实施例中,从用户、应用程序、操作 系统或其它源接收到自动机。
该方法在704定义对应于自动机中每一状态的一个或多个方法。例如,活 动的方法可由用户定义、由运行时环境从用户处接收、以及与关联于活动的自 动机中的至少一个状态相关联。例如,所定义的方法可与表示该活动的数据结 构相关联。
虚拟化具有固定功能的托管执行环境的元运行时引擎在706基于所定义 的自动机和所定义的方法执行包括该活动的程序片段。该方法包括在708接收 针对正在执行的程序片段的挂起信号,在710响应于接收到的挂起信号确定与 程序片段相关联的延续数据,并将所确定的延续数据存储在存储器区中。延续 数据表示程序片段的延续。该方法还包括在712标识与程序片段相关联的一个 或多个资源,并释放所标识的资源。
在一个实施例中,程序片段的执行对于持久保存为延续的每一事件 (episode)是事件式的。在一个实施例中,延续数据表示包括与元运行时引擎 相关联的运行时状态以及与程序片段相关联的程序状态的活动执行上下文。延 续的数据边界例如是通过在周围密封的上下文中确定变量的广度、范围以及与 状态的绑定来定义的。
随后,例如当数据可供程序片段消费时,可将恢复信号针对程序片段。响 应于该恢复信号,该方法访问存储在存储器区中的延续数据,并将延续数据加 载到与执行机相关联的执行存储器中。该方法在714基于所加载的延续恢复程 序片段的执行。 一般而言,该方法的这些方面可被称为程序片段的重新激活或 重启。
图2中的计算机206和图6中的处理器602是通用计算设备的示例。在本 发明的一个实施例中,计算机适于在此所示和描述的其它附图中使用。计算机具有一个或多个处理器或处理单元和系统存储器。计算机一般具有至少某种形 式的计算机可读介质。计算机可读介质,包括易失性与非易失性介质、可移动 与不可移动介质,可以是任何可由计算机访问的可用介质。作为示例而非限制, 计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于
存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法 或技术实现的易失性与非易失性、可移动与不可移动介质。例如,计算机存储
介质包括RAM、 ROM、 EEPROM、闪存或其它存储器技术、CD-ROM、数字 多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设 备、或可以用于存储所需信息并可由计算机访问的任何其它介质。通信介质一 般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据 结构、程序模块或其它数据,并且包括任何信息传递介质。本领域技术人员熟 悉己调制数据信号,其一个或多个特征以将信息编码在该信号中的方式来设置 与改变。诸如有线网络或直接线连接等有线介质,以及如声学、RF、红外线及 其它无线介质等无线介质都是通信介质的示例。以上的任一的组合也包括在计 算机可读介质的范畴内。
系统存储器包括可移动和/或不可移动、易失性和/或非易失性存储器形式 的计算机存储介质。计算机也可以包括其它可移动/不可移动、易失性/非易失
性计算机存储介质。
计算机可使用至一个或多个远程计算机,如远程计算机的逻辑连接在网络
化环境中操作。远程计算机可以是个人计算机、服务器、路由器、网络PC、 对等设备或其它常见的网络节点,并且一般包括上面关于计算机所述的许多或 全部元件。
尽管结合包括计算机的示例性计算系统环境进行了描述,但本发明的实施 例可用于众多其它通用或专用计算系统环境或配置。计算系统环境不旨在对本 发明的任何方面的使用范围或功能提出任何限制。而且,计算系统环境不应被 解释为对在示例性操作环境中所示组件的任何一个或组合有任何依赖性或要 求。适用于本发明各方面的公知的计算系统、环境和/或配置的示例包括,但不 限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基 于微处理器的系统、机顶盒、可编程消费者电子产品、移动电话、网络PC、小型机、大型机、包括上述系统或设备中的任一个的分布式计算机环境等。
本发明的各实施例可以在由一个或多个计算机或其他设备执行的被组织 成一个或多个组件或程序模块的计算机可执行指令的通用上下文中描述。计算 机的数据处理器可通过在不同时间存储在计算机的各个计算机可读存储介质 中的计算机可执行指令来编程。 一般而言,程序模块包括但不限于执行特定 的任务或实现特定的抽象数据类型的例程、程序、对象、组件和数据结构。本 发明的各方面可以用任何数量的这些组件或模块及其任何组织来实现。例如, 本发明的各方面不限于在各附图和本文中示出的特定的计算机可执行指令或 者特定的组件或模块。本发明的其他实施例可以包括具有比在本文中示出和描 述的更多或更少的功能的不同计算机可执行指令或组件。在操作中,计算机执 行诸如在各附图中所示出的计算机可执行指令来实现本发明的各方面。本发明 的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布 式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储 设备在内的本地和远程计算机存储介质中。
软件体系结构的上下文中的接口包括软件模块、组件、代码部分、或其他 计算机可执行指令的序列。接口包括例如第一模块,该模块访问代表第一模块 执行计算任务的第二模块。在一个示例中,该第一和第二模块包括诸如由操作 系统提供的应用程序编程接口 (API)、组件对象模型(COM)接口 (例如,
用于对等应用程序通信)、以及可扩展标记语言元数据交换格式(XMI)接口 (例如,用于web服务之间的通信)。接口可以是紧耦合的同步实现,诸如在 Java2平台企业版(J2EE) 、 COM、或分布式COM (DCOM)的示例中。或 者或除此以外地,接口可以是松耦合的异步实现,诸如在web服务中(例如, 使用简单对象访问协议)。 一般,接口包括以下特性的任何组合紧耦合、松 耦合、同步、和异步。此外,接口可遵循标准协议、专有协议、或标准和专有 协议的任何组合。此处所描述的接口都可以是单个接口的一部分,或可被实现 为独立的接口或其中的任何组合。该接口可以本地或远程地执行以提供功能。 此外,该接口可包括比此处所示出或描述的更多或更少的功能。
以下各示例进一步示出了本发明的实施例。当子活动的数目在编译时未知 时,认为控制流在本质上是动态的。例如,对典型的文档审阅过程建模的合成活动通过并发执行一组原语审阅者活动来向审阅者发送消息。然而,审阅者的 数量在创作程序时可能不能静态知道,且因此合成活动的子活动的确切数量不 能在此时配置。在这样的情况中,用担当在执行时基于实际可用的审阅者来生 成一组动态实例的模板的单个审阅者活动配置合成活动。这些构造不仅在控制 流方面在本质上是动态的,而且,包括其局部化和绑定的运行时状态也是动态 的。例如,用表示状态的一组子活动来配置对状态机建模的活动。每一状态活 动是表示在给定时刻被冻结的元程序或状态机的状态的延续。延续可多次且由 本发明的各方面按任意次序执行。
循环构造可被视为动态控制流的特例。例如,对ForEach构造建模的活动 的语义指示,每一迭代应为包含在ForEach活动内的状态创建独特的范围。为 状态定范围涉及状态的局部性、管理状态在范围上的引用完整性或绑定、以及 管理在给定范围中封入的状态的广度或生存周期。对于本发明的各方面,按照 程序树中活动的字段和依赖性属性来捕捉程序状态。以此方式,通过有效地动 态生成活动的实例来创建对循环构造建模的活动的局部或临时变量的概念。这 基于表示循环体的临时活动捕捉迭代的局部状态。
此外,与在非持久/非事务编程环境中的程序构造不同,活动可在后续程 序执行期间请求得到补偿。例如,成功完成的DoWhile (当...做...)活动的迭 代如其父活动发生故障则可在其生存周期的稍后时刻得到补偿。本发明的各方 面允许通过捕捉对应于每一迭代的活动的执行状态并将其存储为延续来对每 一迭代进行这样的补偿(例如实现撤消语义)。表示所存储的执行状态的延续 可在稍后调用,使执行的原始状态在与任何活动相关联的补偿方法试图执行时 可用。
除非另有指定,否则此处所示和所述的本发明各实施例的操作的执行或进 行的次序不是必需的。即,除非另有指定,否则各操作可按照任何次序执行, 且本发明的实施例可以包括比本文所公开的更多或更少的操作。例如,构想了 在另一操作之前、同时或之后执行或进行某一操作是在本发明各方面的范围之 内的。
当介绍本发明或其实施例的各方面的各元素时,冠词"一"、"一个"、"该" 和"所述"指的是存在该元素的一个或多个。术语"包括"、"包含"、"具有"旨在是包括性的并且指的是可以有除所列元素之外的其它元素。
尽管详细描述本发明的各方面,但显然修改和变化是有可能的,而不背离 所附权利要求书中定义的本发明各方面的范围。在不背离本发明各方面的范围 的情况下,可对以上构造、产品和方法进行各种改变,以上描述中所包含的以 及在附图中所示出的所有一切旨在应被解释为说明性并且没有限制意义。
权利要求
1. 一种对工作流中的现实过程建模的方法,所述方法包括定义与工作流中的活动606相关联的自动机500,所定义的自动机500具有一组与之相关联的状态;定义对应于所述自动机500中的每一状态的一个或多个方法,所定义的方法与表示所述活动606的数据结构相关联;由虚拟化具有固定功能的托管执行环境106的元运行时引擎202基于所定义的自动机500和所定义的方法执行包括所述活动606的程序片段;接收针对正在执行的程序片段的挂起信号;响应于所接收的挂起信号确定与所述程序片段相关联的延续数据210,所述延续数据210表示所述程序片段的延续;将所确定的延续数据210存储在存储器区208中;标识与所述程序片段相关联的一个或多个资源;以及释放所标识的资源。
2. 如权利要求l所述的方法,其特征在于,还包括 接收针对所述程序片段的恢复信号;访问存储在所述存储器区中的延续数据;将所访问的延续数据加载到与所述执行机相关联的执行存储器中;以及 基于所加载的延续数据恢复所述程序片段的执行。
3. 如权利要求1所述的方法,其特征在于,所述执行机用于虚拟化所述 托管执行环境的以下方面中的一个或多个域专用操作码、线程、同步原语、 执行机、对象生存周期、源格式、异常、故障、故障传播以及故障处理。
4. 如权利要求1所述的方法,其特征在于,定义所述一个或多个方法包 括,丛用户接收与伺所述活动相关联的自动机生的至少一个状态湘关联的方 法。
5. 如权利要求l所述的方法,其特征在于,所述自动机包括定义所述活 动在所述一组状态中的转换的一个或多个转换条件,且还包括在允许所述活动 在所述状态中转换之前验证所述转换条件。
6. 如权利要求1所述的方法,其特征在于, 一个或多个计算机可读介质 具有用于执行如权利要求1所述的方法的计算机可执行指令。
7. —种用于对工作流中的现实过程建模的系统,所述系统包括用于存储表示程序片段的延续的延续数据210的存储器区208,所述程序 片段与工作流中的活动606相关联,所述存储器区208还存储用于虚拟化具有 固定功能的托管执行环境106的元运行时引擎202,所述元运行时引擎202具 有表示有一组状态与之相关联的状态的自动机500的执行机,其中一个或多个 方法对应于所述状态中的每一个,其中所述方法与表示所述活动606的数据结 构相关联,所述元运行时引擎202基于所述执行机执行所述程序片段;以及 被配置成处理计算机可执行指令的处理器602,所述指令用于 捕捉与正在执行的程序片段相关联的延续数据210; 在所述存储器区208中存储所捕捉的延续数据210;以及 释放与所述程序片段相关联的一个或多个资源。
8. 如权利要求7所述的系统,其特征在于,所述捕捉和所述存储对应于以下中的一个或多个封藏所述程序片段、驱逐所述程序片段、使所述程序片段脱水、以及卸载所述程序片段。
9. 如权利要求7所述的系统,其特征在于,所述元运行时引擎使用来自 托管执行环境的以下中的一个或多个线程、栈和堆。
10. 如权利要求7所述的系统,其特征在于,所述延续数据包括程序计数器,所述程序计数器标识接下来调度执行的异常处理程序。
11. 如权利要求7所述的系统,其特征在于,所述存储器区存储包括应用 程序状态和运行时状态的延续数据。
12. 如权利要求11所述的系统,其特征在于,所述应用程序状态包括活 动对象的列表。
13. 如权利要求11所述的系统,其特征在于,所述运行时状态包括程序 计数器。
14. 如权利要求7所述的系统,其特征在于,所述处理器还被配置成执行 计算机可执行指令,所述指令用于访问存储在所述存储器区中的延续数据;将所访问的延续数据加载到与所述元运行时相关联的执行存储器中;以及 基于所加载的延续数据恢复所述程序片段的执行。
15. 如权利要求14所述的系统,其特征在于,所述加载和所述恢复对应于以下中的一个或多个重新激活和重启。
16. 如权利要求7所述的系统,其特征在于,还包括用于提供所述元运行时环境的机制和用于捕捉与所述程序片段相关联的延续的机制。
17. 如权利要求7所述的系统,其特征在于,还包括从用户接收的自动机, 其中所述元运行时引擎基于所接收的自动机执行所述程序片段。
18. 如权利要求7所述的系统,其特征在于,所述自动机包括定义所述活 动在所述一组状态中的转换的一个或多个转换条件,还包括与第一活动相关联 的第一自动机和与第二活动相关联的第二自动机,其中所述第一活动的第一自 动机的转换条件取决于所述第二活动的第二自动机的当前状态。
19. 一种或多种具有用于对工作流钝化建模的计算机可执行模块的计算机可读介质,所述模块包括用于定义与工作流中的活动606相关联的自动机500的自动机模块212, 所定义的自动机500具有与之相关联的一组状态以及对应于每一状态的一个或 多个方法;用于基于由所述自动机模块212定义的自动机500执行包括所述活动606 的程序片段的执行机模块214;以及用于响应于接收针对正由所述执行机模块214执行的程序片段的挂起信 号,捕捉所述程序片段的延续数据210并释放与所述程序片段相关联的资源的 延续模块216,所述延续数据210表示所述程序片段的延续。
20. 如权利要求19所述的计算机可读介质,其特征在于,还包括用于响 应于接收针对正由所述执行机模块执行的程序片段的恢复信号,还原由所述延 续模块捕捉到的所述程序片段的延续数据的恢复模块,其中所述执行机模块基 于所还原的延续数据恢复所述程序片段的执行。
全文摘要
提供用于虚拟化托管执行环境的工作流引擎。工作流引擎基于自动机和与之相关联的方法来执行工作流。工作流引擎捕捉与正在执行的工作流相关联的延续以允许对现实过程的建模。
文档编号G06F9/44GK101416214SQ200780012432
公开日2009年4月22日 申请日期2007年2月21日 优先权日2006年3月30日
发明者A·J·沙加, D·K·舒克拉, M·梅达, R·B·施米特 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1