MX2008011908A - Estructura de trabajo para modelar continuaciones en flujos de trabajo. - Google Patents

Estructura de trabajo para modelar continuaciones en flujos de trabajo.

Info

Publication number
MX2008011908A
MX2008011908A MX2008011908A MX2008011908A MX2008011908A MX 2008011908 A MX2008011908 A MX 2008011908A MX 2008011908 A MX2008011908 A MX 2008011908A MX 2008011908 A MX2008011908 A MX 2008011908A MX 2008011908 A MX2008011908 A MX 2008011908A
Authority
MX
Mexico
Prior art keywords
continuations
execution
activity
state
continuation
Prior art date
Application number
MX2008011908A
Other languages
English (en)
Inventor
Dharma K Shukla
Mayank Mehta
Akash J Sagar
Robert B Schmidt
Karthik Raman
Nathan Talbert
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of MX2008011908A publication Critical patent/MX2008011908A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Educational Administration (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Se describe la habilitación de creación de patrones de flujo de control en un flujo de trabajo a través de continuaciones. Cada continuación representa un contexto de ejecución de actividad para una actividad que se ejecuta en un flujo de trabajo a través de una máquina de flujo de trabajo virtualizando un ambiente de ejecución manejado. En respuesta a una solicitud, el contexto de ejecución de actividad es recreado a través de la continuación y la actividad es ejecutada dentro del contexto recreado.

Description

ESTRUCTURA DE TRABAJO PARA MODELAR CONTI UACIONES EN FLUJOS DE TRABAJO ANTECEDENTES Los sistemas existentes intentan modelar procedimientos de negocio u otras interacciones de mundo real entre agentes autómatas a través de flujos de trabajo de nivel alto. Sin embargo, los flujos de trabajo pueden variar en una variedad de dimensiones tal como (a) ejecución y complejidad de moldeado, (b) reconocimiento de la estructura del flujo en tiempo de diseño, (c) estáticamente definido o a ad-hoc-dinámico, (d) facilidad de crear y editar el flujo en varios puntos en su ciclo de vida, y (e) asociación débil o fuerte de lógica de negocio con el procedimiento de flujo de trabajo de núcleo. Los modelos de flujo de trabajo existentes fallan al acomoda todos estos factores. Además, los modelos de flujo de trabajo existentes se basan en cualquier aspecto basado en lenguaje (por ejemplo, DPEL4WS, XLANG/S y WSFL) o aspectos basados en aplicación. Los aspectos basados en lenguaje son lenguajes de flujo de trabajo de nivel superior con un grupo cerrado de construcciones predefinidas que ayudan a modelar el procedimiento de flujo de trabajo al usuario/programador. Los lenguajes de flujo de trabajo transportan toda la información semántica para el grupo cerrado de construcciones para permitir que el usuario construya un modelo de flujo de trabajo. Sin embargo, los lenguajes no son extensibles por los desarrol ladores y representan un grupo cerrado de primitivos que constituyen el modelo de flujo de trabajo. Los lenguajes se unen al recopilador de lenguaje transportado por el vendedor de sistema de flujo de trabajo. Sólo el vendedor de producto de sistema de flujo de trabajo puede extender el modelo al extender el lenguaje con un nuevo grupo de construcciones en una versión futura del producto. Esto frecuentemente requiere mejorar el recopilador asociado con el lenguaje. Además, los lenguajes usualmente no exponen o definen declarativamente funciones u operaciones que pueden utilizarse fácil y eficientemente por otros programas. Los aspectos basados en aplicación son aplicaciones que tienen las capacidades de flujo de trabajo dentro de la aplicación para resolver un problema específico de dominio. Estas aplicaciones no son verdaderamente extensibles ni tienen un modelo programable.
BREVE DESCRIPCION DE LA INVENCION Las modalidades de la invención permiten la creación de patrones de flujo de control en un flujo de trabajo. En una modalidad, la invención genera continuaciones para fragmentos de programa durante la ejecución de los fragmentos de programa a través de una máquina de meta-tiempo de funcionamiento. La máquina de meta-tiempo de funcionamiento virtualiza un ambiente de ejecución manejado teniendo funcionalidad fija. En respuesta a una solicitud de un usuario u otra fuente, los aspectos de la invención recrean un contexto de ejecución de actividad a través de las continuaciones generadas y ejecutan, dentro del contexto de ejecución de actividad recreada, los fragmentos de programa o sus porciones. Esta breve descripción se proporciona para introducir una selección de conceptos en una forma simplificada que además se describe posteriormente en la descripción detallada. Esta breve descripción no pretende identificar características clave o características esenciales del tema reclamado, ni pretende utilizarse como un auxiliar al determinar el alcance del tema reclamado. Otras características en parte serán evidentes y en parte se señalarán aquí posteriormente.
BREVE DESCRIPCION DE LOS DIBUJOS La Figura 1 es un diagrama de bloques que ilustra un ambiente operativo ilustrativo para aspectos de la invención La Figura 2 es un diagrama de bloques ilustrativo que ilustra una estructura de flujo de trabajo basada en continuación de acuerdo con una modalidad de la invención. La Figura 3 es un diagrama de bloques ilustrativo que ilustra un flujo de trabajo de acuerdo con una modalidad de la invención. La Figura 4 es un diagrama que ilustra una estructura jerárquica de una actividad de flujo de trabajo de acuerdo con una modalidad de la invención.
La Figura 5 es un diagrama que ilustra un autómata de estado ilustrativo para una actividad de acuerdo con una modalidad de la invención. La Figura 6 es un diagrama de bloques que ilustra un sistema ilustrativo para procesar actividades de flujo trabajo de acuerdo con una modalidad de la invención. La Figura 7 es un cuadro de flujo ilustrativo que ilustra la modelación de continuaciones en un flujo de trabajo. Los caracteres de referencia correspondientes indican partes correspondientes a través de los dibujos.
DESCRIPCION DETALLADA Haciendo referencia primero a la Figura 1, un diagrama de bloques ilustra un paradigma de programación típico para modelar actividades céntricas de procedimiento en un flujo de trabajo. En esta figura, el diagrama muestra un modelo de virtualización de nivel 3 con un ambiente de ejecución manejado 106 en el nivel superior que virtualiza un sistema operativo 104. El ambiente de ejecución manejado 106 virtualiza la ejecución de un programa que se ejecuta en el ambiente 106 en términos de una máquina de pila abstracta que puede implementarse independiente de la arquitectura de procesador de un dispositivo de cómputo. El sistema operativo 104 virtualiza una unidad de procesamiento 102 en el nivel inferior. Los programas en el nivel de ambiente de ejecución manejado 106 carecen de la capacidad y eficiencia de acomodar interacciones complejas entre procedimientos en un flujo de trabajo debido a la funcionalidad fija disponible en el ambiente de ejecución manejado 106. El ambiente de ejecución manejado 106 también incluye varios requerimientos estrictos no adecuados para controlar la complejidad y capacidad de los flujos de trabajo que moldean flujos de trabajo de mundo real. Además, los códigos o rutinas de programación en el sistema operativo 104 son dependientes del tipo o configuración de la unidad de procesamiento 102 y el tipo de arquitectura de cómputo (por ejemplo, compatible con computadoras personales de la marca IBM, computadoras personales de la marca APPLE, u otros sistemas) entre otras limitaciones. Además, los lenguajes de programación típicamente requieren estructuras de datos específicas de hardware tal como una pila, bulto, o secuencia para el sistema operativo 104 para funcionar apropiadamente. Haciendo referencia después a la Figura 2, aspectos de la invención incluyen una máquina de flujo de trabajo basado en continuación 202, máquinas de meta-tiempo de funcionamiento, u otra estructura de trabajo que virtualiza el ambiente de ejecución manejado 106. El flujo de trabajo incluye una composición jerárquica de actividades con cada actividad que representa una unidad de trabajo. La máquina de flujo de trabajo 202 proporciona un modelo asincrónico, abstracto de ejecución de los códigos de operación (op-códigos) o las actividades en el flujo de trabajo que representan procedimientos de mundo real. La máquina de flujo de trabajo 202 es un tiempo de funcionamiento basado en continuación que es capaz de suspender los programas y resumirlos en cualquier. Durante el ciclo de ejecución. Mientras una actividad es especifica de dominio, la máquina de flujo de trabajo 202 es agnóstica de especificación de dominio. Además, la máquina de flujo de trabajo 202 no sabe nada sobre un patrón de flujo de control especifico que se empaca en términos de una actividad. Como tal, el modelo de ejecución proporcionado por aspectos de la invención es abstracto. Además, mientras el caso de flujo de trabajo completo puede correr lógicamente para una cantidad de tiempo arbitraria (por ejemplo, días, meses, o años), las actividades asociadas con el flujo de trabajo pueden realizar trabajo de vida corta y generarse en una forma de tareas múltiples co-operativas. El modelo de ejecución abstracto de aspectos de la invención permite que la máquina de flujo de trabajo 202 suspenda un caso a la mitad de la ejecución y/o expulsarlo de la memoria y resumirlo en el futuro. La máquina de flujo de trabajo 202 maneja tales operaciones a través de de pasivación de programa. En una modalidad, la máquina de flujo de trabajo 202 opera para virtualizar uno o más de ios siguientes aspectos del ambiente de ejecución manejado 106: op-códigos específicos de dominio, una secuencia, un primitivo de sincronización, una máquina de ejecución, un tiempo de vida de objeto, un formato de fuente, una sección, una falla, una preparación de falla, y de control de falla. Por ejemplo, los aspectos de la invención permiten a los usuarios escribir op-códigos de costumbre en términos de actividades de costumbre. En general, la máquina de flujo de trabajo 202 utiliza una secuencia, una pila, y/o un bulto del ambiente de ejecución manejado 106. Con la capacidad de ejecutar programas escritos en cualquier lenguaje de programación y compuestos en cualquier formato de archivo, la máquina de flujo de trabajo 202 permite a los desabolladores de programa diseñar programas sin comprometerse. Al definir actividades que representan tareas o procedimientos de flujo de trabajo como la clase de base para ejecutarse por la máquina de flujo de trabajo 202, los aspectos de la invención permiten a los desabolladores construir fácil y eficientemente op-códigos específicos de dominio sin adherirse al grupo de funciones rígido, de código duro, inflexibles, y fijos o clases de actividades en el ambiente de ejecución manejado 106. Los op-códigos pueden ser específicos para la industria de salud, industria financiera, u otros dominios. La máquina de flujo de trabajo 202 en la Figura 2 puede ser cualquier tiempo de funcionamiento basado en continuación en capas en la parte superior de cualquier estructura de trabajo de ejecución existente (por ejemplo, el ambiente de ejecución manejado 106, sistema operativo 104, o unidad de procesamiento 102 en la Figura 1) que permite el moldeado de continuaciones y varios aspectos de las mismas para permitir que el programador modele patrones de flujo de control complejo y dinámico. Los aspectos de la invención permiten la definición de actividades en cualquier forma o representación (por ejemplo, un cuadro de flujo, un diagrama, una descripción numerada, o similares). Las continuaciones pueden utilizarse para modelar patrones de flujo de control complejo y dinámico. Una continuación representa un programa congelado en la acción y puede incluir un objeto funcional individual que contiene el estado de un cálculo. Cuando se evalúa el objeto, el cálculo almacenado puede reiniciarse en donde se dejó. Al resolver ciertos tipos de problema, puede ser de gran ayuda para permitir guardar el estado de un programa y reiniciarlo posteriormente. En el multiprocesamiento, por ejemplo, una continuación con vencionalmente representa un procedimiento suspendido. En programas de búsqueda no determinantes, una continuación puede representar un nodo en el árbol de búsqueda. Mientras el ambiente de ejecución manejado 106 crea un ambiente de comunicación común, incluso fijo, entre programas, la capacidad de moldear procedimientos de mundo real en tal ambiente falta. Por ejemplo, las aplicaciones que se ejecutan en el ambiente de ejecución manejado 106 se limitan a un lenguaje intermedio para compartir funciones o clases orientadas objetos comunes. El lenguaje intermedio tiene parámetros fijos, argumentos, o esquemas o funciones. Haciendo referencia de nuevo a la Figura 2, un usuario 204 (por ejemplo, un humano, un programa de aplicación, un sistema operativo, o similares) ¡nteractúa con una computadora 206 que proporciona las estructura de trabajo de fundamento de flujo de trabajo. La computadora 206 y el procesador asociado con este (no mostrada) tiene acceso a un área de memoria 208 que almacena datos de continuación 210 y uno o más componentes o módulos legibles por computadora que tienen instrucciones ejecutables por computadora para implementar el fundamento de flujo de trabajo. En la modalidad de la Figura 2, los componentes ejecutables por computadora o módulos incluyen un componente de máquina de ejecución 212, un componente de estado 214, un componente de memoria 216, y un componente de reproducción 218. El componente de máquina de ejecución 212, cuando se ejecuta por la computadora 206, ejecuta una pluralidad de fragmentos de programa asociados con un flujo de trabajo y virtualiza el ambiente de ejecución manejado 106 teniendo funcionalidad fija. El componente de estado 214 genera una pluralidad de continuaciones para los fragmentos de programa ejecutándose por el componente de máquina de ejecución 212. Cada una de la pluralidad de continuaciones incluye un estado de tiempo de funcionamiento y un estado de aplicación y en general representa un contexto de ejecución de actividad u otro estado del fragmento de programa en un punto dado en tiempo. El contexto de ejecución de actividad está disponible independiente de la pila asociado con la secuencia física del ambiente de ejecución manejado 106. El estado de tiempo de funcionamiento indica un estado de fila de programador (por ejemplo, los artículos en una fila asociada con el programador) o de otra manera indica un contador de programa identificando un controlador de excepción después de programado 1 o para ejecución. El estado de aplicación indica un estado de actividad (por ejemplo, con una referencia al árbol de actividad). El componente de memoria 216 serializa las continuaciones y almacena las continuaciones serializadas en un diario de ejecución. Las continuaciones serializadas a través del componente de memoria 216 modelan uno o más de lo siguiente: un patrón de flujo de control, una iteración, una declaración de paralela, una máquina de estado, un controlador de flujo de página, un generador de secuencia, y otra continuación. El componente de reproducción 218 recrea, en respuesta a una solicitud del usuario 204. el estado de tiempo de funcionamiento y el estado de aplicación asociado con una o más de las continuaciones serializadas por el componente de memoria 216. Cuando se ejecuta por la computadora 206, el componente de reproducción 218 ejecuta. dentro del estado de tiempo de funcionamiento recreado y el estado de aplicación, los fragmentos de programa asociados con una o más de las continuaciones. Por ejemplo, utilizando la referencia a la continuación, un controlador de ejecución (por ejemplo, un método asociado con una actividad) puede programar más controladores de ejecución (por ejemplo, una actividad compuesta puede programar la ejecución de su hijo). En una modalidad, la referencia a la continuación incluye el contexto de ejecución de actividad como un argumento directo o implícito. La compensación de las actividades exitosamente terminadas pueden ser ejecutadas en el futuro re-invocando el contexto persitido y ejecutando el método compensador del caso de acti idad dentro del contexto. Cualquiera de los elementos en la Figura 2, las otras figuras, y lenguaje de la presente constituyen medios para manejar la pluralidad generada de continuaciones. Haciendo referencia después a la Figura 3, se muestra un flujo de trabajo ilustrativo 300. En el ejemplo de la Figura 3, el flujo de trabajo 300 es un flujo de trabajo para procesar una orden de compra. Las actividades en el flujo de trabajo pueden secuenciarse para que algunas de las actividades puedan realizarse paralelas a o simultáneas con otras actividades en el flujo de trabajo 300, mientras algunas de las actividades en el flujo de trabajo 300 se ejecutan después del término de otras actividades en el flujo de trabajo 300. El flujo de trabajo 300 inicia desde un punto de partida 302 tal como la recepción de una orden de un consumidor. El flujo de trabajo 300 incluye una declaración condicional 304 (por ejemplo, una declaración de IF o una declaración WHILE) con ramificaciones en declaraciones condicionales 306 y 308 dependiendo del resultado de la condición en la declaración condicional 304. Siguiendo la declaración condicional 306, el flujo de trabajo 300 incluye una estructura paralela 310 que tiene dos secuencias para ejecutarse asincrónicamente. En el ejemplo mostrado en la Figura 3, una actividad de "Enviar correo electrónico" y una actividad de "Obtener Aprobación" se procesan en paralelo antes que se complete el flujo de trabajo en 314. Después de la declaración condicional 308, un área de "dejar caer actividades aquí" 316 indica que el escritor de actividad u otro usuario puede agregar actividades en el flujo de trabajo 300 antes de que el flujo de trabajo se complete en 314. Haciendo referencia después a la Figura 4. el diagrama de bloque ilustra una estructura jerárquica 402 (por ejemplo, una estructura de árbol) de una actividad de flujo de trabajo. La ejecución de la actividad incluye ejecución del árbol de actividad que inicia en la raíz del árbol. La actividad puede configurarse por código de software en cualquier lenguaje de programación. Por ejemplo, el código de software puede representar lógica o reglas de negocio o aplicación escrita en un dominio específico o ambiente de ejecución. La actividad puede incluir uno o más artículos de trabajo u otras actividades que ¡mplementan la lógica o reglas. En la modalidad de la Figura 4, las actividades y artículos de trabajo asociados se distribuyen y ejecutan de acuerdo con la estructura 402 u otra secuencia de ejecución. La máquina de meta-tiempo de funcionamiento define un alcance un alcance o límite para cada uno de los artículos de trabajo asociados con una actividad. Este alcance o límite incluye y expone información (por ejemplo, en la forma de datos, metadatos, o similares) tal como los datos compartidos o recursos para accederse por los artículos de trabajo, propiedades asociadas, controladores, limitaciones, eventos, y similares. Haciendo referencia después a la Figura 5, un autómata de estado ilustrativo define un grupo de estados a través de los cuales puede transitar una actividad. Generalmente, el autómata de estado 500 define un tiempo de vida de ejecución para la actividad. En el autómata ilustrativo de la Figura 5, la actividad transita a través del grupo definido de estados mientras la máquina de meta-tiempo de funcionamiento ejecuta la actividad y evalúa condiciones de transiciones. La máquina de meta-tiempo de funcionamiento impulsa la ejecución de la actividad por el autómata abstracto. En una modalidad, la ejecución de una actividad se realiza en términos de los estados en el autómata 500 y las transiciones posibles específicas para cada uno de ios estados. Un autómata ilustrativo incluye un estado iniciado, un estado de ejecución, y un estado cerrado. En el ejemplo de la Figura 5, el autómata de estado 500 incluye un estado iniciado 502, un estado de ejecución 504, un estado de cancelación 506. un estado defectuoso 508, un estado de compensación 510, y un estado cerrado 512. En otra modalidad, uno o más estados adicionales pueden definirse en el autómata de estado 500 sin apartarse del alcance de las modalidades de la invención. En general, el autómata de estado 500 tiene una o más condiciones de transición que definen la transición en actividad a través del grupo de estados. En una modalidad, si se asocia un primer autómata con una primera actividad y un segundo autómata se asocia con una segunda actividad, una comisión de transición del primer autómata de la primera actividad puede ser dependiente de un estado actual del segundo autómata de la segunda actividad.
Además, el autómata de estado 500 puede establecer una o más relaciones entre artículos de trabajo o actividades en una actividad compuesta. Por ejemplo, una de las reglas de relación puede incluir que, antes de transitar métodos o artículos de trabajo en el nodo de raíz del árbol de actividad al estado cerrado 512, todos los artículos de trabajo en los nodos hijo deben estar en el estado iniciado 502 ó el estado cerrado 512. Otra regla puede especificar que el artículo de trabajo en el nodo de raíz debe estar en el estado de ejecución 504 antes de transitar los artículos de trabajo en el nodo hijo del árbol de actividad al estado de ejecución 504. Haciendo referencia de nuevo a la Figura 6, un diagrama ilustra un sistema 600 para procesar actividades de flujo de trabajo de acuerdo con una modalidad de la invención. El sistema 600 incluye un procesador 602, que puede ser una unidad de procesamiento tal como unidad de procesamiento 102 en la Figura 1 o una colección de unidades de procesamiento. El sistema 600 también incluye un área de almacenamiento o de memoria 604 para almacenar datos accesibles por el procesador 602. En una modalidad, el sistema 600 puede ser una computadora que tiene uno o más procesadores o unidades de procesamiento (por ejemplo, procesador 602), una memoria de sistema (por ejemplo, área de memoria 604), y otros componentes para acoplar varios componentes de sistema que incluyen el procesador 602 al área de memoria 604. Por ejemplo, el área de memoria 604 almacena una pluralidad de actividades 606 para procesar en un flujo de trabajo (por ejemplo, el flujo de trabajo 300 en la Figura 3). Cada una de la pluralidad de actividades 606 incluye uno o más artículos de trabajo, y los artículos de trabajo pueden organizarse en una estructura jerárquica tal como una estructura de árbol (ver Figura 4) Al procesar la pluralidad de actividades 606, el procesador 602 accede o ejecuta un programado 608. El programador 608 incluye una fila 610 de artículos de trabajo (por ejemplo, una fila de trabajo) y un distribuidor 612 que elimina de la fila los artículos e invoca las implementaciones correspondientes que realizan el trabajo asociado con el artículo de trabajo sacado de la fila hasta que la fila 610 está vacía. Cada unidad del trabajo en la fila 610 corresponde a un método implementado por una actividad. El método puede denominarse como el controlador de ejecución. Una ejecución completa de actividad dada puede transcurrir la invocación y ejecución de un grupo de controladores de ejecución formados en la fila 610 en un punto en el tiempo previo. Una autómata de estado tal como autómata de estado 500 en la Figura 5 define un flujo de ejecución para los artículos de trabajo (por ejemplo, artículos de trabajo 622) en una actividad de flujo de trabajo. El procesador 608 acceder a los artículos de trabajo en la pluralidad de actividades 606 a través de un componente o un grupo de instrucciones ejecutables por computadora tal como el programador 608 para iniciar los artículos de trabajo 622 y formar o almacenar los artículos de trabajo 622 a una fila 610. Por ejemplo, el articulo de trabajo 622-1, como se ilustró en la Figura 6, se inicia y forma en la fila 610. El artículo de trabajo 622-1 después se elimina de la fila o remueve de la fila 610 por un distribuidor 612 antes de transitar a un estado de ejecución (por ejemplo, estado de ejecución 504 en la Figura 5) para ejecución. En un ejemplo, el articulo de trabajo 622-1 incluye un método de actividad o una operación de actividad 624, rutina, o una colección de códigos para realizar una función de "solicitar entrada de un usuario". Uno o más otros métodos de actividad, operaciones de actividad, rutinas, o códigos pueden incluirse en cada uno de los artículos de trabajo 622 sin apartarse del alcance de aspectos de la invención. Mientras el distribuidor 612 se distribuye los artículos de trabajo 622. el procesador 602 ejecuta los métodos 624 en cada uno de los artículos de trabajo 622 en 614. En el ejemplo del artículo de trabajo 622-1 , el procesador 602 puede proporcionar a un usuario una interfase de usuario (Ul) para ingresar la información solicitada o datos. En otra modalidad, el procesador 602 puede conectarse a o acceder a fuentes de datos externa para entrada. Con el término del método de actividad u operación de actividad 624, el procesador 602 concluye la ejecución del artículo de trabajo 622-1 en 616. Alternativamente, el procesador 602 puede pasivar o de otra forma capturar el estado de ejecución de artículos de trabajo (por ejemplo, artículo de trabajo 622-1) en 618 a un almacenamiento de datos 620 para recuperación subsecuente y ejecución continuada.
Dependiendo de los parámetros o condiciones durante la ejecución del articulo de trabajo 622-1 , el articulo de trabajo 622-1 puede proceder a un estado de cancelación (por ejemplo, estado de cancelación 506 en la Figura 5) o un estado defectuoso (por ejemplo, estado defectuoso 508 en la Figura 5). En una modalidad, el artículo de trabajo 422-1 puede proceder del estado de cancelación al estado defectuoso. En una modalidad alternativa, un estado de compensación (por ejemplo, estado de compensación 510 en la Figura 5) describe un grupo de operaciones o funciones para realizarse cuando ocurrió una falla o excepción. Haciendo referencia después a la Figura 7, un diagrama de flujo ilustrativo muestra el modelado de continuaciones en un flujo de trabajo. El método incluye generar una pluralidad de continuaciones para uno o más fragmentos de programa durante la ejecución de los fragmentos de programa a través de una máquina de meta-tiempo de funcionamiento en 702. Por ejemplo, las continuaciones pueden ser generadas en respuesta a una solicitud de una actividad asociada con uno o más fragmentos de programa. En una modalidad, la ejecución del fragmento de programa es episódica, con cada episodio persistente como una continuación. La máquina de meta-tiempo de funcionamiento virtualiza un ambiente de ejecución manejado teniendo funcionalidad fija. Cada una de la pluralidad generada de continuaciones representa un contexto de ejecución de actividad que incluye, en una modalidad, un estado de tiempo de funcionamiento asociado con la máquina de meta-tiempo de funcionamiento y un estado de aplicación asociado con los fragmentos de programa. Un límite de datos para la continuación se define, por ejemplo, determinando el grado, alcance y unión de variables para el estado en un contexto(s) de cierre ambiental. El método almacena la pluralidad generada de continuaciones en 704 para persistir la continuación seleccionada a través de pasivación y para crear un diario de ejecución para los fragmentos de programa. En una modalidad, las continuaciones se almacenan de acuerdo con un orden de ejecución de actividades con los fragmentos de programa. El método permite al usuario navegar en el diario de ejecución (por ejemplo, a través de una interfase de programación de aplicación expuesta por un escrito de actividad) y recibe, del usuario, una selección de una de las continuaciones almacenadas del diario de ejecución. El método también permite al usuario clasificar el diario de ejecución y buscar el diario de ejecución para continuaciones que se ejecutan y/o no se ejecutan. El método además selecciona una de las continuaciones almacenadas del diario de ejecución y recupera la continuación seleccionada en respuesta a una solicitud de un usuario en 706. El método también recrea el contexto de ejecución de actividad asociado con la continuación recuperada en 708 y ejecuta, dentro del contexto de ejecución de actividad re-creada, los fragmentos de programa asociados con la continuación recuperada en 710. La computadora 206 en la Figura 2 y procesador 602 en la Figura 6 son ejemplos de dispositivos de cómputo de propósito general. En una modalidad de la invención como una computadora es adecuada para uso en las otras figuras ilustradas y descritas aquí. La computadora tiene uno o más procesadores o unidades de procesamiento y una memoria de sistema La computadora típicamente tiene al menos alguna forma de medio legible por computadora. Los medios legibles por computadora, que incluyen tanto medios volátiles como no volátiles, medios remo í bles y no removibles, puede ser cualquier medio que pueda accederse por la computadora. A manera de ejemplo y no de limitación, medios legibles por computadora comprenden medios de almacenamiento por computadora y medios de comunicación. Los medios de almacenamiento por computadora incluyen medios volátiles y no volátiles, removibles y no removibles imple mentados en cualquier método o tecnología para almacenamiento de información tal como instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos. Por ejemplo, los medios de almacenamiento por computadora incluyen RAM, ROM, EEPROM, memoria flash u otra tecnología de memoria. CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento de disco óptico, cassettes magnéticos, cinta magnética, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que puede utilizarse para almacenar la información deseada y que puede accederse por la computadora. Los medios de comunicación típicamente representan instrucciones legibles por computadora, estructuras de datos, módulos de programa, u otros datos en una señal de datos modulada tal como una onda portadora u otro mecanismo de transporte e incluyen cualquier medio de entrega de información. Aquellos expertos en la técnica están familiarizados con la señal de datos modulada, que tiene una o más de sus características establecidas o cambiadas de tal forma para codificar información en la señal. Los medios por cable, tal como red por cable o conexión por cable directa, y medios inalámbricos, tal como acústicos. RF. infrarrojos, y otros medios inalámbricos, son ejemplos de medios de comunicación. Combinaciones de cualquiera de los anteriores también se incluyen dentro del alcance de medios legibles por computadora. La memoria de sistema incluye medios de almacenamiento por computadora en la forma de memoria removible y/o no re movible, volátil y/o no volátil. La computadora también puede incluir otros medios de almacenamiento por computadora removibles/no removibles, volátiles/no volátiles. La computadora puede operar en un ambiente en red que utiliza conexiones lógicas a una o más computadoras remotas, tal como computadora remota. La computadora remota puede ser una computadora personal, un servidor, un enrutador, una PC de red, un dispositivo par u otro nodo de red común, y típicamente incluye muchos o todos los elementos descritos anteriormente relativos a la computadora Aunque se describió en conexión con un ambiente de sistema de cómputo ilustrativo, que incluye computadoras, las modalidades de la invención son operacionales con numerosos otros ambientes o configuraciones de sistema de cómputo de propósito general o de propósito especial. El ambiente de sistema de cómputo no pretende sugerir ninguna limitación al alcance de uso o funcionalidad de cualquier aspecto de la invención. Además, el ambiente de sistema de cómputo no debe interpretarse como teniendo ninguna dependencia o requerimiento que se relaciona con cualquiera o combinación de componentes ilustrados en la modalidad operativa ilustrativa. Ejemplos de sistemas de cómputo, ambientes, y/o configuraciones bien conocidos que pueden ser adecuados para uso con aspectos de la invención incluyen, pero no se limitan a, computadoras personales, computadoras de servidor, dispositivos móviles o portátiles, sistemas de multiprocesador. sistemas a base de microprocesador, cajas de tv por cable, electrónica de consumidor programable, teléfonos móviles, PCs de red, minicomputadoras, macrocomputadoras, ambiente de cómputo distribuidos que incluyen cualquiera de los sistemas o dispositivos anteriores, y similares. Las modalidades de la invención pueden describirse en el contexto general de instrucciones ejecutables por computadora, organizadas en uno o más componentes o módulos de programa, ejecutados por una o más computadoras u otros dispositivos. Los procesadores de datos de la computadora pueden programarse por medio de las instrucciones ejecutables por computadora almacenadas en diferentes momentos en los varios medios de almacenamiento legibles por computadora de la computadora.
Generalmente, los módulos de programa incluyen, pero no se limitan a, rutinas, programas, objetos, componentes, y estructuras de datos que realizan tareas particulares o implementan tipos de datos abstractos particulares. Los aspectos de la invención pueden implementarse con cualquier número y organización de tales componentes o módulos. Por ejemplo, aspectos de la invención no se limitan alas instrucciones ejecutables por computadora específicas o los componentes o módulos específicos ilustrados en las figuras y descritos aquí. Otras modalidades de la invención pueden incluir diferentes instrucciones o componentes ejecutables por computadora que tienen más o menos funcionalidad que la ilustrada y descrita aquí. En operación, la computadora ejecuta instrucciones ejecutables por computadora tal como aquellas ilustradas en las figuras para implementar aspectos de la invención. Los aspectos de la invención también pueden practicarse en ambientes de cómputo distribuidos en donde las tareas se realizan por dispositivos de procesamiento remotos que se enlazan a través de una red de comunicaciones. En un ambiente de cómputo distribuido, los módulos de programa pueden localizarse tanto en medios de almacenamiento de computadora locales y remotos que incluyen dispositivos de almacenamiento de memoria. Una inferíase en el contexto de una arquitectura de software incluye un módulo de software, componente, porción de código, u otra secuencia de instrucciones ejecutables por computadora. La inferíase incluye, por ejemplo, un primer módulo que accede a un segundo módulo para realizar tareas de cómputo a beneficio del primer módulo. Los primeros y segundos módulos incluyen, en un ejemplo, interfases de programación de aplicación (APIs) tal como se proporcionó por los sistemas operativos, interfases de modelo de objeto de componente (COM) (por ejemplo, para comunicación de aplicación par a par), y las interfases de formato de intercambio de metadatos de lenguaje de marcación extensible (XMI) (por ejemplo, para comunicación entre servicios web). La interfase puede estar acoplada de forma justa, implementación sincrónica tal como en la Edición de Empresa de Plataforma de Java 2 (J2EE), COM, o ejemplos de COM distribuidos (DCOM). Alternativamente o además, la interfase puede acoplarse de forma floja, implementación asincrónica tal como un servicio web (por ejemplo, que utiliza el protocolo de acceso de objeto simple). En general, la interfase incluye cualquier combinación de las siguientes características: acoplada justamente, acoplada de forma floja, sincrónica, y asincrónica Además, la interfase puede conformarse a un protocolo estándar, un protocolo de propiedad, o cualquier combinación de protocolos estándares y de propiedad. Las interfases aquí descritas todas pueden ser parte de una interfase individual o pueden implementarse como interfases separadas o cualquier combinación aquí. Las interfases pueden ejecutarse local o remotamente para proporcionar funcionalidad. Además, las inte fases pueden incluir funcionalidad adicional o menor que lo ilustrado descrita aquí. Los siguientes ejemplos además ¡lustran modalidades de la invención. Un flujo de control se considera que es dinámico en naturaleza cuando el número de actividades hijo no se conoce en el tiempo de recopilación. Por ejemplo, una actividad compuesta que modela un procedimiento de revisión de documento típico envía mensajes a los revisadores al ejecutar concurrentemente un grupo de actividades de revisador primitivas. Sin embargo, el número de revisadores pueden no conocerse estáticamente en el momento en el que se creó el programa y a partir de allí la cantidad exacta de hijo de la actividad compuesta no puede configurarse en ese momento. En tales casos, la actividad compuesta se configura con una actividad de revisador individual que actúa como una plantilla para generar un grupo de casos dinámicos en tiempo de ejecución basándose en los revisadores reales disponibles. No solo son los aspectos de flujo de control de estás construcciones dinámicas de naturaleza, pero el estado de tiempo de funcionamiento, que incluye solo localidad y uniones, también es dinámica. Por ejemplo, una actividad que modela una máquina de estado se configura con un grupo de actividades hijo que representa un estado. Cada actividad de estado es una continuación que representa el estado de meta-programa o la máquina de estado congelada en un punto en el tiempo dado. La continuación puede ejecutarse múltiples veces y en orden arbitrario por aspectos de la invención. Las construcciones de giro pueden revisarse como caso especial de flujos de control dinámico. Por ejemplo, la semántica de una actividad que modela una construcción Para Cada uno dicta que cada repetición debe crear un alcance distinto para el estado que está contenido dentro de la actividad Para Cada uno. El alcance del estado involucra la localidad del estado, maneja la integridad referencial o la unión de los estados a través de alcances, y maneja la extensión o el tiempo de vida del estado abarcado en un alcance dado. Con los aspectos de la invención, el estado de programa se captura en términos de campos y propiedades de dependencia de actividades en el árbol de programa. De esta forma, la noción de locales o variables temporales para actividades que modelan las construcciones de giro se crea al generar efectivamente casos de actividades dinámicamente. Esto captura el estado local de la repetición basándose en la actividad de plantilla que representa el cuerpo del giro. Además, a diferencia de una construcción de programa en un ambiente de programación no durable/no transaccional, las actividades pueden solicitar compensarse durante ejecución de programa subsecuente. Por ejemplo, una repetición completada exitosamente de una actividad Mientras tanto puede compensarse en un punto posterior en su ciclo de vida si su actividad padre falla. Aspectos de la invención permiten tal compensación (por ejemplo, al implementar semánticas para deshacer) para cada repetición al capturar y almacenar el estado de ejecución de la actividad que corresponde a cada repetición como una continuación. La continuación que representa el estado de ejecución almacenado puede invocarse en un tiempo posterior para ser el estado original de ejecución disponible cuando los métodos de compensación asociados con cualquiera de las actividades intentan ejecutarse. El orden de ejecución o desempeño de las operaciones en las modalidades de la invención ilustrada y descrita aquí no es esencial, a menos que se especifique de otra forma. Es decir, las operaciones pueden realizarse en cualquier orden, a menos que se especifique de otra forma, y las modalidades de la invención pueden incluir operaciones adicionales o menores a aquellas aquí descritas. Por ejemplo, se contempla que ejecutar o realizar una operación particular antes, contemporáneamente con, o después de otra operación está dentro del alcance de aspectos de la invención. Cuando se introducen elementos de aspectos de la invención a las modalidades de los mismos, los artículos "un", "uno", "el", y "dicho" pretende significar que existen uno o más de los elementos. Los términos "que comprenden", "que incluye", y "que tiene" pretenden ser inclusivos y significa que pueden haber elementos adicionales diferentes a los elementos enlistados. Al haber descrito aspectos de la invención en detalle, será evidente que son posibles modificaciones y variaciones sin apartarse del alcance de aspectos de la invención como se definió en las reivindicaciones anexas. Mientras pueden hacerse varios cambios en las construcciones, productos, y métodos anteriores sin apartarse del alcance de aspectos de la invención, se pretende que todo el tema contenido en la descripción anterior y mostrado en los dibujos anexos debe interpretarse como ilustrativo y no en un sentido limitante.

Claims (13)

REIVINDICACIONES
1. - Un método para habilitar la creación de patrones de flujo de control en un flujo de trabajo, dicho método comprende: generar una pluralidad de continuaciones para uno o más fragmentos de programa durante la ejecución de los fragmentos de programa a través de una máquina de meta-tiempo de funcionamiento, dicha máquina de meta-tiempo de funcionamiento virtualizando un ambiente de ejecución manejado teniendo funcionalidad fija, cada uno de la pluralidad generada de continuaciones representando un contexto de ejecución de actividad; almacenar la pluralidad generada de continuaciones para crear un diario de ejecución para los fragmentos de programa; seleccionar una de las continuaciones seleccionadas del diario de ejecución y recuperar la continuación seleccionada en respuesta a una solicitud de un usuario; recrear el contexto de ejecución de actividad asociado con la continuación recuperada; y ejecutar, dentro del contexto de ejecución de actividad recreado, los fragmentos de programa asociados con la continuación recuperada .
2. - El método de acuerdo con la reivindicación 1, en donde la generación de la pluralidad de continuaciones comprende capturar un estado de tiempo de funcionamiento asociado con la máquina de meta-tiempo de funcionamiento y capturar un estado de aplicación asociado con los fragmentos de programa.
3. - El método de acuerdo con la reivindicación 1, que además comprende: habilitar al usuario para navegar el diario de ejecución; y recibir, del usuario, una selección de una de las continuaciones almacenadas del diario de ejecución.
4. - El método de acuerdo con la reivindicación 1, que además comprende habilitar a un usuario para navegar el diario de ejecución a través de una interfase de programación de aplicación expuesta por un escritor de actividad.
5. - El método de acuerdo con la reivindicación 1, en donde el almacenar la pluralidad generada de continuaciones comprende almacenar la pluralidad generada de continuaciones de acuerdo con un orden de ejecución de actividades asociado con los fragmentos de programa.
6. - El método de acuerdo con la reivindicación 1, que además comprende habilitar al usuario a buscar el diario de ejecución para continuaciones que están siendo ejecutadas.
7. - El método de acuerdo con la reivindicación 1, que además comprende habilitar al usuario a buscar el diario de ejecución para continuaciones que no están siendo ejecutadas.
8. - El método de acuerdo con la reivindicación 1 , que además comprende habilitar al usuario a clasificar el diario de ejecución.
9. - El método de acuerdo con la rei indicación 1, que además comprende persistir la continuación seleccionada a través de pasi vación .
10. - El método de acuerdo con la reivindicación 1, que además comprende definir un límite de datos para las continuaciones.
11. - El método de acuerdo con la reivindicación 10, en donde la definición del limite de datos comprende determinar el grado, la unión y el alcance de variables
12. - El método de acuerdo con la rei indicación 1, en donde el generar la pluralidad de continuaciones comprende generar la pluralidad de continuaciones en respuesta a una solicitud de una actividad asociada con uno o más fragmentos de programa.
13. - El método de acuerdo con la reivindicación 1 , en donde uno o más medios legibles por computadora tienen instrucciones ejecutables por computadora para realizar el método de la reivindicación 1. 14.- Un sistema para modelar continuaciones en flujos de trabajo, dicho sistema comprende: un área de memoria para almacenar un diario de ejecución representando una pluralidad de continuaciones asociadas con fragmentos de programa ejecutados por una máquina de ejecución, cada una de la pluralidad de continuaciones representando un contexto de ejecución de actividad; y un procesador configurado para ejecutar instrucciones ejecutables por computadora para: generar la pluralidad de continuaciones para los fragmentos de programa durante la ejecución de los fragmentos de programa; almacenar la pluralidad generada de continuaciones en el área de memoria; proporcionar una interfase al diario de ejecución en el área de memoria; en respuesta a una solicitud para una continuación particular recibida a través de la interfase provista, recuperar la continuación particular del diario de ejecución en el área de memoria; recrear el contexto de ejecución de actividad asociado con la continuación recuperada; y ejecutar, dentro del contexto de ejecución de actividad recreada, los fragmentos de programa asociados con la continuación recuperada. 15. - El sistema de acuerdo con la reivindicación 14, en donde cada una de la pluralidad de continuaciones representa un estado de ejecución de uno de los fragmentos de programa. 16. - El sistema de acuerdo con la reivindicación 14, en donde el usuario comprende uno o más de lo siguiente: un ser humano, un programa de aplicación, y un sistema operativo. 17. - El sistema de acuerdo con la reivindicación 14, que además comprende medios para manejar la pluralidad generada de continuaciones. 18. - Uno o más medios legibles por computadora que tienen componentes ejecutables por computadora, dichos componentes comprenden: un componente de máquina de ejecución para ejecutar una pluralidad de fragmentos de programa asociados con un flujo de trabajo, dicho componente de máquina de ejecución virtualizando un ambiente de ejecución manejado teniendo funcionalidad fija; un componente de estado para generar una pluralidad de continuaciones para los fragmentos de programa que son ejecutados por el componente de máquina de ejecución, cada una de dicha pluralidad de continuaciones incluyendo un estado de tiempo de funcionamiento y un estado de aplicación, dicho estado de tiempo de funcionamiento indicando un estado de fila de programador, dicho estado de aplicación indicando un estado de actividad; y un componente de memoria para serializar las continuaciones; y un componente de reproducción para recrear, en respuesta a una solicitud de un usuario, el estado de tiempo de funcionamiento y el estado de aplicación asociado con una o más de las continuaciones serializadas por el componente de memoria y para ejecutar, dentro del estado de tiempo de funcionamiento recreado y el estado de aplicación, los fragmentos de programa asociados con una o más de las continuaciones. 19 - Los medios legibles por computadora de acuerdo con la reivindicación 18, en donde cada una de la pluralidad generada de continuaciones representa un contexto de ejecución de actividad. 20.- Los medios legibles por computadora de acuerdo con la reivindicación 18, en donde las continuaciones serializadas por el componente de memoria modelan uno o más de lo siguiente: un patrón de flujo de control, una iteración, una declaración de lista paralela, una máquina de estado, un controlador de flujo de página, un generador de secuencia, y una continuación.
MX2008011908A 2006-03-30 2007-02-21 Estructura de trabajo para modelar continuaciones en flujos de trabajo. MX2008011908A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/393,980 US8069439B2 (en) 2006-03-30 2006-03-30 Framework for modeling continuations in workflows
PCT/US2007/004637 WO2007117364A1 (en) 2006-03-30 2007-02-21 Framework for modeling continuations in workflows

Publications (1)

Publication Number Publication Date
MX2008011908A true MX2008011908A (es) 2008-09-29

Family

ID=38576576

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2008011908A MX2008011908A (es) 2006-03-30 2007-02-21 Estructura de trabajo para modelar continuaciones en flujos de trabajo.

Country Status (11)

Country Link
US (1) US8069439B2 (es)
EP (1) EP2013714A4 (es)
JP (1) JP5140067B2 (es)
KR (1) KR20080112253A (es)
CN (1) CN101416157B (es)
AU (1) AU2007235541A1 (es)
BR (1) BRPI0710032A2 (es)
CA (1) CA2643331A1 (es)
MX (1) MX2008011908A (es)
RU (1) RU2008138699A (es)
WO (1) WO2007117364A1 (es)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060288332A1 (en) * 2005-06-21 2006-12-21 Microsoft Corporation Workflow debugger
US8849691B2 (en) 2005-12-29 2014-09-30 Microsoft Corporation Modeling user input and interaction in workflow based applications
US7739135B2 (en) * 2006-03-30 2010-06-15 Microsoft Corporation Asynchronous fault handling in process-centric programs
AU2007312879B2 (en) * 2006-10-19 2011-10-20 Jmango Ipr Holding Ltd An interactive system and process
US9191793B2 (en) 2007-10-19 2015-11-17 Duc Anh Ngo Interactive system and process
US8181155B2 (en) * 2008-02-29 2012-05-15 Microsoft Corporation Unified expression and location framework
US8490052B2 (en) * 2008-10-14 2013-07-16 Microsoft Corporation Declarative programming model for authoring and execution control and data flow for resource oriented system
US8438295B2 (en) 2008-10-14 2013-05-07 Microsoft Corporation Declarative programming model for modeling and execution of triggers for resource oriented system
US8533666B2 (en) * 2008-10-17 2013-09-10 Microsoft Corporation Interactive design environments to visually model, debug and execute resource oriented programs
US8635585B2 (en) * 2009-02-14 2014-01-21 International Business Machines Corporation Capturing information accessed, updated and created by processes and using the same for validation of consistency
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
US20100293538A1 (en) * 2009-05-15 2010-11-18 Microsoft Corporation Dynamic program updating in a continuation based runtime
US8307368B2 (en) * 2009-05-26 2012-11-06 Microsoft Corporation Locality-based scheduling in continuation-based runtimes
US8819055B2 (en) 2010-05-14 2014-08-26 Oracle International Corporation System and method for logical people groups
US20110282829A1 (en) * 2010-05-14 2011-11-17 Oracle International Corporation Workflow task routing based on cardinality of task data
US9852382B2 (en) 2010-05-14 2017-12-26 Oracle International Corporation Dynamic human workflow task assignment using business rules
US9589240B2 (en) 2010-05-14 2017-03-07 Oracle International Corporation System and method for flexible chaining of distinct workflow task instances in a business process execution language workflow
US9741006B2 (en) 2010-05-14 2017-08-22 Oracle International Corporation System and method for providing complex access control in workflows
US8793650B2 (en) 2010-06-11 2014-07-29 Microsoft Corporation Dynamic web application notifications including task bar overlays
US8671384B2 (en) 2010-06-11 2014-03-11 Microsoft Corporation Web application pinning including task bar pinning
US9164671B2 (en) * 2010-06-11 2015-10-20 Microsoft Technology Licensing, Llc Web application navigation domains
US8863001B2 (en) 2010-06-11 2014-10-14 Microsoft Corporation Web application home button
US9135586B2 (en) * 2010-10-28 2015-09-15 Sap Se System for dynamic parallel looping of repetitive tasks during execution of process-flows in process runtime
US9536264B2 (en) 2011-11-14 2017-01-03 Microsoft Technology Licensing, Llc Host agnostic messaging in a continuation based runtime
US8869107B2 (en) 2012-01-12 2014-10-21 Microsoft Corporation Declarative dynamic control flow in continuation-based runtime
US9020883B2 (en) 2012-02-22 2015-04-28 Oracle International Corporation System and method to provide BPEL support for correlation aggregation
US9760380B2 (en) * 2012-03-14 2017-09-12 Microsoft Technology Licensing, Llc Using grammar to serialize and de-serialize objects
US9224222B2 (en) * 2012-05-08 2015-12-29 Sap Se Interactive multidimensional drilldown analysis
US9679077B2 (en) 2012-06-29 2017-06-13 Mmodal Ip Llc Automated clinical evidence sheet workflow
US10037197B2 (en) 2013-03-15 2018-07-31 Oracle International Corporation Flexible microinstruction system for constructing microprograms which execute tasks, gateways, and events of BPMN models
US20160036881A1 (en) * 2014-08-01 2016-02-04 Qualcomm Incorporated Computing device and method for exchanging metadata with peer devices in order to obtain media playback resources from a network service
US10067786B2 (en) * 2016-06-02 2018-09-04 Microsoft Technology Licensing, Llc Asynchronous sequential processing execution
WO2018136417A1 (en) 2017-01-17 2018-07-26 Mmodal Ip Llc Methods and systems for manifestation and transmission of follow-up notifications
EP3948533A1 (en) * 2019-03-27 2022-02-09 Amazon Technologies Inc. Continuation workflows
US11366681B2 (en) 2019-03-27 2022-06-21 Amazon Technologies, Inc. Chaining virtual machines
US10963287B2 (en) 2019-03-27 2021-03-30 Amazon Technologies, Inc. Reducing request latency in a multi-tenant web service host
US11467858B2 (en) * 2019-03-27 2022-10-11 Amazon Technologies, Inc. Techniques for performing continuation workflows
US11709752B2 (en) * 2020-04-02 2023-07-25 Sap Se Pause and resume in database system workload capture and replay

Family Cites Families (117)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5047919A (en) 1986-04-03 1991-09-10 Harris Corporation Method and apparatus for monitoring software execution in a parallel multiprocessor computer system
JPH04337843A (ja) 1991-05-15 1992-11-25 Hitachi Ltd プログラム動作表示方法
US5301320A (en) 1991-06-28 1994-04-05 Digital Equipment Corporation Workflow management and control system
AU6133594A (en) 1993-02-08 1994-08-29 Action Technologies, Inc. Method and apparatus for managing business processes
US5734837A (en) 1994-01-14 1998-03-31 Action Technologies, Inc. Method and apparatus for building business process applications in terms of its workflows
US5634127A (en) 1994-11-30 1997-05-27 International Business Machines Corporation Methods and apparatus for implementing a message driven processor in a client-server environment
DE19712946A1 (de) 1996-05-30 1997-12-04 Ibm Methode zum Generieren einer Implementierung wiederverwendbarer Teile von Containern eines Workflow-Prozessmodells
US5870607A (en) 1996-09-11 1999-02-09 Brown University Research Foundation Method and apparatus for selective replay of computer programs
US5930512A (en) 1996-10-18 1999-07-27 International Business Machines Corporation Method and apparatus for building and running workflow process models using a hypertext markup language
US6016394A (en) 1997-09-17 2000-01-18 Tenfold Corporation Method and system for database application software creation requiring minimal programming
US6807583B2 (en) 1997-09-24 2004-10-19 Carleton University Method of determining causal connections between events recorded during process execution
US6621505B1 (en) 1997-09-30 2003-09-16 Journee Software Corp. Dynamic process-based enterprise computing system and method
US7076784B1 (en) 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US6115646A (en) 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6078982A (en) 1998-03-24 2000-06-20 Hewlett-Packard Company Pre-locking scheme for allowing consistent and concurrent workflow process execution in a workflow management system
US6567783B1 (en) 1998-06-05 2003-05-20 I2 Technologies Us, Inc. Communication across one or more enterprise boundaries regarding the occurrence of a workflow event
US6397192B1 (en) 1998-06-05 2002-05-28 I2 Technologies Us, Inc. Synchronizing one or more workflows using one or more synchronization-join activities that include synchronization logic
US6587969B1 (en) * 1998-06-22 2003-07-01 Mercury Interactive Corporation Software system and methods for testing the functionality of a transactional server
WO2000014618A2 (en) 1998-08-24 2000-03-16 Fujitsu Limited Workflow system and method
US6606740B1 (en) 1998-10-05 2003-08-12 American Management Systems, Inc. Development framework for case and workflow systems
US7133833B1 (en) 1998-10-27 2006-11-07 Netscape Communications Corporation Lightweight directory access protocol workflow management system
US6411961B1 (en) 1999-01-15 2002-06-25 Metaedge Corporation Apparatus for providing a reverse star schema data model
US7233952B1 (en) 1999-01-15 2007-06-19 Hon Hai Precision Industry, Ltd. Apparatus for visualizing information in a data warehousing environment
JP2000215120A (ja) * 1999-01-22 2000-08-04 Oki Electric Ind Co Ltd 分散型非同期ワ―クフロ―装置
US6353924B1 (en) 1999-02-08 2002-03-05 Incert Software Corporation Method for back tracing program execution
US6678882B1 (en) 1999-06-30 2004-01-13 Qwest Communications International Inc. Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
US6405364B1 (en) 1999-08-31 2002-06-11 Accenture Llp Building techniques in a development architecture framework
CA2281331A1 (en) 1999-09-03 2001-03-03 Cognos Incorporated Database management system
US7020697B1 (en) 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
US6898790B1 (en) 1999-12-06 2005-05-24 International Business Machines Corporation Mapping actions to tasks within customer service processing systems
US6976257B2 (en) 1999-12-30 2005-12-13 International Business Machines Corporation Context based execution prioritization in Workflow-Management-Systems
EP1277104A1 (en) 2000-03-30 2003-01-22 Ideogramic APS Method for gesture based modeling
US6768986B2 (en) 2000-04-03 2004-07-27 Business Objects, S.A. Mapping of an RDBMS schema onto a multidimensional data model
US6964034B1 (en) 2000-04-20 2005-11-08 International Business Machines Corporation Application development server and a mechanism for providing different views into the same constructs within a strongly encapsulated environment
US6918053B1 (en) 2000-04-28 2005-07-12 Microsoft Corporation Compensation framework for long running transactions
US6845507B2 (en) 2000-05-18 2005-01-18 Ss & C Technologies, Inc. Method and system for straight through processing
US6708186B1 (en) 2000-08-14 2004-03-16 Oracle International Corporation Aggregating and manipulating dictionary metadata in a database system
US6895438B1 (en) 2000-09-06 2005-05-17 Paul C. Ulrich Telecommunication-based time-management system and method
US20020032692A1 (en) 2000-09-08 2002-03-14 Atsuhito Suzuki Workflow management method and workflow management system of controlling workflow process
US6604104B1 (en) 2000-10-02 2003-08-05 Sbi Scient Inc. System and process for managing data within an operational data store
TW565777B (en) 2000-10-27 2003-12-11 Manugistics Inc System and method for optimizing resource plans
US20030208392A1 (en) 2000-10-27 2003-11-06 Manugistics, Inc. Optimizing resource plans
US6954747B1 (en) 2000-11-14 2005-10-11 Microsoft Corporation Methods for comparing versions of a program
US7653566B2 (en) 2000-11-30 2010-01-26 Handysoft Global Corporation Systems and methods for automating a process of business decision making and workflow
US7240324B2 (en) 2001-02-28 2007-07-03 Hewlett-Packard Development Company, L.P. Event-based scheduling method and system for workflow activities
US20020128068A1 (en) 2001-03-09 2002-09-12 Randall Whitten Jon Marcus Method and apparatus for managing data in a gaming system
US20020147606A1 (en) 2001-03-14 2002-10-10 Norbert Hoffmann Application development method
US7120896B2 (en) 2001-10-31 2006-10-10 Vitria Technology, Inc. Integrated business process modeling environment and models created thereby
CA2347647A1 (en) * 2001-05-15 2002-11-15 Ibm Canada Limited-Ibm Canada Limitee Storing and restoring snapshots of a computer process
US20020188644A1 (en) 2001-06-08 2002-12-12 Verano Workflow automated task component manager
US7069536B2 (en) 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US6898604B1 (en) 2001-06-29 2005-05-24 Microsoft Corporation XML serialization and deserialization
US20030018508A1 (en) 2001-07-19 2003-01-23 Schwanke Robert W. Data-triggered workflow processes
US7222334B2 (en) 2001-07-24 2007-05-22 Hewlett-Packard Development Comapny, L.P. Modeling tool for electronic services and associated methods and businesses
US6985939B2 (en) 2001-09-19 2006-01-10 International Business Machines Corporation Building distributed software services as aggregations of other services
US20030177046A1 (en) 2001-12-03 2003-09-18 John Socha-Leialoha Method and system for reusing components
US7089287B2 (en) 2002-01-16 2006-08-08 Xerox Corporation Message-based system having embedded information management capabilities
US20030144891A1 (en) 2002-01-26 2003-07-31 International Business Machines Corporation Supervising the processing status of activities within workflow management systems
US7441197B2 (en) 2002-02-26 2008-10-21 Global Asset Protection Services, Llc Risk management information interface system and associated methods
US20030233374A1 (en) 2002-03-14 2003-12-18 Ulrich Spinola Dynamic workflow process
US20030195762A1 (en) 2002-04-12 2003-10-16 David Gleason Automated workflow
US20040002950A1 (en) 2002-04-15 2004-01-01 Brennan Sean F. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system using hierarchically enumerated data set
US7424717B2 (en) 2002-05-01 2008-09-09 Bea Systems, Inc. Systems and methods for business process plug-in development
US7272816B2 (en) 2002-07-31 2007-09-18 Sap Aktiengesellschaft Transformations between private and shared workflows
US20040078105A1 (en) 2002-09-03 2004-04-22 Charles Moon System and method for workflow process management
US7272822B1 (en) * 2002-09-17 2007-09-18 Cisco Technology, Inc. Automatically generating software tests based on metadata
US7398525B2 (en) 2002-10-21 2008-07-08 International Business Machines Corporation Resource scheduling in workflow management systems
US8056046B2 (en) 2002-10-22 2011-11-08 The Boeing Company Integrated system-of-systems modeling environment and related methods
US7437703B2 (en) 2002-10-25 2008-10-14 Sap Ag Enterprise multi-agent software system with services able to call multiple engines and scheduling capability
US7711670B2 (en) 2002-11-13 2010-05-04 Sap Ag Agent engine
US7062537B2 (en) 2002-11-25 2006-06-13 Microsoft Corporation Workflow services architecture
US7877681B2 (en) * 2002-12-05 2011-01-25 Borland Software Corporation Automatic context management for web applications with client side code execution
US7272820B2 (en) 2002-12-12 2007-09-18 Extrapoles Pty Limited Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity
US7168077B2 (en) 2003-01-31 2007-01-23 Handysoft Corporation System and method of executing and controlling workflow processes
US20040162741A1 (en) 2003-02-07 2004-08-19 David Flaxer Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference
CA2420479A1 (en) 2003-02-13 2004-08-13 Ibm Canada Limited - Ibm Canada Limitee Flow debugging software and method
WO2004097545A2 (en) 2003-05-01 2004-11-11 Maz Laboratory A method of executing a computer program
US7114146B2 (en) 2003-05-02 2006-09-26 International Business Machines Corporation System and method of dynamic service composition for business process outsourcing
EP1620830A2 (en) 2003-05-07 2006-02-01 Sap Ag An end user oriented workflow approach including structured processing of ad hoc workflows with a collaborative process engine
CA2528996C (en) 2003-06-12 2016-10-11 Reuters America Inc. Business process automation
US20050066002A1 (en) 2003-07-31 2005-03-24 Arnold Teres Workflow compatible healthcare information message communication system
US8645420B2 (en) 2003-08-05 2014-02-04 Accenture Global Services Limited Methodology framework and delivery vehicle
US7693973B2 (en) 2003-08-28 2010-04-06 International Business Machines Corporation Pluggable state meta-data processors based on meta information modeling in a service oriented architecture
WO2005033933A1 (en) 2003-09-02 2005-04-14 Infoglide Software Corporation System and method for workflow process management
CA2442796A1 (en) 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Binding a workflow engine to a data model
CA2443447A1 (en) 2003-09-30 2005-03-30 Ibm Canada Limited-Ibm Canada Limitee System and method for conversion between graph-based representations and structural text-based representations of business processes
US7467374B2 (en) 2003-11-05 2008-12-16 Microsoft Corporation Serialization for structured tracing in managed code
US7093207B1 (en) 2003-11-17 2006-08-15 Kla-Tencor Technologies Corporation Data analysis flow engine
US7137033B2 (en) 2003-11-20 2006-11-14 International Business Machines Corporation Method, system, and program for synchronizing subtasks using sequence numbers
AU2003298193A1 (en) 2003-12-17 2005-07-05 Telecom Italia S.P.A. Method and apparatus for monitoring operation of processing systems, related network and computer program product therefor
US7519960B2 (en) 2003-12-19 2009-04-14 International Business Machines Corporation Method and system for debugging business process flow
US7693916B2 (en) 2004-01-05 2010-04-06 Microsoft Corporation Correlating process instance data across multiple applications
US20050154628A1 (en) 2004-01-13 2005-07-14 Illumen, Inc. Automated management of business performance information
US7685576B2 (en) * 2004-01-26 2010-03-23 Siemens Corporation System and method for model based system testing of interactive applications
US7650344B2 (en) 2004-02-09 2010-01-19 Coremetrics, Inc. System and method of managing software product-line customizations
US7197502B2 (en) 2004-02-18 2007-03-27 Friendly Polynomials, Inc. Machine-implemented activity management system using asynchronously shared activity data objects and journal data items
US8166554B2 (en) 2004-02-26 2012-04-24 Vmware, Inc. Secure enterprise network
US20050210455A1 (en) 2004-03-18 2005-09-22 International Business Machines Corporation Method for generating an executable workflow code from an unstructured cyclic process model
US7359909B2 (en) 2004-03-23 2008-04-15 International Business Machines Corporation Generating an information catalog for a business model
US7177782B2 (en) 2004-06-18 2007-02-13 Lenovo (Singapore) Pte. Ltd. Methods and arrangements for capturing runtime information
US20060064335A1 (en) 2004-08-17 2006-03-23 International Business Machines Corporation Method, system, and storage medium for performing business process modeling
EP1810131A4 (en) * 2004-08-31 2011-05-11 Ibm ARCHITECTURE ORIENTED SERVICES FOR DATA INTEGRATION SERVICES
US20060053120A1 (en) 2004-09-07 2006-03-09 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Web service registry and method of operation
US7464366B2 (en) 2004-10-01 2008-12-09 Microsoft Corporation Programming interface for a componentized and extensible workflow model
US7631291B2 (en) 2004-10-01 2009-12-08 Microsoft Corporation Declarative representation for an extensible workflow model
US20060074735A1 (en) 2004-10-01 2006-04-06 Microsoft Corporation Ink-enabled workflow authoring
US20060074704A1 (en) 2004-10-01 2006-04-06 Microsoft Corporation Framework to model cross-cutting behavioral concerns in the workflow domain
US7441236B2 (en) * 2004-10-27 2008-10-21 Bae Systems Land & Armaments L.P. Software test environment for regression testing ground combat vehicle software
US8478616B2 (en) 2004-10-29 2013-07-02 FrontRange Solutions USA Inc. Business application development and execution environment
US20060112122A1 (en) 2004-11-23 2006-05-25 International Business Machines Corporation Method, system, and storage medium for implementing business process modules
US20060122872A1 (en) 2004-12-06 2006-06-08 Stevens Harold L Graphical user interface for and method of use for a computer-implemented system and method for booking travel itineraries
US7433887B2 (en) 2004-12-29 2008-10-07 Microsoft Corporation Method and apparatus for metadata driven business logic processing
CN1648925B (zh) * 2005-03-03 2010-09-29 北京北大方正电子有限公司 一种印前工作流程的配置和运行方法
US7493594B2 (en) 2005-03-14 2009-02-17 Research In Motion System and method for designing component based applications
WO2006110981A1 (en) 2005-04-18 2006-10-26 Research In Motion Limited System and method for enabling assisted visual development of workflow for application tasks
US20060241954A1 (en) 2005-04-22 2006-10-26 International Business Machines Corporation Method and system for adaptive action management for business solutions
JP4839091B2 (ja) * 2006-01-27 2011-12-14 株式会社日立製作所 データベース回復方法及び計算機システム

Also Published As

Publication number Publication date
US20070239499A1 (en) 2007-10-11
AU2007235541A1 (en) 2007-10-18
US8069439B2 (en) 2011-11-29
BRPI0710032A2 (pt) 2011-08-02
CA2643331A1 (en) 2007-10-18
CN101416157A (zh) 2009-04-22
EP2013714A1 (en) 2009-01-14
WO2007117364A1 (en) 2007-10-18
EP2013714A4 (en) 2009-05-06
KR20080112253A (ko) 2008-12-24
RU2008138699A (ru) 2010-04-10
JP5140067B2 (ja) 2013-02-06
CN101416157B (zh) 2012-08-29
JP2009532758A (ja) 2009-09-10

Similar Documents

Publication Publication Date Title
US8069439B2 (en) Framework for modeling continuations in workflows
MX2008011914A (es) Modelo de ejecucion abstracto durante un meta-tiempo de funcionamiento basado en continuacion.
Chiu et al. Web interface-driven cooperative exception handling in ADOME workflow management system
JP5006382B2 (ja) 軽量スレッドの並行処理制御のための宣言型モデル
JP5297370B2 (ja) プロセス中心型プログラムにおける非同期フォールト処理
US20070239498A1 (en) Framework for modeling cancellation for process-centric programs
JP2006107479A (ja) ワークフロー領域内の分野横断的動作問題(cross−cuttingbehavioralconcerns)をモデル化するためのフレームワーク
Bendraou et al. UML4SPM: An executable software process modeling language providing high-level abstractions

Legal Events

Date Code Title Description
FA Abandonment or withdrawal