BRPI0709242A2 - modelo de execução abstrato para um meta-tempo de execução com base em continuação - Google Patents

modelo de execução abstrato para um meta-tempo de execução com base em continuação Download PDF

Info

Publication number
BRPI0709242A2
BRPI0709242A2 BRPI0709242-3A BRPI0709242A BRPI0709242A2 BR PI0709242 A2 BRPI0709242 A2 BR PI0709242A2 BR PI0709242 A BRPI0709242 A BR PI0709242A BR PI0709242 A2 BRPI0709242 A2 BR PI0709242A2
Authority
BR
Brazil
Prior art keywords
activity
execution
automaton
program
continuation
Prior art date
Application number
BRPI0709242-3A
Other languages
English (en)
Inventor
Dharma K Shukla
Robert B Schmidt
Mayank Mehta
Akash J Sagar
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 BRPI0709242A2 publication Critical patent/BRPI0709242A2/pt

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
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application

Abstract

MODELO DE EXECUçãO ABSTRATO PARA UM META-TEMPO DE EXECUçãO COM BASE EM CONTINUAçãO O fornecimento de um motor de fluxo de trabalho para virtualizar um ambiente de execução gerenciado. O motor de fluxo de trabalho executa um fluxo de trabalho com base em um automaton e métodos associados com o mesmo. O motor de fluxo de trabalho captu- ra as continuações associadas com o fluxo de trabalho em execução para permitir a mode- lagem de processos do mundo real.

Description

"MODELO DE EXECUÇÃO ABSTRATO PARA UM META-TEMPO DE EXECUÇÃO COM BASE EM CONTINUAÇÃO"
Fundamentos
Os sistemas existentes tentam modelar processos comerciais ou outras interações do mundo real entre agentes autônomos através de fluxos de trabalho de alto nível. No entanto, os fluxos de trabalho podem variar em uma variedade de dimensões tal como (a) complexidade de execução e modelagem, (b) conhecimento da estrutura do fluxo no momento do desenho, (c) dinâmica estatisticamente definida ou ad-hoc, (d) facilidade de criação e edição do fluxo em vários pontos em seu ciclo de vida, e (e) associação fraca ou forte da lógica comercial com o processo de fluxo de trabalho núcleo. Os modelos de fluxo de trabalho existentes falham em acomodar todos esses fatores.
Adicionalmente, a maior parte dos modelos de fluxo de trabalho existentes são baseados em abordagens com base em linguagem (por exemplo, BPEL4WS, XLANG/S e WSFL) ou abordagens com base em aplicativo. As abordagens com base em linguagem são linguagens de fluxo de trabalho de alto nível com um conjunto fechado de construções pré-definidas que ajudam a modelar o processo de fluxo de trabalho para o usuário/programador. As linguagens de fluxo de trabalho transportam toda a informação semântica para o conjunto fechado de construções para permitir que o usuário construa um modelo de fluxo de trabalho. No entanto, as linguagens não são extensíveis pelos projetistas e representam um conjunto fechado de primitivos que constituem o modelo de fluxo de trabalho. As linguagens são amarradas ao compilador de linguagem enviado pelo vendedor do sistema de fluxo de trabalho. Apenas o vendedor de produto de sistema de fluxo de trabalho pode estender o modelo pela extensão da linguagem com um novo conjunto de construções em uma versão futura do produto. Isso exige freqüentemente a atualização do compilador associado com a linguagem. Adicionalmente, as linguagens normalmente não expõem de forma declarada nem definem as funções ou operações que podem ser prontamente e eficientemente utilizadas por outros programas.
As abordagens baseadas em aplicativo são aplicativos que possuem capacidades de fluxo de trabalho dentro do aplicativo para solucionar um problema específico de domínio. Esses aplicativos não são verdadeiramente extensíveis nem possuem um modelo pro-gramável.
Sumário
As modalidades da invenção modelam processos do mundo real em um fluxo de trabalho. Em uma modalidade, a invenção define um automaton para associação com uma atividade em um fluxo de trabalho. Um motor meta-tempo de execução, virtualizando um ambiente de execução gerenciado possuindo uma funcionalidade fixa, executa um fragmento do programa incluindo a atividade baseada no automaton definido. Em resposta ao rece-bimento de um sinal de suspensão direcionado para o fragmento de programa sendo executado, o motor meta-tempo de execução determina dados de continuação associados com o fragmento do programa e libera quaisquer recursos associados com o fragmento do programa.
Esse sumário é fornecido para introduzir uma seleção de conceitos de uma forma simplificada que são adicionalmente descritos abaixo na Descrição Detalhada.
Esse sumário não deve identificar características chave ou características essenciais da matéria reivindicada, nem pretende ser utilizado como um auxílio na determinação do escopo da matéria reivindicada.
Outras características serão parcialmente aparentes e parcialmente destacadas posteriormente.
Breve Descrição dos Desenhos
A figura 1 é um diagrama em bloco ilustrando um ambiente operacional ilustrativo para os aspectos da invenção;
A figura 2 é um diagrama em bloco ilustrativo ilustrando uma estrutura de trabalho de fluxo de trabalho com base em continuação de acordo com uma modalidade da invenção;
A figura 3 é um diagrama em bloco ilustrativo ilustrando um fluxo de trabalho de a-cordo com uma modalidade da invenção;
A figura 4 é um diagrama ilustrando uma estrutura hierárquica de uma atividade de fluxo de trabalho de acordo com uma modalidade da invenção;
A figura 5 é um diagrama ilustrando um automaton de estado ilustrativo para uma atividade de acordo com uma modalidade da invenção;
A figura 6 é um diagrama em bloco ilustrando um sistema ilustrativa para o processamento das atividades de fluxo de trabalho de acordo com uma modalidade da invenção;
A figura 7 é um fluxograma ilustrativo ilustrando a operação de um modelo de execução abstrato para um tempo de execução com base em continuação.
Caracteres de referência correspondentes indicam partes correspondentes por todos os desenhos.
Descrição Detalhada
Com referência em primeiro lugar à figura 1, um diagrama em bloco ilustra um paradigma de programação típico para modelagem de atividades centradas em processo em um fluxo de trabalho. Nessa figura, o diagrama ilustra um modelo de virtualização de três níveis com um ambiente de execução gerenciado 106 no nível mais alto de virtualização de um sistema operacional 104. O ambiente de execução gerenciado 106 virtualiza a execução de um programa sendo executado no ambiente 106 em termos de uma máquina de pilha abstrata que pode ser implementada independentemente da arquitetura do processador deum dispositivo de computação. O sistema operacional 104 virtualiza uma unidade de processamento 102 no nível mais baixo. Os programas no nível de ambiente de execução gerenciado 106 não apresentam a capacidade e eficiência para acomodar as interações complexas entre os processos em um fluxo de trabalho devido à funcionalidade fixa disponível 5 no ambiente de execução gerenciado 106. O ambiente de execução gerenciado 106 também inclui várias exigências estritas inadequadas ao manuseio da complexidade e capacidade dos fluxos de trabalho de modelarem fluxos de trabalho do mundo real. Adicionalmente, os códigos ou rotinas de programação no sistema operacional 104 dependem do tipo ou configuração da unidade de processamento 102 e do tipo de arquitetura de computação (por 10 exemplo, compatível com os computadores pessoais da marca IBM, computadores pessoais da marca APPLE, ou outros sistemas) entre outras restrições. Adicionalmente, as linguagens de programação exigem tipicamente estruturas de dados específicas de hardware tal como uma pilha, ou seqüência para que o sistema operacional 104 funcione adequadamente.
Com referência a seguir à figura 2, os aspectos da invenção incluem um motor defluxo de trabalho com base em continuação 202, motor de meta-tempo de execução, ou outra estrutura de trabalho virtualizando o ambiente de execução gerenciado 106. O fluxo de trabalho inclui uma composição hierárquica de atividades com cada atividade representando uma unidade de trabalho. O motor de fluxo de trabalho 202 fornece um modelo abstrato as-síncrono de execução dos códigos de operação (op-codes) ou as atividades no fluxo de trabalho representando os processos no mundo real. O motor de fluxo de trabalho 202 é um tempo de execução com base em continuação que é capaz de suspender os programas e retomá-los em qualquer ponto durante o ciclo de execução. Enquanto uma atividade é específica de domínio, o motor de fluxo de trabalho 202 é agnóstico de especificidade de domí-25 nio. Ademais, o motor de fluxo de trabalho 202 não sabe nada sobre um padrão de fluxo de controle específico que é empacotado em termos de uma atividade. Como tal, o modelo de execução fornecido pelos aspectos da invenção é abstrato. Adicionalmente, enquanto todo o caso de fluxo de trabalho pode rodar logicamente por uma duração de tempo arbitrária (por exemplo, dias, meses ou anos), as atividades associadas com o fluxo de trabalho podem 30 realizar uma tarefa rápida e resultar em uma multitarefa cooperativa. O modelo de execução abstrato dos aspectos da invenção permite que o motor de fluxo de trabalho 202 suspenda um caso no meio da execução e/ou retire o mesmo da memória e retome o mesmo no futuro. O motor de fluxo de trabalho 202 gerencia tais operações através da passivação de programa.
Em uma modalidade, o motor de fluxo de trabalho 202 opera para virtualizar um oumais dos aspectos a seguir do ambiente de execução gerenciado 106; op-codes específicos de domínio, uma seqüência, um primitivo de sincronização, uma máquina de execução, umavida útil de objeto, um formato fonte, uma exceção, uma falha, propagação de falha, e manuseio de falha. Por exemplo, aspectos da invenção permitem que os usuários escrevam op-codes personalizados em termos de atividades personalizadas. Em geral, o motor de fluxo de trabalho 202 utiliza uma seqüência, uma pilha de ambiente de execução gerenciado 106. Com a capacidade de execução dos programas escritos em qualquer linguagem de programação e compostos em qualquer formato de arquivo, o motor de fluxo de trabalho 202 permite que os projetistas de programa projetem os programas sem comprometimento. Pela definição das atividades que representam as tarefas de fluxo de trabalho ou processos como a classe de base a ser executada pelo motor de fluxo de trabalho 202, os aspectos da invenção permitem que os projetistas construam de forma fácil e eficiente os op-codes específicos de domínio sem aderir ao conjunto rígido, codificado em nível de hardware, inflexível e fixo de funções ou classes de atividades no ambiente de execução gerenciado 106. Os op-codes podem ser específicos para domínios de saúde industrial, da indústria financeira, ou outros domínios. O motor de fluxo de trabalho 202 da figura 2 pode ser qualquer tempo de execução com base em continuação em camadas em cima de qualquer estrutura de trabalho de execução existente (por exemplo, o ambiente de execução gerenciado 106, o sistema operacional 104, ou unidade de processamento 102 na figura 1) que permita a modelagem das continuações e vários aspectos das mesmas para permitir que o programador modele padrões de fluxo de controle complexos e dinâmicos. Os aspectos da invenção permitem a definição de atividades de qualquer forma ou representação (por exemplo, um flu-xograma, um diagrama, uma descrição numerada ou similares).
As continuações podem ser utilizadas para modelar padrões de fluxo complexos e dinâmicos. Uma continuação representa um programa congelado em ação e pode incluir um único objeto funcional contendo o estado de uma computação. Quando o objeto é avaliado, a computação armazenada pode ser reiniciada a partir de onde parou. Na solução de determinados tipos de problemas, pode ser de grande ajuda poder se salvar o estado de um programa e reiniciá-lo posteriormente. No multiprocessamento, por exemplo, uma continuação representa convenientemente um processo suspenso. Nos programas de busca não determinísticas, uma continuação pode representar um nó na árvore de busca.
Enquanto o ambiente de execução gerenciado 106 cria um ambiente de comunica-ção comum, porém fixo, entre os programas, a capacidade de se modelar processos do mundo real em tal ambiente ainda falta. Por exemplo, os aplicativos sendo executados no ambiente de execução gerenciado 106 são limitados a uma linguagem intermediária para compartilhar funções ou classes orientadas por objetos comuns. A linguagem intermediária possui parâmetros fixos, argumentos, ou esquemas ou funções.
Com referência novamente à figura 2, um usuário 204 (por exemplo, um humano, um programa de aplicativo, um sistema operacional, ou similar) interage com um computa-dor 206 fornecendo a estrutura de trabalho da fundação do fluxo de trabalho. O computador 206 e o processador associado com o mesmo (não ilustrado) têm acesso a uma área de memória 208 armazenando dados de continuação 210 e um ou mais componentes legíveis por computador ou módulos que possuem instruções executáveis por computador para a 5 implementação da fundação do fluxo de trabalho. Os dados de continuação 210 incluem um estado de aplicativo e um estado de tempo de execução. Em uma modalidade, o estado de aplicativo inclui uma lista de objetos de atividade e indica uma situação de atividade (por exemplo, com referência à árvore de atividade) enquanto o estado de tempo de execução inclui um contador de programa identificando um manuseador de exceção programado a 10 seguir para execução ou, de outra forma, indica uma situação de fila de programador (por exemplo, os itens em uma fila associada com o programador). As continuações representadas pelos dados de continuação 210 geralmente representam um contexto de execução de atividade ou outro estado do fragmento do programa em um determinado momento no tempo. O contexto de execução de atividade está disponível independente da pilha associada 15 com a seqüência física a partir do ambiente de execução gerenciado 106.
Na modalidade da figura 2, os componentes ou módulos executáveis em computador incluem um módulo automata 212, um módulo de máquina de execução 214, um módulo de continuação 216, e um módulo de reinicialização 218. O módulo de automata 212, quando executado pelo computador 206, define um automaton par associação com uma ativida-20 de em um fluxo de trabalho. O automaton definido possui um conjunto de estados associados com o mesmo e um ou mais métodos correspondentes a cada um dos estados. O módulo de máquina de execução 214 executa um fragmento de programa incluindo a atividade com base no automaton definido pelo modulo de automata 212. O módulo de continuação 216 captura, em resposta ao recebimento de um sinal de suspensão direcionado ao frag-25 mento de programa sendo executado pelo módulo de máquina de execução 214, dados de continuação 210 do fragmento de programa e libera um recurso associado com o fragmento do programa. A operação do módulo de continuação 216 pode ser referida como remoção do fragmento de programa, saída do fragmento de programa, desidratação do fragmento do programa e/ou descarregamento do fragmento de programa. Por exemplo, os dados de con-30 tinuação são utilizados para modelar um ou mais dentre os seguintes: um padrão de fluxo de controle, uma interação, um paralelo para cada declaração, uma máquina de estado, um controlador de fluxo de página, um gerador de seqüência e outra continuação.
quando executado pelo computador 206 ou outro dispositivo de computação, o módulo de reinicialização 218 restaura, em resposta ao recebimento de um sinal de reinicializa-35 ção direcionado ao fragmento de programa sendo executado pelo módulo de máquina de execução 214, dados de continuação 210 para o fragmento de programa capturado pelo módulo de continuação 216. O módulo de máquina de execução 214 retoma a execução dofragmento de programa com base nos dados de continuação restaurados 210.
Por exemplo, utilizando-se a referência à continuação, um manuseador de execução (por exemplo, um método associado com uma atividade) pode programar mais manu-seadores de execução (por exemplo, uma atividade composta pode programar a execução de suas crianças). Em uma modalidade, a referência à continuação inclui o contexto de execução de atividade como um argumento direto ou implícito. A compensação das atividades completadas com sucesso pode ser executada no futuro pela nova invocação do contexto persistido e execução do método compensador do caso de atividade dentro do contexto.
Qualquer um dos elementos da figura 2, e outras figuras, e linguagem aqui constituem meios para o fornecimento de meta-tempo de execução e meios de captura de uma continuação associada com o fragmento de programa.
Com referência a seguir à figura 3, um fluxo de trabalho ilustrativo 300 é ilustrado. No exemplo da figura 3, o fluxo de trabalho 300 é um fluxo de trabalho para o processamento de uma ordem de compra. As atividades no fluxo de trabalho podem ser seqüenciadas de forma que algumas das atividades possam ser realizadas em paralelo a ou simultaneamente com outras atividades no fluxo de trabalho 300, enquanto algumas das atividades no fluxo de trabalho 300 são executadas depois da finalização de outras atividades no fluxo de trabalho 300. O fluxo de trabalho 300 começa em um ponto inicial 302 tal como o recebimento de um compra de um cliente. O fluxo de trabalho 300 inclui declarações condicionais 306 e 308 dependendo do resultado da condição na declaração condicional 304. Seguindo a declaração condicional 306, o fluxo de trabalho 300 inclui uma estrutura paralela 310 possuindo duas seqüências a serem executadas de forma assíncrona. No exemplo ilustrado na figura 3, uma atividade "Enviar e-mail" e uma atividade "Obter Aprovação" são processadas em paralelo antes do fluxo de trabalho ser completado em 314.
Depois da declaração condicional 308, uma área "deixe as atividades aqui" 316 in-dica que o autor da atividade ou outro usuário pode adicionar atividades ao fluxo de trabalho 300 antes do fluxo de trabalho ser finalizado em 314.
Com referência a seguir à figura 4, um diagrama em bloco ilustra uma estrutura hierárquica 402 (por exemplo, uma estrutura de árvore) de uma atividade de fluxo de trabalho. A execução da atividade inclui a execução da árvore de atividade começando na raiz da árvore. A atividade pode ser configurada pelo código de software em qualquer linguagem de programação. Por exemplo, o código de software pode representar negócios ou lógica de aplicativo ou regras escritas em um domínio específico ou ambiente de execução. A atividade pode incluir um ou mais itens de trabalho ou outras atividades implementando a lógica ou regras. Na modalidade da figura 4, as atividades e os itens de trabalho associados são dispostos e executados de acordo com a estrutura 402 ou outra seqüência de execução.
O motor de meta-tempo de execução define um escopo ou limite para cada um dositens de trabalho associados com uma atividade. Esse escopo ou limite inclui e expõe informação (por exemplo, na forma de dados, metadados, ou similares) tal como os dados compartilhados ou recursos a serem acessados pelos itens de trabalho, propriedades associadas, manuseadores, restrições, eventos, e similares.
Com referência a seguir à figura 5, um automaton de estado ilustrativo define umconjunto de estados através dos quais uma atividade pode transitar. Geralmente, o automaton de estado 500 define uma vida útil de execução para a atividade. No automaton ilustrativo da figura 5, a atividade transita através do conjunto definido de estados à medida que o motor meta-tempo de execução executa a atividade e avalia as condições de transição. O motor de meta-tempo de execução garante a execução da atividade por automaton abstrato. Em uma modalidade, a execução de uma atividade é realizada em termos dos estados no automaton 500 e as possíveis transições específicas para cada um dos estados.
Um automaton ilustrativo inclui um estado inicializado, um estado de execução e um estado fechado. No exemplo da figura 5, o automaton de estado 500 inclui um estado 1 inicializado 502, um estado de execução 504, um estado de cancelamento 506, um estado de falha 508, um estado de compensação 510, e um estado fechado 512. Em outra modalidade, um ou mais estados adicionais podem ser definidos no automaton de estado 500 sem se distanciar do escopo das modalidades da invenção.
Em geral, o automaton de estado 500 possui uma ou mais condições de transição definindo a transição da atividade através do conjunto de estados. Em uma modalidade, se um primeiro automaton for associado com uma primeira atividade e um segundo automaton for associado com uma segunda atividade, uma condição de transição do primeiro automaton da primeira atividade pode depender de um estado atual do segundo automaton da segunda atividade.
Adicionalmente, o automaton de estado 500 pode estabelecer uma ou mais rela-ções entre os itens ou atividades de trabalho em uma atividade composta. Por exemplo, uma das regras da relação pode incluir que, antes de transitar métodos ou itens de trabalho no nó raiz da árvore de atividade para o estado fechado 512, todos os itens de trabalho nos nós crianças devem estar no estado inicializado 502 ou no estado fechado 512. Outra regra pode especificar que o item de trabalho no nó raiz deve estar no estado de execução 504 antes de transitar os itens de trabalho no nó criança da árvore de atividade para o estado de execução 504.
Com referência a seguir à figura 6, um diagrama ilustra um sistema 600 para o processamento de atividades de fluxo de trabalho de acordo com uma modalidade da invenção. O sistema 600 inclui um processador 602, que pode ser uma unidade de processamento tal como uma unidade de processamento 102 na figura 1 ou uma coleção de unidades de processamento. O sistema 600 também inclui uma área de armazenamento ou de memória 604para o armazenamento de dados acessíveis pelo processador 602. Em uma modalidade, o sistema 600 pode ser um computador possuindo um ou mais processadores ou unidades de processamento (por exemplo, processador 602), uma memória de sistema (por exemplo, área de memória 604), e outros componentes para acoplar vários componentes de sistema incluindo o processador 602 à área de memória 604.
Por exemplo, a área de memória 604 armazena uma pluralidade de atividades 606 para o processamento em um fluxo de trabalho (por exemplo, fluxo de trabalho 300 na figura 3). Cada uma dentre a pluralidade de atividades 606 inclui um ou mais itens de trabalho, e os itens de trabalho podem ser organizados em uma estrutura hierárquica tal como uma estrutura de árvore (ver figura 4). No processamento da pluralidade de atividades 606, o processador 602 acessa ou executa um programador 608. O programador 608 inclui uma fila 610 de itens de trabalho (por exemplo, uma fila de trabalho) e um despachante 612 que retira da fila os itens e invoca as implementações correspondentes que realizam o trabalho associado com o item de trabalho retirado da fila até que a fila 610 esteja vazia. Cada unidade de trabalho na fila 610 corresponde a um método implementado por uma atividade. O método pode ser referido como manuseador de execução. A execução completa de uma determinada atividade pode abranger a invocação e execução de um conjunto de manusea-dores de execução enfileirados na fila 610 em um ponto mais cedo no tempo.
Um automaton de estado tal como o automaton de estado 500 na figura 5 define um fluxo de execução para os itens de trabalho (por exemplo, os itens de trabalho 622) em uma atividade de fluxo de trabalho. O processador 608 acessa os itens de trabalho na pluralidade de atividades 606 através de um componente ou um conjunto de instruções executáveis por computador tal como o programador 608 para inicializar os itens de trabalho 622 e enfileirar ou armazenar os itens de trabalho 622 para uma fila 610. Por exemplo, o item de trabalho 622-1, como ilustrado na figura 6, é inicializado e enfileirado na fila 610. O item de trabalho 622-1 é desinfileirado a seguir ou removido da fila 610 por um despachante 612 antes da transição para um estado de execução (por exemplo, estado de execução 504 na figura 5) para execução.
Em um exemplo, o item de trabalho 622-1 inclui um método de atividade ou uma operação de atividade 624, rotina ou uma coleção de códigos para a realização de uma função da "solicitação de registro de um usuário". Um ou mais outros métodos de atividade, operações de atividade, rotinas ou códigos podem ser incluídos em cada um dos itens de trabalho 622 sem se distanciar do escopo dos aspectos da invenção.
À medida que o despachante 612 despacha os itens de trabalho 622, o processador 602 executa os métodos 624 em cada um dos itens de trabalho 622 em 614. No exemplo do item de trabalho 622-1, o processador 602 pode fornecer um usuário com uma interface de usuário (UI) para registrar a informação ou dados solicitados. Em outra modalidade,o processador 602 pode conectar ou acessar uma fonte de dados externa para entrada. Depois da finalização do método de atividade ou operação de atividade 624, o processador 602 conclui a execução do item de trabalho 622-1 em 616.
Alternativamente, o processador 602 pode passivar ou, de outra forma, capturar o estado de execução dos itens de trabalho (por exemplo, item de trabalho 622-1) em 618 para um armazenador de dados 620 para a recuperação subseqüente e execução continuada.
Dependendo dos parâmetros ou condições durante a execução do item de trabalho 622-1, o item de trabalho 622-1 pode prosseguir para um estado de cancelamento (por exemplo, estado de cancelamento 506 na figura 5) ou um estado de falha (por exemplo, estado de falha 508 na figura 5). Em uma modalidade, o item de trabalho 422-1 pode prosseguir do estado de cancelamento para o estado de falha. Em uma modalidade alternativa, um estado de compensação (por exemplo, estado de compensação 510 na figura 5) descreve um conjunto de operações ou funções a serem realizadas quando uma falha ou exceção ocorreu.
Com referência a seguir à figura 7, um fluxograma ilustrativo ilustra a operação de um modelo de execução abstrato para um tempo de execução com base em continuação. O método inclui a definição de um automaton para associação com uma atividade em um fluxo de trabalho em 702. O automaton definido possui um conjunto de estados associados com o 20 mesmo e uma ou mais condições de transição definindo a transição da atividade através do conjunto de estados. Antes da transição de uma atividade de um estado para outro (ou permitindo que a atividade transite), o método inclui a verificação das condições de transição. Em uma modalidade, o automaton é recebido de um usuário, programa de aplicativo, sistema operacional ou outra fonte. O método define um ou mais métodos correspondentes a cada um dos estados noautomaton em 704. Por exemplo, os métodos para uma atividade podem ser definidos por um usuário, recebidos pelo tempo de execução do usuário, e associados com pelo menos um dos estados no automaton associado com a atividade. Por exemplo, os métodos definidos podem ser associados com uma estrutura de dados representando a atividade. 30 O motor meta-tempo de execução, virtualizando um ambiente de execução gerenciado possuindo uma funcionalidade fixa, executa um fragmento de programa incluindo a atividade baseada no automaton definido e os métodos definidos em 706. O método inclui o recebimento de um sinal de suspensão direcionado ao fragmento de programa em execução em 708, a determinação dos dados de continuação associados com o fragmento de programa em resposta ao sinal de suspensão recebido, e armazenamento dos dados de continuação determinados em uma área de memória em 710. Os dados de continuação representam uma continuação do fragmento de programa. O método inclui adicionalmente a identificaçãode um ou mais recursos associados com o fragmento de programa e liberação dos recursos identificados em 712.
Em uma modalidade, a execução do fragmento de programa é episódica com cada episódio persistido como uma continuação. Os dados de continuação representam um contexto de execução de atividade que inclui, em uma modalidade, um estado de tempo de e-xecução associado com o motor meta-tempo de execução e um estado de aplicativo associado com os fragmentos de programa. Um limite de dados para a continuação é definido por, por exemplo, determinação de extensão, escopo e união das variáveis ao estado no contexto de encerramento de ambiente.
Subseqüentemente, um sinal de reinicialização pode ser direcionado ao fragmentode programa quando, por exemplo, os dados estão disponíveis para consumo pelo fragmento de programa. Em resposta a esse sinal de reinicialização, o método acessa os dados de continuação armazenados na área de memória e carrega os dados de continuação acessados para dentro de uma memória de execução associada com a máquina de execução. O método retoma a execução do fragmento de programa com base nos dados de continuação carregados em 714. Em geral, esses aspectos do método podem ser referidos como reativação ou reinicio do fragmento de programa.
O computador 206 na figura 2 e o processador 602 na figura 6 são exemplos de dispositivos de computação de finalidade geral. Em uma modalidade da invenção, um computador é adequado para uso nas outras figuras ilustradas e descritas aqui. O computador possui um ou mais processadores ou unidades de processamento e uma memória de sistema. O computador possui tipicamente pelo menos alguma forma de mídia legível por computador. A mídia legível por computador, que inclui ambas as mídia volátil e não volátil, mídia removível e não removível, pode ser qualquer meio disponível que possa ser acessado pelo computador. Por meio de exemplo e não de limitação, a mídia legível por computador compreende mídia de armazenamento em computador e mídia de comunicação. A mídia de armazenamento em computador inclui mídia volátil e não volátil, removível e não removível implementada em qualquer método ou tecnologia para o armazenamento de informação tal como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. Por exemplo, a mídia de armazenamento em computador inclui RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD), ou outro armazenamento em disto ótico, fitas magnéticas, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que possa ser utilizado para armazenar a informação desejada e que possa ser acessado pelo computador. A mídia de comunicação consubstancia tipicamente instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulado tal como uma onda portadora ou outro mecanismo de transporte einclui qualquer mídia de distribuição de informação. Os versados na técnica estão familiarizados com o sinal de dados modulado, que possui uma ou mais de suas características configuradas ou alteradas de tal forma a codificar a informação no sinal. A mídia com fio, tal como uma rede com fio ou conexão com fio direta, e mídia sem fio, tal como mídia acústica, RF, infravermelho e outra mídia sem fio, são exemplos de mídia de comunicação. As combinações de qualquer um dos acima também são incluídas no escopo da mídia legível por computador.
A memória do sistema inclui mídia de armazenamento em computador na forma de memória removível e/ou não removível, volátil e/ou não volátil. O computador também pode incluir outras mídias de armazenamento em computador removível/não removível, volátil/não volátil.
O computador pode operar em um ambiente em rede utilizando conexões lógicas para um ou mais computadores remotos, tal como um computador remoto. O computador remoto pode ser um computador pessoal, um servidor, um roteador, um PC em rede, um dispositivo igual ou outro nó de rede comum, e inclui tipicamente muitos ou todos os elementos descritos acima com relação ao computador.
Apesar de descritas com relação a um ambiente de sistema de computação ilustrativo, incluindo o computador, as modalidades da invenção são operacionais com inúmeros outros ambientes de sistema de computação de finalidade geral ou finalidade especial ou configurações. O ambiente do sistema de computação não deve sugerir qualquer limitação quanto ao escopo do uso ou funcionalidade de qualquer aspecto da invenção. Ademais, o ambiente do sistema de computação não deve ser interpretado como tendo qualquer dependência ou exigência com relação a qualquer um ou combinação de componentes ilustrados no ambiente operacional ilustrativo. Exemplos de sistemas de computação bem conhecidos, ambientes e/ou configurações que podem ser adequados para uso com aspectos da invenção incluem, mas não estão limitados a, computadores pessoais, computadores servidor, dispositivos portáteis ou laptop, sistemas multiprocessadores, sistemas com base em microprocessador, aparelhos de digitalização, partes eletrônicas de consumidor programá-veis, telefones móveis, PCs em rede, mini computadores, computadores principais, ambientes de computação distribuídos que incluem qualquer um dos sistemas ou dispositivos acima, e similares.
As modalidades da invenção podem ser descritas no contexto geral das instruções executáveis por computador, organizadas em um ou mais componentes ou módulos de programa, executadas por um ou mais computadores ou outros dispositivos. Os processadores de dados do computador podem ser programados por meios de instruções executáveis por computador armazenadas em diferentes momentos em vários meios de armazenamento legíveis por computador do computador. Geralmente, os módulos de programa incluem, masnão estão limitados a, rotinas, programas, objetos, componentes, e estruturas de dados que realizam tarefas particulares ou implementam tipos de dados abstratos em particular. Os aspectos da invenção podem ser implementados com qualquer número e organização de tais componentes ou módulos. Por exemplo, os aspectos da invenção não estão limitados a 5 instruções executáveis por computador específicas ou componentes específicos ou módulos ilustrados nas figuras e descritos aqui. Outras modalidades da invenção podem incluir diferentes instruções executáveis por computador ou componentes possuindo mais ou menos funcionalidade do que ilustrado e descrito aqui. Em operação, o computador executa instruções executáveis por computador tal como as ilustradas nas figuras para implementação 10 dos aspectos da invenção. Os aspectos da invenção também podem ser praticados em ambientes de computação distribuídos onde as tarefas são realizadas pelos dispositivos de processamento remoto que são conectados através de uma rede de comunicações. Em um ambiente de computação distribuído, os módulos de programa podem ser localizados em ambas a mídia de armazenamento em computador local e remota incluindo dispositivos de 15 armazenamento em memória.
Uma interface no contexto de uma arquitetura de software inclui um módulo de software, componente, parte de código, ou outra seqüência de instruções executáveis por computador. A interface inclui, por exemplo, um primeiro módulo acessando um segundo módulo para realizar as tarefas de computação em nome do primeiro módulo. Os primeiro e 20 segundo módulos incluem, em um exemplo, interfaces de programação de aplicativo (APIs) tal como fornecido peios sistemas de operação, interfaces de modelo de objeto de componente (COM) (por exemplo, para comunicação de aplicativo não hierarquizada), e interfaces de formato de intercâmbio de metadados de linguagem de marcação extensível (XML) (por exemplo, para comunicação entre os serviços da rede). A interface pode ser uma implemen tação justa e sincronizada tal como na Edição Empresarial da Plataforma Java 2 (J2EE), COM, ou exemplos COM distribuídos (DCOM). Alternativamente ou adicionalmente, a interface pode ser uma implementação assíncrona acoplada de forma solta tal como em um serviço de rede (por exemplo, utilizando o protocolo de acesso de objeto simples). Em geral, a interface inclui qualquer combinação das seguintes características: acoplada de forma justa, 30 acoplada de forma solta, sincronizada e assíncrona. Adicionalmente, a interface pode se conformar a um protocolo padrão, um protocolo proprietário, ou qualquer combinação de protocolos padrão e proprietário. As interfaces descritas aqui podem todas ser parte de uma única interface ou podem ser implementadas como interfaces separadas ou qualquer combinação das mesmas. As interfaces podem ser executadas local ou remotamente para for-35 necer funcionalidade. Adicionalmente, as interfaces podem incluir funcionalidade adicional ou menos funcionalidade do que o ilustrado ou descrito aqui.
Os exemplos a seguir ilustram adicionalmente as modalidades da invenção. Um flu-xo de controle é considerado dinâmico por natureza quando o número de atividades criança não é conhecido no momento da compilação. Por exemplo, uma atividade composta que modela um processo de revisão de documento típico envia mensagens para os revisores pela execução simultânea de um conjunto de atividades de revisor primitivas. No entanto, o número de revisores pode não ser conhecido estaticamente no momento em que o programa é criado e, dessa forma, a quantidade exata de crianças da atividade composta não pode ser configurada nesse momento. Em tais casos, a atividade composta é configurada com uma única atividade de revisor agindo como um gabarito para gerar um conjunto de casos dinâmicos no momento da execução com base nos revisores atualmente disponíveis. Não apenas são os aspectos de fluxo de controle dessas construções dinâmicos por natureza, mas o estado de tempo de execução, incluindo sua localidade e uniões, também é dinâmica. Por exemplo, uma atividade que modela uma máquina de estado é configurada com um conjunto de atividades crianças que representam um estado. Cada atividade de estado é uma continuação que representa o estado do meta-programa ou a máquina de estado congelada em um determinado momento no tempo. A continuação pode ser executada várias vezes e em ordem aleatória pelos aspectos da invenção.
As construções contínuas podem ser visualizadas como um caso especial de fluxos de controle dinâmico. Por exemplo, a semântica de uma atividade que modela uma construção ForEach dita que cada interação deve criar um escopo distinto para o estado que é contido dentro da atividade ForEach. O escopo do estado envolve a localidade do estado, o gerenciamento da integridade referencial e união dos estados através dos escopos, e o gerenciamento da extensão ou vida útil do estado encerrado em um determinado escopo. Com os aspectos da invenção, o estado do programa é capturado em termos de campos e propriedades de dependência de atividades na árvore de programa. Dessa forma, a noção de locais ou variáveis temporárias para atividades de modelam as construções contínuas é criada pela geração eficiente de casos de atividades dinâmicas. Isso captura o estado local da interação com base na atividade de gabarito que representa o corpo do circuito.
Adicionalmente, diferentemente de uma construção de programa em um ambiente de programação não transacional/não durável, as atividades podem precisar ser compensadas durante a execução de programa subseqüente. Por exemplo, uma interação completada com sucesso de uma atividade DoWhiIe pode ser compensada posteriormente em sua vida útil se sua atividade parente falhar. Os aspectos da invenção permitem tal compensação (por exemplo, implementando semânticas undo) para cada interação pela captura e armazenamento do estado de execução da atividade correspondente a cada interação como uma continuação. A continuação representando o estado de execução armazenado pode ser invocada posteriormente para disponibilizar o estado original da execução quando os métodos de compensação associados com qualquer uma das atividades tentam ser executados.A ordem de execução ou desempenho das operações nas modalidades da invenção ilustradas e descritas aqui não é essencial, a menos que seja especificado. Isso é, as operações podem ser realizadas em qualquer ordem, a menos que seja especificado de outra forma, e as modalidades da invenção podem incluir operações adicionais ou menos operações do que as descritas aqui. Por exemplo, é contemplado que a execução ou realização de uma operação particular antes, simultaneamente com, ou depois de outra operação está dentro do escopo dos aspectos da invenção.
Quando da introdução de elementos dos aspectos da invenção ou das modalidades, os artigos "um", "uma", "o", "a", e "dito", "dita" devem significar que existem um ou mais elementos. Os termos "compreendendo", "incluindo" e "possuindo" devem incluir e significar que pode haver elementos adicionais além dos elementos listados.
Tendo descrito os aspectos da invenção em detalhes, será aparente que as modificações e variações são possíveis sem se distanciar do escopo dos aspectos da invenção como definido nas reivindicações em anexo. Visto que várias modificações podem ser realizadas nas construções, produtos e métodos acima sem se distanciar do escopo dos aspectos da invenção, pretende-se que toda a matéria contida na descrição acima e ilustrada nos desenhos em anexo seja interpretada como ilustrativa e não em um sentido limitador.

Claims (20)

1. Método de modelagem de processos do mundo real em um fluxo de trabalho, o dito sendo CARACTERIZADO pelo fato de compreender:a definição de um automaton (500) para associação com uma atividade (606) em um fluxo de trabalho, o dito automaton definido (500) possuindo um conjunto de estados associado com o mesmo;a definição de um ou mais métodos correspondentes a cada um dos estados no automaton (500), os ditos métodos definidos sendo associados com uma estrutura de dados representando a atividade (606); a execução, por um motor meta-tempo de execução (202) virtualizando um ambien-te de execução gerenciado (106) possuindo uma funcionalidade fixa, um fragmento de programa incluindo a atividade (606) com base no automaton definido (500) e métodos definidos;o recebimento de um sinal de suspensão direcionado para a execução do fragmento de programa;a determinação dos dados de continuação (210) associados com o fragmento de programa em resposta ao sinal de suspensão recebido, os ditos dados de continuação (210) representando uma continuação do fragmento de programa;o armazenamento de dados de continuação determinados (210) em uma área de memória (208);a identificação de um ou mais recursos associados com o fragmento de programa;ea liberação dos recursos identificados.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de compreender adicionalmente:o recebimento de um sinal de reinicialização direcionado ao fragmento de programa;o acesso aos dados de continuação armazenados na área de memória; o carregamento dos dados de continuação acessados em uma memória de execução associada com a máquina de execução; ea retomada da execução do fragmento de programa com base nos dados de continuação carregados.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de a máquina de execução operar para virtualizar um ou mais dos seguintes aspectos do ambientede execução gerenciado: um op-code específico de domínio, uma seqüência, um primitivo de sincronização, uma máquina de execução, uma vida útil de objeto, um formato de fonte, uma exceção, uma falha, uma propagação de falha, e o manuseio de falha.
4. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de a definição de um ou mais métodos compreender o recebimento de um usuário, os métodos para associação com pelo menos um dos estados no automaton associado com a atividade.
5. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de o au-5 tomaton compreender uma ou mais condições de transição definindo a transição da atividade através do conjunto de estados, e compreendendo adicionalmente a verificação das condições de transição antes de permitir que a atividade transite através dos estados.
6. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de um ou mais meios legíveis por computador possuírem instruções executáveis por computador para a realização do método, de acordo com a reivindicação 1.
7. Sistema para modelagem de processos do mundo real em um fluxo de trabalho, CARACTERIZADO pelo fato de que o dito sistema compreende:uma área de memória (208) para o armazenamento de dados de continuação (210) representando uma continuação de um fragmento de programa, o dito fragmento de pro-grama sendo associado com uma atividade (606) em um fluxo de trabalho, a dita área de memória (208) armazenando adicionalmente um motor meta-tempo de execução (202) para virtualizar um ambiente de execução gerenciado (106) possuindo funcionalidade fixa, o dito motor de meta-tempo de execução (202) possuindo uma máquina de execução representando um automaton (500) possuindo um conjunto de estados associados com o mesmo, 20 onde um ou mais métodos correspondem a cada um dos estados, onde os métodos são associados com uma estrutura de dados representando a atividade (606), o dito motor de meta-tempo de execução (202) executando o fragmento de programa com base na máquina de execução; eum processador (602) configurado para executar as instruções executáveis por 25 computador para:capturar os dados de continuação (210) associados com o fragmento de programa em execução;armazenar os dados de continuação capturados (210) na área de memória (208); eliberar um ou mais recursos associados com o fragmento do programa.
8. Sistema, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de a ditacaptura e o dito armazenamento corresponderem a um ou mais dentre o seguinte: remoção do fragmento de programa, retirada do fragmento de programa, desidratação do fragmento de programa e descarregamento do fragmento de programa.
9. Sistema, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de o mo-35 tor de meta-tempo de execução utilizar um ou mais dentre os seguintes a partir do ambientede execução gerenciado: seqüência e pilha.
10. Sistema, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de osdados de continuação incluírem um contador de programa, o dito contador de programa i-dentificando um manuseador de exceção programado a seguir para execução.
11. Sistema, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de a área de memória armazena os dados de continuação incluindo um estado de aplicativo e um estado de tempo de execução.
12. Sistema, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de o estado de aplicativo incluir uma lista de objetos de atividade.
13. Sistema, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de o estado de tempo de execução incluir um contador de programa.
14. Sistema, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de oprocessador ser adicionalmente configurado para executar instruções executáveis por computador para:acessar os dados de continuação armazenados na área de memória;carregar os dados de continuação acessados em uma memória de execução associada com o meta-tempo de execução; eretomar a execução do fragmento de programa com base nos dados de continuação carregados.
15. Sistema, de acordo com a reivindicação 14, CARACTERIZADO pelo fato de o dito carregamento e a dita retomada corresponderem a um ou mais dos seguintes: reativação e reinicio.
16. Sistema, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de compreender adicionalmente meios para o fornecimento de meta-tempo de execução e meios para a captura de uma continuação associada com o fragmento de programa.
17. Sistema, de acordo com a reivindicação 7, CARACTERIZADO pelo fato decompreender adicionalmente um automaton recebido de um usuário, onde o motor meta-tempo de execução executa o fragmento de programa com base no automaton recebido.
18. Sistema, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de o automaton compreender uma ou mais das condições de transição definindo a transição da atividade através do conjunto de estados, compreendendo adicionalmente um primeiro automaton associado com uma primeira atividade e um segundo automaton associado com uma segunda atividade, onde uma condição de transição do primeiro automaton da primeira atividade depende de um estado atual do segundo automaton da segunda atividade.
19. Uma ou mais mídias legíveis por computador possuindo módulos executáveis por computador para modelagem de passivação de fluxo de trabalho, CARACTERIZADO pelo fato de que os ditos módulos compreendem:um módulo automata (212) para definir um automaton (500) para associação com uma atividade (606) em um fluxo de trabalho, o dito automaton definido (500) possuindo umconjunto de estados associados com o mesmo e um ou mais métodos correspondendo a cada um dos estados;um módulo de máquina de execução (214) para executar um fragmento de programa incluindo a atividade 606 com base no automaton (500) definido pelo módulo automata (212); eum módulo de continuação (216) para capturar, em resposta ao recebimento de um sinal de suspensão direcionado ao fragmento de programa sendo executado pelo módulo de máquina de execução (214), dados de continuação (210) do fragmento de programa e liberação de um recurso associado com o fragmento de programa, os ditos dados de continuação (210) representando uma continuação do fragmento de programa.
20. Mídia legível por computador, de acordo com a reivindicação 19, CARACTERIZADA pelo fato de compreender adicionalmente um módulo de reinicialização para restaurar, em resposta ao recebimento de um sinal de reinicialização direcionado ao fragmento de programa sendo executado pelo módulo de máquina de execução, os dados de continuação para o fragmento de programa capturado pelo módulo de continuação, onde o módulo de maquina de execução retoma a execução do fragmento de programa com base nos dados de continuação restaurados.
BRPI0709242-3A 2006-03-30 2007-02-21 modelo de execução abstrato para um meta-tempo de execução com base em continuação BRPI0709242A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/393,345 US20070239505A1 (en) 2006-03-30 2006-03-30 Abstract execution model for a continuation-based meta-runtime
US11/393.345 2006-03-30
PCT/US2007/004448 WO2007117360A1 (en) 2006-03-30 2007-02-21 Abstract execution model for a continuation-based meta-runtime

Publications (1)

Publication Number Publication Date
BRPI0709242A2 true BRPI0709242A2 (pt) 2011-07-12

Family

ID=38576580

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0709242-3A BRPI0709242A2 (pt) 2006-03-30 2007-02-21 modelo de execução abstrato para um meta-tempo de execução com base em continuação

Country Status (11)

Country Link
US (1) US20070239505A1 (pt)
EP (1) EP2013846A1 (pt)
JP (1) JP2009532754A (pt)
KR (1) KR20080106561A (pt)
CN (1) CN101416214A (pt)
AU (1) AU2007235610A1 (pt)
BR (1) BRPI0709242A2 (pt)
CA (1) CA2643329A1 (pt)
MX (1) MX2008011914A (pt)
RU (1) RU2008138698A (pt)
WO (1) WO2007117360A1 (pt)

Families Citing this family (30)

* 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
ATE484499T1 (de) 2005-08-30 2010-10-15 Boehringer Ingelheim Int Glucopyranosyl-substituierte benzyl-derivate, medikamente mit solchen verbindungen, ihre verwendung und herstellungsverfahren dafür
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
US8078555B2 (en) * 2007-12-14 2011-12-13 Microsoft Corporation Decoupling static program data and execution data
US8181155B2 (en) * 2008-02-29 2012-05-15 Microsoft Corporation Unified expression and location framework
US8161492B2 (en) * 2008-04-15 2012-04-17 Microsoft Corporation Continuation based runtimes in transactions
US10417051B2 (en) * 2008-05-23 2019-09-17 International Business Machines Corporation Synchronizing shared resources in an order processing environment using a synchronization component
US8255451B2 (en) * 2008-09-17 2012-08-28 Microsoft Corporation Technologies for detecting erroneous resumptions in a continuation based runtime
US8336035B2 (en) * 2008-12-16 2012-12-18 Microsoft Corporation Customizable dynamic language expression interpreter
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
US8683432B2 (en) * 2009-03-20 2014-03-25 Microsoft Corporation Providing execution context in continuation based runtimes
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
US8863001B2 (en) 2010-06-11 2014-10-14 Microsoft Corporation Web application home button
US9164671B2 (en) * 2010-06-11 2015-10-20 Microsoft Technology Licensing, Llc Web application navigation domains
US8671384B2 (en) 2010-06-11 2014-03-11 Microsoft Corporation Web application pinning including task bar pinning
US8793650B2 (en) 2010-06-11 2014-07-29 Microsoft Corporation Dynamic web application notifications including task bar overlays
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
US9292342B2 (en) 2012-12-26 2016-03-22 Microsoft Technology Licensing, Llc Schedule based execution with extensible continuation based actions
US9317323B2 (en) 2012-12-26 2016-04-19 Microsoft Technology Licensing, Llc Dynamic execution log in a distributed system
WO2014142949A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Identification and management of unsafe optimizations
CN105247548B (zh) * 2013-05-21 2019-09-10 思杰系统有限公司 基于应用的协作工作空间系统中的用户定义工作流
US9304888B2 (en) 2013-06-25 2016-04-05 Microsoft Technology Licensing, Llc Consistent modeling and execution of time constructs in business processes
CN106611297A (zh) * 2015-10-21 2017-05-03 中兴通讯股份有限公司 工作流异常处理方法及系统
CN106250227A (zh) * 2016-08-02 2016-12-21 合肥奇也信息科技有限公司 一种寻求计算机程序执行定义目标的方法
CN113692577A (zh) * 2019-03-27 2021-11-23 亚马逊技术有限公司 延续工作流
US11467858B2 (en) * 2019-03-27 2022-10-11 Amazon Technologies, Inc. Techniques for performing continuation workflows
US11366681B2 (en) 2019-03-27 2022-06-21 Amazon Technologies, Inc. Chaining virtual machines

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301320A (en) * 1991-06-28 1994-04-05 Digital Equipment Corporation Workflow management and control system
US5390282A (en) * 1992-06-16 1995-02-14 John R. Koza Process for problem solving using spontaneously emergent self-replicating and self-improving entities
EP0686282A4 (en) * 1993-02-08 1997-07-02 Action Tech Inc BUSINESS PROCESS MANAGEMENT PROCESS AND APPARATUS
US5734837A (en) * 1994-01-14 1998-03-31 Action Technologies, Inc. Method and apparatus for building business process applications in terms of its workflows
US5485620A (en) * 1994-02-25 1996-01-16 Automation System And Products, Inc. Integrated control system for industrial automation applications
EP0697652A1 (en) * 1994-08-16 1996-02-21 International Business Machines Corporation Method for re-executing a process on a computer system for fault correction
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
JP2001501752A (ja) * 1995-12-22 2001-02-06 ゼロックス コーポレイション システム状態とユーザー状態を使用して処理を支援する方法
US5960200A (en) * 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US6427063B1 (en) * 1997-05-22 2002-07-30 Finali Corporation Agent based instruction system and method
DE19712946A1 (de) * 1996-05-30 1997-12-04 Ibm Methode zum Generieren einer Implementierung wiederverwendbarer Teile von Containern eines Workflow-Prozessmodells
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
US6028999A (en) * 1996-11-04 2000-02-22 International Business Machines Corporation System and method for non-sequential program statement execution with incomplete runtime information
EP0854431A3 (en) * 1997-01-20 2001-03-07 International Business Machines Corporation Events as activities in process models of workflow management systems
US6158044A (en) * 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
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
US6961954B1 (en) * 1997-10-27 2005-11-01 The Mitre Corporation Automated segmentation, information extraction, summarization, and presentation of broadcast news
US6115646A (en) * 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6081665A (en) * 1997-12-19 2000-06-27 Newmonics Inc. Method for efficient soft real-time execution of portable byte code computer programs
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
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
US6728947B1 (en) * 1998-06-05 2004-04-27 R. R. Donnelley & Sons Company Workflow distributing apparatus and method
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
US6587969B1 (en) * 1998-06-22 2003-07-01 Mercury Interactive Corporation Software system and methods for testing the functionality of a transactional server
JP2003528358A (ja) * 1998-08-24 2003-09-24 富士通株式会社 ワークフローシステムおよび方法
US6606740B1 (en) * 1998-10-05 2003-08-12 American Management Systems, Inc. Development framework for case and workflow systems
US6519595B1 (en) * 1999-03-02 2003-02-11 Nms Communications, Inc. Admission control, queue management, and shaping/scheduling for flows
US6789054B1 (en) * 1999-04-25 2004-09-07 Mahmoud A. Makhlouf Geometric display tools and methods for the visual specification, design automation, and control of adaptive real systems
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
US7020697B1 (en) * 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
US7412462B2 (en) * 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
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
US6971096B1 (en) * 2000-05-19 2005-11-29 Sun Microsystems, Inc. Transaction data structure for process communications among network-distributed applications
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
WO2002029682A1 (en) * 2000-10-02 2002-04-11 International Projects Consultancy Services, Inc. Object-based workflow system and method
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
US7174534B2 (en) * 2001-01-22 2007-02-06 Symbol Technologies, Inc. Efficient system and method for running and analyzing multi-channel, multi-modal applications
US7240324B2 (en) * 2001-02-28 2007-07-03 Hewlett-Packard Development Company, L.P. Event-based scheduling method and system for workflow activities
US20020147606A1 (en) * 2001-03-14 2002-10-10 Norbert Hoffmann Application development method
US20030004746A1 (en) * 2001-04-24 2003-01-02 Ali Kheirolomoom Scenario based creation and device agnostic deployment of discrete and networked business services using process-centric assembly and visual configuration of web service components
CA2347647A1 (en) * 2001-05-15 2002-11-15 Ibm Canada Limited-Ibm Canada Limitee Storing and restoring snapshots of a computer process
US7089561B2 (en) * 2001-06-01 2006-08-08 Microsoft Corporation Methods and systems for creating and communicating with computer processes
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
US20030055668A1 (en) * 2001-08-08 2003-03-20 Amitabh Saran Workflow engine for automating business processes in scalable multiprocessor computer platforms
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
US7369984B2 (en) * 2002-02-01 2008-05-06 John Fairweather Platform-independent real-time interface translation by token mapping without modification of application code
US7516447B2 (en) * 2002-02-22 2009-04-07 Bea Systems, Inc. Methods and apparatus for building, customizing and using software abstractions of external entities
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
US7251689B2 (en) * 2002-03-27 2007-07-31 International Business Machines Corporation Managing storage resources in decentralized networks
US20030195762A1 (en) * 2002-04-12 2003-10-16 David Gleason Automated workflow
EP1502218A4 (en) * 2002-04-15 2005-08-17 Invensys Sys Inc METHOD AND DEVICES FOR A PROCESS-, FACTORY-, ENVIRONMENT-, ENVIRONMENT- AND COMPUTER AIDED MANUFACTURING-BASED OR OTHERWISE CONTROL SYSTEM WITH REAL-TIME DATA DISTRIBUTION
US7117484B2 (en) * 2002-04-16 2006-10-03 International Business Machines Corporation Recursive use of model based test generation for middleware validation
US7197553B2 (en) * 2002-04-19 2007-03-27 Nortel Networks Limited Network system having a virtual-service-module
US6688593B1 (en) * 2002-07-31 2004-02-10 Pitney Bowes Inc. Envelope transport turn module and ramp for an output portion of an inserter system
US20040078105A1 (en) * 2002-09-03 2004-04-22 Charles Moon System and method for workflow process management
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
US7062537B2 (en) * 2002-11-25 2006-06-13 Microsoft Corporation Workflow services architecture
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
CA2420479A1 (en) * 2003-02-13 2004-08-13 Ibm Canada Limited - Ibm Canada Limitee Flow debugging software and method
JP5154798B2 (ja) * 2003-05-07 2013-02-27 エスアーペー アーゲー 構造化ワークフローシステム及びコンピュータプログラム
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
CA2442796A1 (en) * 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Binding a workflow engine to a data model
EP1680740A2 (en) * 2003-10-02 2006-07-19 Research In Motion Limited System and method for extending capabilities and execution efficiency of script based applications
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
US7308561B2 (en) * 2003-12-12 2007-12-11 Alcatel Lucent Fast, scalable pattern-matching engine
US7519960B2 (en) * 2003-12-19 2009-04-14 International Business Machines Corporation Method and system for debugging business process flow
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
US20060064335A1 (en) * 2004-08-17 2006-03-23 International Business Machines Corporation Method, system, and storage medium for performing business process modeling
US20060159077A1 (en) * 2004-08-20 2006-07-20 Vanecek George Jr Service-oriented middleware for managing interoperability of heterogeneous elements of integrated systems
US20060069605A1 (en) * 2004-09-29 2006-03-30 Microsoft Corporation Workflow association in a collaborative application
US7464366B2 (en) * 2004-10-01 2008-12-09 Microsoft Corporation Programming interface for a componentized and extensible workflow model
US20060074704A1 (en) * 2004-10-01 2006-04-06 Microsoft Corporation Framework to model cross-cutting behavioral concerns in the workflow domain
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
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
US7493594B2 (en) * 2005-03-14 2009-02-17 Research In Motion System and method for designing component based applications
US7747958B2 (en) * 2005-04-18 2010-06-29 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

Also Published As

Publication number Publication date
RU2008138698A (ru) 2010-04-10
AU2007235610A1 (en) 2007-10-18
CA2643329A1 (en) 2007-10-18
MX2008011914A (es) 2008-09-29
JP2009532754A (ja) 2009-09-10
CN101416214A (zh) 2009-04-22
KR20080106561A (ko) 2008-12-08
EP2013846A1 (en) 2009-01-14
WO2007117360A1 (en) 2007-10-18
US20070239505A1 (en) 2007-10-11

Similar Documents

Publication Publication Date Title
BRPI0709242A2 (pt) modelo de execução abstrato para um meta-tempo de execução com base em continuação
JP5140067B2 (ja) ワークフローにおいて継続をモデル化するフレームワーク
JP5297370B2 (ja) プロセス中心型プログラムにおける非同期フォールト処理
US8024405B2 (en) Declarative model for concurrency-control across lightweight threads
BRPI0709182A2 (pt) estrutura para modelagem de cancelamento para programas centralizados em processo
Margaria et al. Leveraging Applications of Formal Methods, Verification and Validation. Specialized Techniques and Applications: 6th International Symposium, ISoLA 2014, Imperial, Corfu, Greece, October 8-11, 2014, Proceedings, Part II
Reenskaug A DCI execution model

Legal Events

Date Code Title Description
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B11Y Definitive dismissal - extension of time limit for request of examination expired [chapter 11.1.1 patent gazette]