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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0633—Workflow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
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.
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)
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)
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 |
-
2006
- 2006-03-30 US US11/393,345 patent/US20070239505A1/en not_active Abandoned
-
2007
- 2007-02-21 RU RU2008138698/09A patent/RU2008138698A/ru not_active Application Discontinuation
- 2007-02-21 CN CNA2007800124322A patent/CN101416214A/zh active Pending
- 2007-02-21 BR BRPI0709242-3A patent/BRPI0709242A2/pt not_active Application Discontinuation
- 2007-02-21 JP JP2009502784A patent/JP2009532754A/ja not_active Withdrawn
- 2007-02-21 KR KR1020087023830A patent/KR20080106561A/ko not_active Application Discontinuation
- 2007-02-21 EP EP07751222A patent/EP2013846A1/en not_active Withdrawn
- 2007-02-21 CA CA002643329A patent/CA2643329A1/en not_active Abandoned
- 2007-02-21 AU AU2007235610A patent/AU2007235610A1/en not_active Abandoned
- 2007-02-21 MX MX2008011914A patent/MX2008011914A/es not_active Application Discontinuation
- 2007-02-21 WO PCT/US2007/004448 patent/WO2007117360A1/en active Application Filing
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] |