CN103257858A - 基于连续的运行时中的声明性动态控制流 - Google Patents
基于连续的运行时中的声明性动态控制流 Download PDFInfo
- Publication number
- CN103257858A CN103257858A CN2013100129446A CN201310012944A CN103257858A CN 103257858 A CN103257858 A CN 103257858A CN 2013100129446 A CN2013100129446 A CN 2013100129446A CN 201310012944 A CN201310012944 A CN 201310012944A CN 103257858 A CN103257858 A CN 103257858A
- Authority
- CN
- China
- Prior art keywords
- continuously
- group
- dynamically
- event
- continuous
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000004590 computer program Methods 0.000 claims abstract description 48
- 230000009471 action Effects 0.000 claims abstract description 31
- 230000000875 corresponding effect Effects 0.000 claims description 66
- 230000004044 response Effects 0.000 claims description 26
- 230000014509 gene expression Effects 0.000 claims description 16
- 230000001276 controlling effect Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 description 42
- 238000010586 diagram Methods 0.000 description 21
- 230000000694 effects Effects 0.000 description 16
- 241001620634 Roger Species 0.000 description 13
- 238000004891 communication Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 239000012634 fragment Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011217 control strategy Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000013396 workstream Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
Abstract
本发明涉及基于连续的运行时中的声明性动态控制流。在此描述了能够根据基于连续的运行时中的声明性动态控制流来执行计算机程序的技术。声明性动态控制流标识出一组连续。根据基于连续的运行时中的计算机程序的执行来提供对应于声明性动态控制流的逻辑的表示。该声明性动态控制流标识出一组连续。每个连续都标识出定义相应事件的相应规则、以及将在相应事件发生以后执行的相应动作。对所指定的事件发生进行确定。基于所指定的事件的发生动态地修改该组连续。
Description
技术领域
本发明涉及基于连续的运行时中的声明性动态控制流。
背景技术
运行时是一种软件组件,其支持以指定计算机编程语言编写的计算机程序的执行。基于连续(continuation-based)的运行时按照执行单元(例如活动)对算机程序进行建模,其中所述执行单元将给定领域的特定语义抽象化。这些语义可以指基本控制流、原语、或者高级业务功能。这样的原语常常是通用性质的,并且这样的业务功能常常是领域特有的和/或业务特有的。基于连续的运行时的一种示例性使用是对表示业务过程的人类工作流进行建模。业务过程常常改变以适应不断改变的业务环境并且因此通常被看成是固有地动态的。业务过程的常见要求是以数据驱动的方式动态地作出判定的能力。例如,被选择来批准公司购买的批准者的列表可能在时间上根据业务的外部条件(例如批准者可能生病、新的经理可能被雇用到与该购买相关联的业务单位中等等)而变化。
基于连续的运行时中的诸如控制流之类的针对声明性和可视编程体验的编程结构在以数据驱动的方式动态作出判定方面具有若干挑战。这样的编程结构常常是自然地静态的,因为可视化中的物理布局具有某种形式的与程序执行流的直接耦合。在一个示例中,可能难以在二维可视画布中表达分支向并行原语编程构造的动态添加。根据该示例,要添加的分支可能在设计并行原语编程构造时是未知的。进一步根据该示例,另一组构造可能被添加到该并行原语编程构造以响应管理事件。
当使用现有原语对针对声明性和可视编程体验的编程结构进行建模时,所得到的模型可能是相对复杂、难以生成的和/或不完整的。例如,所得到的模型可能不具有对细微和细粒度的控制流方面的访问,因为该模型不能提供控制编程结构的方式。在一个示例中,该模型不能提供允许外部用户操纵批准者列表、取消等等的方式。人工地对编程结构进行建模以应对(和处理)业务事件和管理事件可能是相对困难的、易错的和/或不可能的。
发明内容
在此所述的各个方案尤其针对根据基于连续的运行时中的声明性动态控制流来执行计算机程序。声明性动态控制流标识出一组连续。每个连续都标识出定义相应事件的相应规则、以及将在相应事件发生以后执行的相应动作。基于连续的运行时是被配置为支持连续的运行时,其中所述连续包括由声明性动态控制流标识出的那组连续中的那些连续。由该组连续中的动态连续标识出的规则所定义的事件被称为“业务事件”。不是由该组连续中的动态连续标识出的规则所定义的事件被成为“管理事件”或“带外事件”。例如,带外事件可以是由该组连续中的静态连续标识出的规则所定义的事件。在另一示例中,带外事件可以是不是由该组连续中的连续标识出的规则所定义的事件、而不管该连续是静态的还是动态的。
描述了一种用于根据基于连续的运行时中的声明性动态控制流来执行计算机程序的方法。根据该方法,根据基于连续的运行时中的计算机程序的执行来提供对应于声明性动态控制流的逻辑的表示。该声明性动态控制流标识出一组连续。该组中的连续标识出定义相应事件的相应规则,并且还标识出将在相应事件发生以后执行的相应动作。对所指定的事件发生进行确定。基于所指定的事件的发生动态地修改该组连续。所指定的事件可以是业务事件或管理事件。
描述了一种包括提供模块、确定模块和修改模块的系统。提供模块被配置为根据基于连续的运行时中的计算机程序的执行来提供对应于声明性动态控制流的逻辑的表示。该声明性动态控制流标识出一组连续。该组中的每个连续都标识出定义相应事件的相应规则,并且还标识出将在相应事件发生以后执行的相应动作。确定模块被配置为确定所指定的事件是否发生。修改模块被配置为响应于所指定的事件的发生动态地修改该组连续。
描述了一种计算机程序产品,该计算机程序产品包括计算机可读介质,该计算机可读介质上记录了用于使得基于处理器的系统能够根据基于连续的运行时中的声明性动态控制流来执行计算机程序的计算机程序逻辑。计算机程序产品包括第一、第二,和第三程序逻辑模块。第一程序逻辑模块用于使得基于处理器的系统能够根据基于连续的运行时中的计算机程序的执行来提供对应于声明性动态控制流的逻辑的表示。该声明性动态控制流标识出一组连续。该组中的每个连续都标识出定义相应事件的相应规则,并且还标识出将在相应事件发生以后执行的相应动作。第二程序逻辑模块用于使得基于处理器的系统能够确定所指定的事件是否发生。第三程序逻辑模块用于使得基于处理器的系统能够响应于所指定的事件的发生动态地修改该组连续。
提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。此外,注意到本发明不限于在详细描述和/或本文的其它章节中所述的特定实施例。本文呈现这些实施例仅用于说明性的用途。基于本文所包含的描述,其它实施例对于相关领域的技术人员将是显而易见的。
附图说明
本文结合的并且组成本说明书的一部分的附图示出了本发明的各实施例,并且还与本描述一起用于解释所涉及的原理以及使相关领域的技术人员能够实现和使用所公开的技术。
图1是根据一实施例的示例计算机系统的框图。
图2-4描绘了根据各实施例的用于根据基于连续的运行时中的声明性动态控制流来执行计算机程序的示例性方法的流程图。
图5是根据一实施例的图1中示出的动态控制流模块的示例性实施方式的框图。
图6和7描绘了根据各实施例的过程的相应实例的图形表示。
图8描绘了其中可实现各实施例的示例计算机。
通过下面的结合附图对本发明进行的详细说明,所公开的技术的特点和优点将变得更加显而易见,在附图中,类似的附图标记在整个说明书中标识对应的元素。在附图中,相同的参考标号一般指相同的、功能上相似的和/或结构上相似的元素。其中元素第一次出现的附图由对应的参考标号中最左侧的数字指示。
详细描述
I.引言
以下详细描述参考示出本发明的示例性实施例的附图。但是,本发明的范围不限于这些实施例,而是由所附权利要求书定义。因此,诸如所示实施例的修改版本之类的在附图所示之外的实施例仍然由本发明所包含。
本说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指的是所述实施例可包括特定的特征、结构或特点,但是每一实施例不一定包括该特定的特征、结构或特点。此外,这些短语不一定指相同的实施例。此外,当结合实施例描述具体特征、结构或特性时,应当理解在相关领域的技术人员的知识范围内能够结合其他实施例来实现具体特征、结构或特性,无论是否被显式地描述。
II.示例实施例
在此所述的示例性实施例能够根据基于连续的运行时中的声明性动态控制流来执行计算机程序。声明性动态控制流标识出一组连续。每个连续都标识出定义相应事件的相应规则、以及将在相应事件发生以后执行的相应动作。基于连续的运行时是被配置为支持连续的运行时,其中所述连续包括由声明性动态控制流标识出的那组连续中的那些连续。由该组连续中的动态连续标识出的规则所定义的事件被称为“业务事件”。不是由该组连续中的动态连续标识出的规则所定义的事件被称为“管理事件”或“带外事件”。例如,带外事件可以是由该组连续中的静态连续标识出的规则所定义的事件。在另一示例中,带外事件可以是不是由该组连续中的连续标识出的规则所定义的事件、而不管该连续是静态还是动态的。
与用于执行计算机程序的常规技术相比,在此所述的示例性技术具有多种益处。例如,所述示例性技术可以提供支持声明性和可视编程体验的声明性编程抽象。示例性技术能够在监视业务事件和管理事件二者的同时执行这样的声明性编程抽象。这可以提供机会来修改事件矢量、包括由连续标识出的规则所定义的事件,其中所述连续是由声明性动态控制连续流标识出的。该声明性编程抽象可以具有对该声明性动态控制流的细粒度方面的方面的访问(比如取消)。将这样的声明性编程抽象包括在过程中可以致使该过程更易于分析。
图1是根据一实施例的示例计算机系统100的框图。一般来说,计算机系统100操作来响应于从用户接收的请求(如超文本传输协议(HTTP)请求)向用户提供信息。信息可包括文档(如网页、图像、视频文件等等)、可执行程序的输出、和/或任何其他合适类型的信息。根据在此所述的示例性实施例,计算机系统100响应于来自用户的这样的请求根据基于连续的运行时中的声明性动态控制流来执行计算机程序。在下面的讨论中提供了关于根据基于连续的运行时中的声明性动态控制流来执行计算机程序的技术的细节。
如图1所示,计算机系统100包括多个用户系统102A-102M、网络104、以及多个服务器106A-106N。用户系统102A-102M与服务器106A-106N之间的通信是使用公知的网络通信协议通过网络104执行的。网络104可以是广域网(如因特网)、局域网(LAN)、另一类型的网络、或它们的组合。
用户系统102A-102M是能够与服务器106A-106N通信的处理系统。处理系统的示例是包括至少一个能够根据指令集操纵数据的处理器的系统。例如,处理系统可以是计算机、个人数字助理等。用户系统102A-102M被配置成向服务器106A-106N提供请求来请求存储在服务器106A-106N上(或经服务器以其他方式可访问)的信息。例如,用户可使用用户所拥有的或以其他方式可访问的用户系统102上部署的客户端(如web浏览器、web爬行器、或其他类型的客户端)来发起执行计算机程序的请求。根据一些示例性实施例,用户系统102A-102M能够访问由服务器104A-104N托管(host)的域(如网站),使得用户系统102A-102M可访问通过所述域可用的信息。这样的域包括网页,所述网页可作为超文本标记语言(HTML)文档和在其中被链接的对象(如文件)来提供。
能够认识到,任何一个或多个用户系统102A-102M都可与任何一个或多个服务器106A-106N通信。尽管图1中用户系统102A-102M被描绘为台式计算机,但是相关领域的技术人员将理解用户系统102A-102M可包括任何启用客户端的系统或设备,包括但不限于台式计算机、膝上型计算机、平板计算机、个人数字助理、蜂窝电话等等。
服务器106A-106N是能够与用户系统102A-102M通信的处理系统。服务器106A-106N被配置成执行响应于从用户接收到请求而向用户提供信息的计算机程序。例如,信息可包括文档(如网页、图像、视频文件等等)、可执行程序的输出、和/或任何其他合适类型的信息。根据某些示例实施例,服务器106A-106N被配置成托管各个网站,使得网站可由计算机系统100的用户访问。
出于说明性目的,第一服务器106A被示为包括基于连续的运行时模块108。基于连续的运行时模块108被配置为提供基于连续的运行时,其中所述运行时支持由声明性动态控制流标识出的一组连续。
基于连续的运行时模块108包括动态控制流模块110。动态控制流模块110被配置为根据基于连续的运行时中的声明性动态控制流来执行计算机程序。下面参考图2-5更详细地讨论用于根据基于连续的运行时中的声明性动态控制流来执行计算机程序的技术。
出于说明性目的而不旨在构成限制,基于连续的运行时模块108和动态控制流模块110被示为并入到第一服务器106A中。能够认识到,基于连续的运行时模块108和动态控制流模块110(或其任一部分)可被并入任何一个或多个用户系统102A-102M中。例如,基于连续的运行时模块108和/或动态控制流模块110可被并入一个或多个用户系统102A-102M中,而基于连续的运行时模块108和/或动态控制流模块110的服务器侧方面可被并入第一服务器106A中。在另一示例中,基于连续的运行时模块108和动态控制流模块110可被分布在用户系统102A-102M中。在另一示例中,基于连续的运行时模块108和动态控制流模块110可被并入用户系统102A-102M中的单个用户系统中。
动态控制流模块110可以以各种方式来实现以根据基于连续的运行时中的声明性动态控制流来执行计算机程序,包括以硬件、软件、固件或其任何组合来实现。例如,动态控制流模块110可以被实现为被配置为在一个或多个处理器中执行的计算机程序代码。在另一示例中,动态控制流模块110可以被实现为硬件逻辑/电路。在一实施例中,动态控制流模块110可被实现在片上系统(SoC)中。每个SoC可包括一集成电路芯片,该集成电路芯片包括以下一个或多个:处理器(如微控制器、微处理器、数字信号处理器(DSP)等等)、存储器、一个或多个通信接口、和/或用于执行其功能的进一步的电路和/或嵌入的固件。
图2-4描绘了根据各实施例的用于根据基于连续的运行时中的声明性动态控制流来执行计算机程序的示例性方法的流程图200、300和400。流程图200、300和400可由例如图1中所示的系统100的动态控制流模块110来执行。出于说明性的目的,根据一实施例,流程图200、300和400是参照图5中所示的动态控制流模块500来描述的,该动态控制流模块500是动态控制流模块110的示例。如图5所示,动态控制流模块500包括提供模块502、确定模块504、修改模块506、以及触发模块508。基于关于流程图200、300和400的讨论,另外的结构和操作实施例对于相关领域的技术人员将是显而易见的。
如图2所示,流程图200的方法在步骤202处开始。在步骤202,根据基于连续的运行时中的计算机程序的执行来提供对应于声明性动态控制流的逻辑的表示。该声明性动态控制流标识出一组连续。该组中的每个连续都标识出定义相应事件的相应规则、以及将在相应事件发生以后执行的相应动作。能够理解,每个连续中的相应规则和相应动作可以由计算机程序的作者来定义,但是示例性实施例的范围在此方面不受限。动作可以是简单动作或合成动作。简单动作是单个动作。合成动作是多个动作的组合。该逻辑的表示可以是图形表示、基于文本的表示、其他合适类型的表示或其任何组合。例如,图形表示可以是二维(2D)表示或三维(3D)表示。在一示例性实施方式中,提供模块502根据基于连续的运行时中的计算机程序中的执行来提供与声明性动态控制流相对应的逻辑表示510。
在步骤204,监视由计算机程序接收的信息以同时获得对业务事件的发生的指示以及对管理事件的发生的指示。在一示例性实施方式中,确定模块504监视信息以同时获得业务事件指示符512以及管理事件指示符514。业务事件指示符512中的每个都指示业务事件的发生。管理事件指示符514中的每个都指示管理事件的发生。
在步骤206,确定所指定的事件发生。所指定的事件可以是业务事件或管理事件。业务事件是由规则定义的事件,其中所述规则是由该组连续中的动态连续标识出的。管理事件是如下的事件:该事件是由与声明性动态控制流相关联的规则所定义的、但不是由该组连续中的动态连续标识出的规则所定义的。在一示例性实施方式中,确定模块504确定所指定的事件发生。例如,确定模块504可以基于对业务事件指示符(例如任何业务事件指示符512)或管理事件指示符(例如任何管理事件指示符514)的接收来确定所指定的事件发生。根据该实施方式,确定模块504可以生成指示所指定的事件已经发生的修改指令516。例如,修改指令516可以响应于(例如,基于)所指定的事件的发生来指示修改模块修改该组连续。
在一个示例性实施例中,该逻辑是业务逻辑。因此,该组连续中的每个连续都可以是业务连续,并且所述多个相应事件中的每个事件都可以是业务事件。
在另一示例性实施例中,该逻辑是管理逻辑。因此,该组连续中的每个连续都可以是管理连续,并且所述多个相应事件中的每个事件都可以是管理事件。
在步骤208,基于所指定的事件的发生动态地修改该组连续。可以以多种方式中的任何方式来动态修改该组连续。例如,可以从该组连续中动态地移除一个或多个连续和/或可以将一个或多个连续动态地添加到该组连续。在后面参考图3提供从该组连续中移除连续的进一步讨论。对连续到该组连续的添加的进一步讨论将在后面参考图4来提供。在一示例性实施方式中,修改模块506修改该组连续。例如,修改模块506可以响应于(例如基于)对修改指令516的接收来修改该组连续。
在一示例性实施例中,步骤208包括动态修改该组连续中的连续的第一子集、而不是该组连续中的连续的第二子集。例如,可以从该组连续中动态地移除第一子集中的一个或多个连续和/或可以将一个或多个连续动态地添加到第一子集。根据该示例,包括在第二子集中的连续未被动态地修改。在该示例的一个方面,步骤208可以是原子的,使得从该组连续中动态地移除第一子集中的连续、以及将其他连续动态地添加到第一子集要么都被执行、要么都不被执行。
根据该实施例,修改指令516可以指示该组连续中的哪些连续要被修改。例如,修改指令516可以指示该组连续中的连续的第一子集要被动态地修改。进一步根据该实施例,修改指令516可以指示该组连续中的连续的第二子集将不被动态地修改。
如上面参考步骤202所述,该组连续中的每个连续都标识出定义相应事件的相应规则。在一示例性实施例中,这些事件对应于一组相应批准者对共同主题的批准。例如,所述批准者可以被选择以批准文档的公开、费用的支付、雇员对会议的出席、休假请求等等。根据该实施例,步骤206包括确定该组批准者被修改。例如,可以在步骤206确定:一个或多个批准者被从该组批准者中移除和/或一个或多个批准者被添加到该组批准者。
在前述实施例的一方面,确定该组批准者被修改包括:确定一个或多个第一批准者、而不是一个或多个第二批准者被从该组批准者中移除。根据该方面,步骤208包括:从该组连续中移除与所述一个或多个相应第一批准者相对应的一个或多个第一连续、而不是与所述一个或多个相应第二批准者相对应的一个或多个第二连续。
在前述实施例的另一方面,确定该组批准者被修改包括:确定至少一个批准者被添加到该组批准者。根据该方面,步骤208包括:将与所述至少一个相应批准者相对应的至少一个连续添加到该组连续而不对该组连续中的其他连续执行粗粒度的取消。粗粒度的取消是如下的操作:该操作响应于在步骤206确定所指定的事件发生而取消该组连续中的所有连续,并且把在执行步骤206以前曾经处于该组连续中的连续与任何新连续一起添加回该组连续。新连续是如下的连续:所述连续在执行步骤206以前未处于该组连续中,并且将基于所指定的事件的发生而被添加到该组连续。另一方面,细粒度的取消可用于将任何新连续添加到该组连续,而不取消在执行步骤206以前曾处于该组连续中的所有连续并接着将这些连续添加回该组连续。
在某些示例实施例中,可以不执行流程图200中的一个或多个步骤202、204、206和/或208。此外,可以执行除步骤202、204、206和/或208以外的步骤或代替这些步骤的步骤。能够理解,在流程图200的每个步骤中执行的动作可以是原子的。例如,如果步骤202是原子的,则要么步骤202中的所有动作都被执行,要么没有步骤202中的动作被执行。如果步骤204是原子的,则要么步骤204中的所有动作都被执行,要么没有步骤204中的动作被执行,以此类推。
在示例性实施例中,执行图3的流程图300的步骤来代替执行流程图200的步骤208。如图3所示,流程图300的方法在步骤302处开始。在步骤302,基于所指定的事件的发生从该组连续中移除一个或多个连续。在一示例性实施方式中,修改模块506从该组连续中移除所述一个或多个连续。例如,修改模块506可以响应于接收到修改指令516从该组连续中移除所述一个或多个连续。根据该实施方式,修改模块506可以响应于所述一个或多个连续被从该组连续中移除而生成触发指令518。触发指令518可以指示:所述一个或多个连续被从该组连续中移除。
在步骤304,触发与所述一个或多个连续中的至少一个相关联的取消动作的执行。取消动作是响应于一个或多个连续被从一组连续中移除而要采取的动作。取消动作的一个示例是将消息发送给因所述一个或多个连续被从该组连续中移除而受影响的人。该消息可以指示:所述一个或多个连续已经被从该组连续中移除。例如,该消息可以指示:该人不需要执行由已从该组连续中移除的一个或多个相应连续所标识出的一个或多个动作。在一示例性实施方式中,触发模块508触发取消动作的执行。例如,触发模块508可以响应于接收到触发指令518来触发取消动作的执行。根据该示例,触发指令518可以指定:该取消动作将被执行。
在一示例性实施例中,由该组连续标识出的规则所定义的事件对应于该组相应批准者对共同主题的批准。根据该实施例,在步骤302从该组连续中移除一个或多个连续对应于从该组批准者中移除一个或多个相应批准者。在该实施例的一方面,取消动作的执行可以包括:将消息(例如电子邮件、短消息服务(SMS)、即时消息(IM)等等)发送给所述一个或多个批准者(和/或其老板)之一以指定一个或多个批准者被从该组批准者中移除。
在一些示例性实施例中,可以不执行流程图300的一个或多个步骤302和/或306。此外,可以执行除步骤302和/或304以外的或代替这些步骤的步骤。
在另一示例性实施例中,执行图4的流程图400的步骤来代替执行流程图200的步骤208。如图4所示,流程图400的方法在步骤402处开始。在步骤402,基于所指定的事件的发生将一个或多个连续添加到该组连续。在一示例性实施方式中,修改模块506将所述一个或多个连续添加到该组连续。例如,修改模块506可以响应于接收到修改指令516来将所述一个或多个连续添加到该组连续。根据该实施方式,修改模块506可以响应于所述一个或多个连续被添加到该组连续而生成触发指令518。触发指令518可以指示:所述一个或多个连续被添加到该组连续。
在步骤404,触发与所述一个或多个连续中的所指派的连续相关联的初始化动作的执行。例如,可以响应于将所述一个或多个连续添加到该组连续来触发初始化动作的执行。初始化动作是响应于一个或多个连续添加到一组连续而要采取的动作。初始化动作的一个示例是将消息发送给因所述一个或多个连续添加到该组连续而受影响的人。该消息可以指示:所述一个或多个连续已经被添加到该组连续。例如,该消息可以指示:该人要执行由被添加到该组连续的一个或多个相应连续所标识出的一个或多个动作。能够认识到,可以在步骤404触发与任何数目的所指派的连续相关联的任何数目的初始化动作的执行。在一示例性实施方式中,触发模块508触发初始化动作的执行。例如,触发模块508可以响应于接收到触发指令518来触发初始化动作的执行。根据该示例,触发指令518可以指定:该初始化动作将被执行。触发模块508可以生成指示初始化动作的执行被触发和/或完成的触发确认520。
在一示例性实施例中,由该组连续标识出的规则所定义的事件对应于该组相应批准者对共同主题的批准。根据该实施例,在步骤402将所述一个或多个连续添加到该组连续对应于将一个或多个相应批准者添加到该组批准者。在该实施例的一方面,初始化动作的执行可以包括:将消息(例如电子邮件、短消息服务(SMS)、即时消息(IM)等等)发送给所指派的批准者(和/或其老板)以指定:该所指派的批准者被添加到该组批准者。
在步骤406,执行监视以获悉由所指派连续标识出的规则所定义的所指派事件的发生。例如,可以响应于触发初始化动作的执行来执行监视。根据上面参考步骤404所述的示例性实施例,步骤406可以包括监视以获悉由添加到该组批准者的所指派批准者的批准的发生。在一示例性实施方式中,确定模块504监视以获悉所指派事件的发生。例如,确定模块504可以响应于接收到触发确认520来监视以获悉所指派事件的发生。
在某些示例实施例中,可以不执行流程图402的一个或多个步骤404、406和/或400。此外,可以执行除步骤402、404、和/或406以外的或代替这些步骤的步骤。
能够认识到,动态控制流模块500可以不包括提供模块502、确定模块504、修改模块506、和/或触发模块508中的一个或多个。此外,动态控制流模块500可以包括提供附加于或替代于提供模块502、确定模块504、修改模块506、和/或触发模块508的模块。
基于连续的运行时模块108、动态控制流模块110、提供模块502、确定模块504、修改模块506、触发模块508、流程图200、流程图300和流程图400可以以硬件、软件、固件或其任何组合来实现。
例如,基于连续的运行时模块108、动态控制流模块110、提供模块502、确定模块504、修改模块506、触发模块508、流程图200、流程图300和/或流程图400可以被实现为被配置为在一个或多个处理器中执行的计算机程序代码。
在另一示例中,基于连续的运行时模块108、动态控制流模块110、提供模块502、确定模块504、修改模块506、触发模块508、流程图200、流程图300和/或流程图400可以被实现为硬件逻辑/电路。例如,在一实施例中,基于连续的运行时模块108、动态控制流模块110、提供模块502、确定模块504、修改模块506、触发模块508、流程图200、流程图300和/或流程图400中的一个或多个可以被实现在片上系统(SoC)上。SoC可包括集成电路芯片,该集成电路芯片包括以下一个或多个:处理器(如微控制器、微处理器、数字信号处理器(DSP)等等)、存储器、一个或多个通信接口、和/或用于执行其功能的进一步的电路和/或嵌入的固件。
在一示例性实施例中,生成编程模型构造(例如活动),所述编程模型构造表示对一组事件作出反应的过程中的步骤,其中所述事件可在编程模型构造的执行期间改变。根据该实施例,编程模型构造包括可被用户配置(例如,设置)的属性以控制具有一组易变连续的控制流步骤被建模并且以对取消的细粒度控制被执行的方式。所述属性例如可以包括:值列表、主体(body)、主体完成的活动、以及控制活动。值列表中的每个值都表示传入事件。为每个传入事件创建连续。每个连续都标识出为之创建所述连续的事件、以及与该事件相关联的动作。
主体包括要对值列表中表示的每个事件执行的业务逻辑。这样的业务逻辑可以是充分利用基于连续的运行时的相对高的可合成和递归性质的活动。主体指定控制流和所选连续机制以调度每个事件并对每个事件作出反应。当主体的实例完成执行时,主体完成的活动被调度。
主体完成的活动提供了操纵该组未决事件的机会。例如,新事件可以被添加到该组未决事件,和/或该组中的未决事件可以被取消,从而导致该组现有连续的改变。
控制活动允许提供如下的活动:所述活动在编程模型构造的整个执行期间充当所述构造的控制器。例如,该活动可以展示传入事件并对传入事件作出反应。根据该示例,控制活动能够处理管理事件。
能够认识到,编程模型构造可以用任何其他现有的基于连续的运行时构造(例如Sequence、Parallel、FlowChart、StateMachine等等)来配置以创建对该组事件在执行期间的改变作出反应的控制策略。
图6和7描绘了根据各实施例的过程的相应实例的图形表示600和700。如图6所示,图形表示600包括多个批准者元素602A-602D、控制活动元素604、主体元素606以及主体完成的元素608。批准者元素602A-602D分别标识出被包括在批准者列表中的Roger、Syd、Nick和Richard。例如,Roger、Syd、Nick和Richard可以为具有文档批准过程的公司工作,该文档批准过程要求四个工程师在接下来五天内批准文档。根据该示例,Roger、Syd、Nick和Richard是已经被选择为批准该文档的工程师。Roger、Syd、Nick和Richard对该文档的批准分别对应于相应的传入事件。控制活动元素604示出了批准者可以被添加到批准者列表和/或从批准者列表中移除。控制活动元素604还示出了批准步骤可以被完全取消。主体元素606指示:为每个传入事件调度主体。例如,关于Roger对文档的批准来调度主体的实例;关于Syd对文档的批准来调度主体的实例等等。主体完成的元素608指示:当主体的每个实例完成执行时调度主体完成的活动。注意,编程模型构造是监视业务事件(例如等待Roger、Syd、Nick或Richard参与该过程)和管理事件(例如添加新批准者、移除批准者或取消批准步骤)。
出于图解说明的目的而假定:Roger立即批准该文档,但是Syd、Nick和Richard决定等几天,因为他们忙于其他任务。在该时间期间,Syd确定他需要离开办公室一星期以处理家庭急事并且因此将不能参与该过程。文档的所有者决定从批准者列表中移除Syd并且添加David作为对Syd的替代。下面参考图7的图形表示700来讨论Roger的批准、Syd的移除以及David的添加的结果。
如图7所示,图形表示700包括多个批准者元素702A-702E、控制活动元素704、主体元素706以及主体完成的元素708。控制活动元素704、主体元素706以及主体完成的元素708在功能上类似于图6的控制活动元素604、主体元素606、以及主体完成的元素608。批准者元素702A-702E分别标识出Roger、Syd、Nick、Richard和David。过程从文档的所有者接收到用于将Syd从批准者列表移除的指令,这由箭头710来描绘。因此,出于说明目的,标识出Syd的批准者元素702B被示为用X被划去。过程从文档的所有者接收到用于将David添加到批准者列表的指令,这由箭头712来描绘。因此,标识出David的批准者元素702E被示为与图6相比在图7中被添加。能够认识到,从批准者列表移除Syd并将David添加到批准者列表可以是原子操作的相关方面。如果是这样,则要么Syd被移除并且David被添加、要么Syd不被移除并且David不被添加。
表示Roger批准文档的指示被过程接收,这由箭头714来描述。出于说明目的,可以假定:未接收到指示Nick、Richard或David对文档的批准的指示。因此,标识出Roger的批准者元素702A被同其他批准者元素702B-702E区分开。例如,相比于同其他相应批准者元素702B-702E相关联的参数的值,与元素702A相关联的参数的值可被改变。根据该示例,出于说明目的,批准者元素702被示为与其他批准者元素702B-702E相比为被加粗。
如图7所示,过程等待Nick、Richard和David批准该文档。Roger在David在批准者列表中替代Syd以前批准了该文档并且Roger不知道Syd已经被David替代,因为该替代与Roger不相关。例如,未向Roger通知Syd被从批准者列表中移除,并且Syd的移除不影响之前接收到的表示Roger对文档的批注的指示。因此,Roger不需要提供对文档的另一批准。
诸如上面参考图6和7所述的场景之类的场景可以用本文献中所述的编程模型构造来建模。编程模型构造中的值列表最初可以包括批准者的原始列表(即Roger、Syd、Nick和Richard)。主体可以被配置为将电子邮件发送给每个批准者并且然后等待从批准者列表中的任何批准者接收批准消息。当主体被完成时,完成的主体可以检查必需的一组批准是否已经被接收并且相应地调整该组连续。电子邮件可以被发送给请求者(例如通过添加活动以将电子邮件发送给主体完成的活动)。控制活动可以被配置为并行地监听控制事件、等待向批准者列表的添加和移除或者完全取消批准步骤。一旦Roger批准了该文档,则电子邮件就可以被发送给文档所有者,并且与Roger相对应的事件可以被从该组事件中移除。当Syd要被移除并且David要被添加时,两个消息可以被发送给控制活动。例如,第一消息可以指定:对应于Syd的事件将被从该组事件中移除,从而导致等待Syd批准的主体实例的取消。第二消息可以指定:对应于David的事件将被添加到该组事件,从而导致等待David批准的主体被调度。
编程模型构造是一种控制流构造,其可以由任何其他现有活动构成以在基于继续的运行时中以声明方式对程序进行建模。该解决方案的结果可以是用于描述控制该组连续的程序的相对高级(亦称上级)的创作体验,其中所述程序用对连续的取消的细粒度控制来对所述连续作出反应,并且所述程序允许可变更该组连续的外部控制消息。该体验适用于多种环境,比如用于工作流或流水线的可视编程环境。能够认识到,上级创作体验可以采取不同形式以适应不同领域的需要。
图8描绘其中可实现各实施例的示例计算机800。图1中所示的客户机102A-102M中的任何一个或多个或服务器106A-106N中的任何一个或多个(或图1和5中所示的它们的任何一个或多个子组件)可使用计算机800来实现,包括计算机800的一个或多个特征和/或替代特征。计算机800可以是例如常规个人计算机、移动计算机或工作站形式的通用计算设备,或者计算机800可以是专用计算设备。此处所提供的对计算机800的描述只是为了说明,并不是限制性的。实施例也可以在相关领域的技术人员所知的其它类型的计算机系统中实现。
如图8所示,计算机800包括处理单元802、系统存储器804和总线806,总线804将包括系统存储器802在内的各种系统组件耦合到处理单元1002。总线806表示若干类型的总线结构中的任何一种总线结构的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及处理器或使用各种总线体系结构中的任何一种的局部总线。系统存储器804包括只读存储器(ROM)808和随机存取存储器(RAM)810。基本输入/输出系统812(BIOS)储存在ROM808中。
计算机800还具有一个或多个以下驱动器:用于读写硬盘的硬盘驱动器814、用于读或写可移动磁盘816的磁盘驱动器818、以及用于读或写诸如CDROM、DVD ROM或其他光介质之类的可移动光盘820的光盘驱动器822。硬盘驱动器814、磁盘驱动器816,以及光驱动器820分别通过硬盘驱动器接口824、磁盘驱动器接口826,以及光学驱动器接口828连接到总线806。驱动器以及它们相关联的计算机可读存储介质为计算机提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然描述了硬盘、可移动磁盘和可移动光盘,但是,也可以使用诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等等之类的其他类型的计算机可读存储介质来储存数据。
数个程序模块可被储存在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统830、一个或多个应用程序832、其他程序模块834以及程序数据836。应用程序832或程序模块834可以包括例如用于实现下列各项的计算机程序逻辑:基于连续的运行时模块108、动态控制流模块110、提供模块502、确定模块504、修改模块506、触发模块508、流程图200(包括流程图200的任何步骤)、流程图300(包括流程图300的任何步骤)、和/或流程图400(包括流程图400的任何步骤)。
用户可以通过诸如键盘838和定点设备840之类的输入设备向计算机800中输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、触敏屏、相机、加速度计、陀螺仪等等。这些及其他输入设备常常通过耦合到总线802的串行端口接口842连接到处理单元806,但是,也可以通过其他接口,诸如并行端口、游戏端口、通用串行总线(USB)端口,来进行连接。
显示设备844(例如监视器)也通过诸如视频适配器846之类的接口连接到总线806。除了显示设备844之外,计算机800还可包括其他外围输出设备(未示出),如扬声器和打印机。
计算机800通过网络接口或适配器848、调制解调器850、或用于通过网络建立通信的其他装置连接到网络852(例如,因特网)。调制解调器852(可以是内置的或外置的)通过串行端口接口842连接到总线806。
如此处所用的,术语“计算机程序介质”以及“计算机可读介质”用于泛指介质,诸如与硬盘驱动器814相关联的硬盘、可移动磁盘818、可移动光盘822,以及其他介质,诸如闪存卡、数字视频盘、随机读取存储器(RAM)、只读存储器(ROM)等。这些计算机可读存储介质与通信介质相区别且不重叠。通信介质通常在诸如载波等已调制数据信号中承载计算机可读指令、数据结构、程序模块或者其它数据。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括无线介质,如声学、RF、红外和其它无线介质。示例实施例也针对这些通信介质。
如上文所指示的,计算机程序和模块(包括应用程序832及其他程序模块834)可被储存在硬盘、磁盘、光盘、ROM或RAM上。这样的计算机程序也可以通过网络接口850或串行端口接口842来接收。这些计算机程序在由应用程序执行或加载时使得计算机800能够实现此处所讨论的实施例的特征。相应地,这样的计算机程序表示计算机800的控制器。
示例实施例还涉及包括存储在任何计算机可用介质上的软件(例如计算机可读指令)的计算机程序产品。这样的软件,当在一个或多个数据处理设备中执行时,使数据处理设备如此处所描述的那样操作。实施例可使用现在已知或将来知晓的任何计算机可使用或计算机可读介质。计算机可读介质的例子包括但不限于存储设备,诸如RAM、硬盘、软盘、CD ROM、DVD ROM、Zip盘、磁带、磁存储设备、光存储设备、基于MEMS的存储设备、基于纳米技术的存储设备,等等。
III.示例性代码片段
下面是两个示例性代码片段,其分别被标记为“示例性代码片段#1”和“示例性代码片段#2”。
示例性代码片段#1
下面的代码片段展示了用于编程模型构造活动的可能的接口。
示例性代码片段#2
下面的代码片段展示了将编程模型构造用于对批准者过程(例如人类工作流)建模的示例性使用。对编程模型构造的使用被显示在“BEGIN OF ApprovalStep(批准步骤的开始)”与“END OF Approval Step(批准步骤的结束)”之间。
IV.结语
虽然以上描述了不同的实施例,但应当理解的是它们只是作为示例而非限制。对于相关领域的技术人员显而易见的是,可以对其做出各种改变而不背离本发明的精神和范围。因此,本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。
Claims (10)
1.一种用于根据基于连续的运行时中的声明性动态控制流来执行计算机程序的方法,该方法包括:
根据所述基于连续的运行时中的所述计算机程序的执行来提供(202)对应于所述声明性动态控制流的逻辑(510)的表示,所述声明性动态控制流标识出一组连续,该组连续标识出定义多个相应事件的多个相应规则、以及将在所述多个相应事件发生以后执行的多个相应动作;
确定(204)所指定的事件发生;以及
基于所指定的事件的发生动态地修改(206)该组连续。
2.如权利要求1所述的方法,其特征在于,动态地修改该组连续包括:
基于所指定的事件的发生从该组连续中移除一个或多个连续。
3.如权利要求2所述的方法,其特征在于,还包括:
响应于从该组连续中移除所述一个或多个连续来触发与所述一个或多个连续中的至少一个相关联的取消动作的执行。
4.如权利要求1所述的方法,其特征在于,动态地修改该组连续包括:
基于所指定的事件的发生将一个或多个连续添加到该组连续。
5.如权利要求4所述的方法,其特征在于,还包括:
响应于将所述一个或多个连续添加到该组连续来触发与所述一个或多个连续中的所指派的连续相关联的初始化动作的执行;以及
响应于触发所述初始化动作的执行来监视以获悉由所指派的连续标识出的规则所定义的所指派的事件的发生。
6.一种用于根据基于连续的运行时中的声明性动态控制流来执行计算机程序的系统,该系统包括:
提供模块(502),所述提供模块(502)被配置为根据所述基于连续的运行时中的所述计算机程序的执行来提供对应于所述声明性动态控制流的逻辑(510)的表示,所述声明性动态控制流标识出一组连续,该组连续标识出定义多个相应事件的多个相应规则、以及将在所述多个相应事件发生以后执行的多个相应动作;
确定模块(504),所述确定模块(504)被配置为确定所指定的事件是否发生;以及
修改模块(506),所述修改模块(506)被配置为响应于所指定的事件的发生动态地修改该组连续。
7.如权利要求6所述的系统,其特征在于,所指定的事件是管理事件,所述管理事件是由与所述声明性动态控制流相关联的规则所定义的、但不是由该组连续中的动态连续标识出的规则所定义的的事件。
8.如权利要求6所述的系统,其特征在于,所述修改模块被配置为响应于所指定的事件的发生而动态地修改该组连续中的连续的第一子集、而不是该组连续中的连续的第二子集。
9.如权利要求6所述的系统,其特征在于,确定模块被配置为监视由所述计算机程序接收的信息以同时获得对业务事件的发生的指示以及对管理事件的发生的指示,每个业务事件都是由该组连续中的相应动态连续标识出的相应规则所定义的事件,每个管理事件都是由与所述声明性动态控制流相关联的规则所定义的、但不是由该组连续中的动态连续标识出的规则所定义的的事件。
10.一种计算机程序产品,所述计算机程序产品包括计算机可读介质,该计算机可读介质上记录了用于使得基于处理器的系统能够根据基于连续的运行时中的声明性动态控制流来执行计算机程序的计算机程序逻辑,所述计算机程序产品包括:
第一程序逻辑模块(502),第一程序逻辑模块(502)用于使得基于处理器的系统能够根据所述基于连续的运行时中的所述计算机程序的执行来提供对应于所述声明性动态控制流的逻辑(510)的图形表示,所述声明性动态控制流标识出一组连续,该组连续标识出定义多个相应事件的多个相应规则、以及将在所述多个相应事件发生以后执行的多个相应动作,所述多个事件对应于一组相应的批准者对共同主体的批准;
第二程序逻辑模块(504),所述第二程序逻辑模块(504)用于使得基于处理器的系统能够确定该组批准者是否被修改;以及
第三程序逻辑模块(506),所述第三程序逻辑模块(506)用于使得基于处理器的系统能够响应于该组批准者被修改而动态地修改该组连续。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/349,261 | 2012-01-12 | ||
US13/349,261 US8869107B2 (en) | 2012-01-12 | 2012-01-12 | Declarative dynamic control flow in continuation-based runtime |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103257858A true CN103257858A (zh) | 2013-08-21 |
CN103257858B CN103257858B (zh) | 2017-01-18 |
Family
ID=48780894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310012944.6A Active CN103257858B (zh) | 2012-01-12 | 2013-01-14 | 基于连续的运行时中的声明性动态控制流 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8869107B2 (zh) |
EP (1) | EP2802985A4 (zh) |
CN (1) | CN103257858B (zh) |
WO (1) | WO2013106355A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9575732B2 (en) * | 2013-06-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Providing design time projections for a visual program |
US10764169B2 (en) | 2017-10-09 | 2020-09-01 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for testing virtual network components deployed in virtual private clouds (VPCs) |
US11038770B2 (en) | 2018-02-01 | 2021-06-15 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for managing deployment and maintenance of network tools |
US10812349B2 (en) | 2018-02-17 | 2020-10-20 | Keysight Technologies, Inc. | Methods, systems and computer readable media for triggering on-demand dynamic activation of cloud-based network visibility tools |
US10951509B1 (en) | 2019-06-07 | 2021-03-16 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for providing intent-driven microapps for execution on communications network testing devices |
US11489745B2 (en) | 2019-10-15 | 2022-11-01 | Keysight Technologies, Inc. | Methods, systems and computer readable media for providing a declarative network monitoring environment |
US10713016B1 (en) * | 2020-05-04 | 2020-07-14 | Loyalty Juggernaut, Inc | Method of implementing rules on visual language using visual blocks |
US11360748B2 (en) * | 2020-05-04 | 2022-06-14 | Loyalty Juggernaut, Inc. | System and method of collectively tracking a behavior of a member across one or more dimensions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090222789A1 (en) * | 2008-02-29 | 2009-09-03 | International Business Machines Corporation | Compiler for a Declarative Event-Driven Programming Model |
US20100299300A1 (en) * | 2009-05-21 | 2010-11-25 | Microsoft Corporation | Runtime interpretation of declarative programs |
CN102007756A (zh) * | 2008-04-24 | 2011-04-06 | 国际商业机器公司 | 用于数据处理环境中的动态供应的方法和装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004114061A2 (en) | 2003-06-12 | 2004-12-29 | Reuters America | Business process automation through the use of workflow |
US7313533B2 (en) | 2003-07-11 | 2007-12-25 | International Business Machines Corporation | Systems and methods for monitoring and controlling business level service level agreements |
US7805324B2 (en) | 2004-10-01 | 2010-09-28 | Microsoft Corporation | Unified model for authoring and executing flow-based and constraint-based workflows |
US7631291B2 (en) * | 2004-10-01 | 2009-12-08 | Microsoft Corporation | Declarative representation for an extensible workflow model |
US20070239498A1 (en) | 2006-03-30 | 2007-10-11 | Microsoft Corporation | Framework for modeling cancellation for process-centric programs |
US8069439B2 (en) | 2006-03-30 | 2011-11-29 | Microsoft Corporation | Framework for modeling continuations in workflows |
US20070239505A1 (en) | 2006-03-30 | 2007-10-11 | Microsoft Corporation | Abstract execution model for a continuation-based meta-runtime |
US20080052314A1 (en) | 2006-08-25 | 2008-02-28 | Ritwik Batabyal | e-ENABLER FRAMEWORK |
US20090249293A1 (en) | 2008-03-31 | 2009-10-01 | International Business Machines Corporation | Defining Workflow Processing Using a Static Class-Level Network in Object-Oriented Classes |
US8336035B2 (en) * | 2008-12-16 | 2012-12-18 | Microsoft Corporation | Customizable dynamic language expression interpreter |
US8266604B2 (en) * | 2009-01-26 | 2012-09-11 | Microsoft Corporation | Transactional memory compatibility management |
US20100293538A1 (en) | 2009-05-15 | 2010-11-18 | Microsoft Corporation | Dynamic program updating in a continuation based runtime |
US8572618B2 (en) | 2010-05-07 | 2013-10-29 | Oracle International Corporation | Event driven change injection and dynamic extensions to a business process execution language process |
-
2012
- 2012-01-12 US US13/349,261 patent/US8869107B2/en active Active
-
2013
- 2013-01-09 EP EP13735679.6A patent/EP2802985A4/en not_active Ceased
- 2013-01-09 WO PCT/US2013/020715 patent/WO2013106355A1/en active Application Filing
- 2013-01-14 CN CN201310012944.6A patent/CN103257858B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090222789A1 (en) * | 2008-02-29 | 2009-09-03 | International Business Machines Corporation | Compiler for a Declarative Event-Driven Programming Model |
CN102007756A (zh) * | 2008-04-24 | 2011-04-06 | 国际商业机器公司 | 用于数据处理环境中的动态供应的方法和装置 |
US20100299300A1 (en) * | 2009-05-21 | 2010-11-25 | Microsoft Corporation | Runtime interpretation of declarative programs |
Also Published As
Publication number | Publication date |
---|---|
WO2013106355A1 (en) | 2013-07-18 |
EP2802985A4 (en) | 2016-05-18 |
EP2802985A1 (en) | 2014-11-19 |
US8869107B2 (en) | 2014-10-21 |
CN103257858B (zh) | 2017-01-18 |
US20130185694A1 (en) | 2013-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103257858A (zh) | 基于连续的运行时中的声明性动态控制流 | |
Brambilla et al. | Interaction flow modeling language: Model-driven UI engineering of web and mobile apps with IFML | |
CN103718155B (zh) | 运行时系统 | |
JP4812337B2 (ja) | フォームタイプを使用してフォームを生成する方法および装置 | |
US9411798B1 (en) | Methods and apparatus for reusing report design components and templates | |
US20140040791A1 (en) | Development platform for software as a service (saas) in a multi-tenant environment | |
CN101495965A (zh) | 语义富对象的动态用户体验 | |
CA2451164A1 (en) | Customizable components | |
KR20130086138A (ko) | 크로스―플랫폼 어플리케이션 프레임워크 | |
CN106886406A (zh) | 开发代码或文档的生成方法和装置 | |
US20090138273A1 (en) | Systems and methods for transforming a business process into reusable services | |
US20190213518A1 (en) | Collaborative and dynamic mobile workflow execution platform | |
KR20080106560A (ko) | 프로세스 중심 프로그램에 대한 취소를 모델링하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체 | |
US20200125336A1 (en) | System and method for enhancing component based development models with auto-wiring | |
CN109408354B (zh) | 应用组件的数据处理方法和装置 | |
CN102027460A (zh) | 动态声明性应用程序描述 | |
JP7280388B2 (ja) | カスタマイズされた人工知能生産ラインを実行する装置及び方法、機器及び媒体 | |
JP2024512667A (ja) | 計算ノートブックを組み込むためのシステム及び方法 | |
US11315208B2 (en) | Conceptual representation of business processes for cross-domain mapping | |
Weaver et al. | Rapid application development with Openstudio | |
CN111666100A (zh) | 软件框架生成方法、装置、电子设备及存储介质 | |
KR102560784B1 (ko) | 태스크 트래킹 방법 및 시스템 | |
CN111124409B (zh) | 基于Sketch的业务页面生成方法、装置、设备和存储介质 | |
González | Java 7 concurrency cookbook | |
US9646083B2 (en) | Web 2.0 system and method for dynamic categorization of heterogeneous and regulated enterprise assets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150727 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150727 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |