BRPI0710036A2 - modelo declarativo para controle e simultáneo através de linhas de execução leves - Google Patents
modelo declarativo para controle e simultáneo através de linhas de execução leves Download PDFInfo
- Publication number
- BRPI0710036A2 BRPI0710036A2 BRPI0710036-1A BRPI0710036A BRPI0710036A2 BR PI0710036 A2 BRPI0710036 A2 BR PI0710036A2 BR PI0710036 A BRPI0710036 A BR PI0710036A BR PI0710036 A2 BRPI0710036 A2 BR PI0710036A2
- Authority
- BR
- Brazil
- Prior art keywords
- work items
- execution
- activity
- sync
- work
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/522—Manager
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
MODELO DECLARATIVO PARA CONTROLE SIMULTáNEO ATRAVéS DE LINHAS DE EXECUçãO LEVES E divulgada a implementação da sincronia entre linhas de execução em um fluxo de trabalho. Uma área de memória armazena uma pluralidade de itens de trabalho em uma fila do agendador. Os itens de trabalho são associados com uma atividade no fluxo de trabalho,e cada item de trabalho é associado com uma linha de execução. Um processador é configurado para atribuir uma rotina de tratamento de sincronia a cada um dos itens de trabalho.A rotina de tratamento de sincronia indica um recurso compartilhado em particular a ser acessado pelos itens de trabalho. Um valor com sinal é computado para cada item de trabalho com base na rotina de tratamento de sincronia atribuida e nos itens de trabalho em uma hierarquia na atividade. Os itens de trabalho são ordenados em uma fila de sincronia combase no valor com sinal associado com cada item de trabalho. O processador executa sequencialmente cada um dos itens de trabalho armazenados na fila de sincronia para tornarserial o acesso ao recurso compartilhado em particular e efetuar uma execução síncrona das linhas de execução associadas com os itens de trabalho.
Description
"MODELO DECLARATIVO PARA CONTROLE SIMULTÂNEO ATRAVÉS DE LI-NHAS DE EXECUÇÃO LEVES"
Antecedentes da invenção
Programas orientados a processo ou centralizados em processo evoluíram parahabilitar o processamento de instruções complexas que modelam interações do mundo realentre agentes autônomos. Sistemas existentes tentam mapear problemas empresariais emfluxos de trabalho de alto nível pela modelagem do problema empresarial. Entretanto, fluxosde trabalho do mundo real variam em uma multiplicidade de dimensões, tais como, (a) com-plexidade de execução e de modelagem, (b) conhecimento da estrutura do fluxo no momen-to do projeto, (c) estaticamente definido ou ad-hoc / dinâmico, (d) facilidade da autoria e daedição do fluxo em vários pontos no seu ciclo de vida e (e) fraca ou forte associação da lógi-ca empresarial com o processo central do fluxo de trabalho. Modelos existentes deixam deconciliar estes fatores.
Adicionalmente, a maior parte dos modelos de fluxo de trabalho existentes é base-ada tanto em abordagens baseadas em linguagem (por exemplo, BPEL4WS, XLANG/S eWSFL) quanto em abordagens baseadas em aplicação. Abordagens baseadas em lingua-gem 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 do fluxo de trabalho para o usuário /programador. As linguagens de fluxo de trabalho portam toda a informação semântica parao conjunto fechado de construções para habilitar o usuário a construir um modelo de fluxode trabalho. Entretanto, as linguagens não são extensíveis pelos desenvolvedores e repre-sentam um conjunto fechado de elementos básicos que constitui o modelo do fluxo de traba-lho. As linguagens são amarradas ao compilador da linguagem embarcado pelo revendedordo sistema de fluxo de trabalho. Somente o revendedor do produto do sistema de fluxo detrabalho pode estender o modelo pela extensão da linguagem com um conjunto inédito deconstruções em uma versão futura do produto. Freqüentemente, isto exige atualização docompilador associado com a linguagem. Além do mais, usualmente, as linguagens não ex-põem ou definem declarativamente funções ou operações que podem ser usadas de formafácil e eficiente por outros programas.
Abordagens com base em aplicação são aplicações que têm capacidades de fluxode trabalho na aplicação para resolver um problema específico de domínio. Estas aplicaçõesnão são verdadeiramente extensíveis nem têm um modelo programável.
Além do mais, com as abordagens existentes, as questões de complexidade, deconhecimento prévio, de fluxos de trabalho dinâmicos, de facilidade de autoria e de força deassociações com a lógica empresarial e com fluxos de trabalho centrais não são adequa-damente abordadas. Não há estruturas projetistas de fluxo de trabalho extensíveis, customi-záveis e ré-hospedáveis disponíveis para construir projetistas de fluxo de trabalho visualpara modelar diferentes classes de fluxos de trabalho. Sistemas existentes carecem de umaexperiência de projeto de fluxo de trabalho no estilo rápido desenvolvimento de aplicação(RAD), que permite que usuários projetem graficamente o processo do fluxo de trabalho eassociem a lógica empresarial em uma linguagem de programação da escolha do desenvol-vedor.
Também, os processos de fluxo de trabalho lidam com preocupações de atalho or-togonal e confuso que abrangem múltiplas etapas de um modelo de processo de fluxo detrabalho. Por exemplo, embora partes dos processos de fluxo de trabalho sejam projetadaspara participar de transações de longo prazo, outras partes do mesmo processo são proje-tadas para execução simultânea ou para acessar um recurso compartilhado. Em função dasdeficiências de projeto, sistemas existentes deixam de fornecer intercalação das linhas deexecução que habilitam usuários a projetar execução síncrona ou intercalada das ativida-des. Ainda outras partes do mesmo processo de fluxo de trabalho exigem rastreamento,embora outras partes tratem de exceções em nível empresarial ou da aplicação. Há umanecessidade de aplicar certos comportamentos a uma ou mais partes de um processo dofluxo de trabalho.
Algumas abordagens da modelagem do fluxo de trabalho são impraticáveis, já queelas exigem uma completa descrição com base no fluxo de todo o processo empresarial,incluindo todas as exceções e intervenções humanas. Algumas destas abordagens forne-cem funcionalidade adicional à medida que as exceções surgem, embora outras abordagensempreguem exclusivamente uma abordagem baseada em restrição em vez de uma aborda-gem baseada no fluxo para modelar um processo empresarial. Sistemas existentes imple-mentam tanto a abordagem baseada no fluxo quanto a abordagem baseada em restrição.Tais sistemas são muito inflexíveis para modelar muitas situações empresariais comuns.Estes sistemas também carecem da capacidade de tratar de forma assíncrona exceções oucancelamentos.
Sumário da invenção
Modalidades da invenção executam itens de trabalho de forma síncrona acessandoum recurso compartilhado que usa um identificador de sincronia para uma linha de execu-ção. Com um controle simultâneo eficiente através das linhas de execução leves, aspectosda invenção usam o identificador de sincronia para identificar o recurso compartilhado demaneira tal que a linha de execução para o item de trabalho seja habilitada a acessar o re-curso compartilhado sem interferir em acessos por outras linhas de execução associadascom outros itens de trabalho.
Este Sumário é fornecido para introduzir uma seleção de conceitos de uma formasimplificada que é adicionalmente descrita na seguinte Descrição Detalhada. Não pretende-se que este Sumário identifique recursos chaves ou recursos essenciais do assunto emquestão reivindicado, nem pretende-se que seja usado como um auxílio na determinação doescopo do assunto em questão reivindicado.
Outros recursos ficarão, em parte, aparentes e serão, em parte, salientados a seguir.
Descrição resumida dos desenhos
A figura 1 é um diagrama de blocos que ilustra um paradigma de programação existente.
A figura 2 é um diagrama de blocos exemplar que ilustra uma virtualização de umaestrutura de projeto de fluxo de trabalho de acordo com uma modalidade da invenção.
A figura 3 é um diagrama exemplar que ilustra um fluxo de trabalho exemplar deacordo com uma modalidade da invenção.
A figura 4 é um diagrama que ilustra um sistema para processar atividades do fluxode trabalho de acordo com uma modalidade da invenção.
A figura 5 é um diagrama que ilustra uma estrutura hierárquica de uma atividade dofluxo de trabalho de acordo com uma modalidade da invenção.
A figura 6 é um diagrama que ilustra um autômato de estado exemplar que descre-ve estados de processamento dos itens de trabalho associados com uma atividade de acor-do com uma modalidade da invenção.
A figura 7A é um diagrama de blocos que ilustra uma execução síncrona dos itensde trabalho em uma atividade em um fluxo de trabalho de acordo com uma modalidade dainvenção.
A figura 7B é um diagrama que ilustra a classificação de uma fila de sincronia deacordo com uma modalidade da invenção.
A figura 8 é um fluxograma que ilustra um método para executar de forma síncronaatividades que acessam um recurso compartilhado em particular de acordo com uma moda-lidade da invenção.
A figura 9 é um diagrama de blocos que ilustra uma mídia legível por computadorexemplar na qual aspectos da invenção podem ser armazenados.
O Apêndice A ilustra um conjunto de operações SynchronizationScope que mostrauma implementação exemplar da sincronia ou intercalação do estado compartilhado atravésdas linhas de execução de uma maneira declarativa.
O Apêndice B ilustra um conjunto exemplar de etapas de sincronia da execução dalinha de execução de acordo com a hierarquia da atividade.
Caracteres de referência correspondentes indicam partes correspondentes por to-dos os desenhos.
Descrição detalhada
Primeiro, em relação à figura 1, um diagrama de blocos ilustra um paradigma deprogramação existente para projetar programas para atividades centralizadas em processo,tal como um fluxo de trabalho. Por exemplo, o diagrama mostra um modelo de virtualizaçãode três níveis do paradigma de programa existente com um nível de um ambiente de execu-ção gerenciado que é o nível mais alto e uma unidade de processamento que é o nível maisbaixo. Neste sistema de projeto de programação, mesmo no nível do ambiente de execuçãogerenciada, programas, especialmente programas centralizados em processo que tratamprocessos do fluxo de trabalho, carecem de capacidade e de eficiência para conciliar intera-ções complexas entre processos em um fluxo de trabalho.
Versados na técnica sabem que certas restrições estão associadas com softwareou programas de aplicação de projeto. Neste exemplo, na gravação de um programa desoftware do sistema operacional 104, os códigos ou rotinas de programação dependem dotipo ou da configuração das unidades de processamento 102, sendo específico, ao tipo dearquitetura computacional (por exemplo, compatível com IBM®, computadores APPLE® oucom outros sistemas), ou de outras restrições. Além do mais, tipicamente, linguagens deprogramação precisam identificar e utilizar precisamente estrutura de dados, tais como pi-lhas, árvore binária, base de linha de execução ou outras estruturas específicas de hardwa-re, para o sistema operacional 104 funcionar apropriadamente.
Ao lidar com processos de fluxo de trabalho complexos, aplicações existentes usamum conceito de um ambiente de execução gerenciado 106 (por exemplo, um ambiente detempo de execução em que programas podem compartilhar funções ou classes orientadas aobjetos comuns) nos quais programas escritos em uma linguagem de programação podemchamar funções em outros programas escritos em uma linguagem de programação diferen-te. Em um ambiente de execução como este, estes programas em diferentes linguagens deprogramação são compilados em uma linguagem intermediária de maneira tal que o ambi-ente de execução gerenciado 106 possa expor parâmetros, argumentos ou esquemas oufunções a diferentes programas, para que os programas possam interagir uns com os ou-tros.
Embora este ambiente de execução 106 crie um ambiente de comunicação comumentre programas, o ambiente de execução 106 inclui várias exigências rígidas que podemnão ser adequadas para tratar a complexidade e a capacidade dos programas centralizadosem processo. Por exemplo, o ambiente de execução 106 exige que programas sejam con-firmados em um formato de arquivo específico. O ambiente de execução 106 também exigeque funções ou operações nos programas usem um conjunto fixo de funções ou uma classede funções definidos pelo ambiente de execução 106.
Modalidades da invenção construídas em uma fundação ou estrutura extensível202 da figura 2 superam as deficiências do modelo de programação existente. Pela permis-são de que programas escritos em qualquer linguagem de programação sejam compostosem qualquer formato de arquivo, aspectos da invenção habilitam desenvolvedores de pro-grama a projetar programas com funções específicas sem comprometer suas funcionalida-des e especificações. Pela definição das atividades, tais como tarefas ou processos do fluxode trabalho, como a classe base a ser executada na estrutura do fluxo de trabalho, desen-volvedores podem construir de forma fácil e eficiente códigos de operação específicos dedomínio (por exemplo, ambientes de execução específicos, tais como programas na indús-tria da saúde, na indústria financeira ou congêneres) (doravante "op-code") sem se unir aorígido, embutido em código, inflexível e fixo conjunto de funções ou de classes de atividadesno ambiente de execução existente. Além do mais, a fundação do fluxo de trabalho que in-corpora aspectos da invenção é um tempo de execução com base em continuação dispostoem camadas no topo de todas as estruturas existentes (por exemplo, tanto um ambiente deexecução gerenciado, um ambiente de sistema operacional quanto um nível de unidade deprocessamento de hardware).
Aspectos da invenção liberam a restrição de definir atividades em um formato dearquivo em particular pela habilitação de projetos de fluxo de trabalho em qualquer maneiraou representação (por exemplo, um fluxograma, um diagrama, uma descrição numerada oucongêneres), contanto que as atividades no fluxo de trabalho possam ser construídas a par-tir da representação dos projetos do fluxo de trabalho.
A figura 3 ilustra uma vista simplista de um fluxo de trabalho 300 de acordo comuma modalidade da invenção. Por exemplo, o fluxo de trabalho 300 pode ser um fluxo detrabalho para processar um pedido de compra, e este fluxo de trabalho 300 de pedido decompra pode incluir processos ou atividades tais como receber um pedido de compra,transmitir confirmação a um cliente, aprovar o pedido de compra por um gerente ou congê-neres. Adicionalmente, estas atividades podem ser seqüenciadas de maneira tal que algu-mas possam ser realizadas ao mesmo tempo em que outras, embora algumas outras pos-sam ser realizadas somente mediante a conclusão das atividades.
O fluxo de trabalho 300 pode começar a partir de um ponto de início 302. Por e-xemplo, o ponto de início 302 para o fluxo de trabalho do pedido de compra pode ser rece-ber uma ordem de um cliente. O fluxo de trabalho 300 também pode incluir uma declaraçãocondicional 304 (tais como uma "declaração SE" ou uma "declaração ENQUANTO"), e elepode ser subdividido em declarações condicionais adicionais 306 e 308. O fluxo de trabalho300 também pode incluir uma estrutura paralela 310, que inclui adicionalmente uma ou maisatividades 312. Por exemplo, a estrutura paralela 310 pode indicar que atividades, tais comoverificar o inventário e atualizar verificação de transportador disponível, podem ser proces-sadas em paralelo. No exemplo mostrado, atividades, tais como "Transmitir Correio Eletrôni-co" e "Receber Aprovação", podem ser processadas em paralelo. Uma caixa "deixar ativida-des aqui" 316 indica que um usuário pode adicionar ou complementar adicionalmente maisatividades no fluxo de trabalho 300. Para completar o fluxo de trabalho 300, os processos ouatividades concluirão em uma etapa ou ponto de conclusão 314.
Em uma modalidade, as atividades podem ser hierarquicamente arranjadas emuma estrutura de árvore (veja figura 5) 500. Por exemplo, um método da atividade está emum nó raiz 502 com dois nós filhos ou folhas 504 e 506. Os métodos da atividade nos nósfilhos 504 e 506 (por exemplo, work item_1 e work item_2, respectivamente) podem ser e-xecutados de acordo com a estrutura hierárquica. Além do mais, os nós filhos 504 e 506também podem incluir outros nós filhos com respectivos itens de trabalho a ser executados.
Em uma outra modalidade, atividades incluem um ou mais dos tipos seguintes: umaatividade simples, atividade de recipiente e atividade raiz. Nesta modalidade, há uma ativi-dade raiz no modelo, e nenhuma ou qualquer quantidade de atividades simples ou de ativi-dades de recipiente no interior da atividade raiz. Uma atividade de recipiente pode incluiratividades simples ou de recipiente. Todo o processo de fluxo de trabalho pode ser usadocomo uma atividade para construir processos de fluxo de trabalho de ordem superior. Adi-cionalmente, uma atividade pode ser interrompível ou não interrompível. Uma atividadecomposta não interrompível não inclui atividades interrompíveis. Uma atividade não inter-rompível carece de serviços que podem fazer com que a atividade seja bloqueada. Além domais, atividades podem ser atividades primitivas ou agrupadas em uma atividade composta.Uma atividade primitiva ou básica não tem subestrutura (por exemplo, atividades de filho) e,assim, é um nó folha em uma estrutura de árvore. Uma atividade composta contém subes-trutura (por exemplo, é o pai de uma ou mais atividades de filho).
Além do mais, na execução de atividades e dos itens de trabalho incluídos nas ati-vidades, a estrutura de fluxo de trabalho define um contexto ou ambiente de execução que éo escopo ou o limite para cada um dos itens de trabalho. Este escopo ou limite inclui e ex-põe informação (por exemplo, na forma de dados, metadados ou congêneres), tais como osdados ou recursos compartilhados a ser acessados pelos itens de trabalho, propriedadesassociadas, identificadores, restrições e interações entre agentes autônomos. Estes esco-pos podem ser estruturados hierarquicamente. Também, cada atividade pode ser configura-da por um código de usuário em qualquer linguagem de programação que suporta a estrutu-ra fundamental gerenciada. Por exemplo, o código de usuário pode representar lógica em-presarial ou de aplicação ou regras escritas em um domínio ou ambiente de execução espe-cífico. Cada atividade pode suportar ganchos de pré-interceptação e ganchos de pós-interceptação na execução no código do usuário. Cada atividade tem semântica e compor-tamento de execução em tempo de execução associados (por exemplo, gerenciamento deestado, transações, tratamento de evento e tratamento de exceção). Atividades podemcompartilhar estado ou recursos com outras atividades.
A figura 4 é um diagrama que ilustra um sistema 400 para processar atividades defluxo de trabalho de acordo com uma modalidade da invenção. O sistema 400 inclui um pro-cessador 402 que pode ser uma unidade de processamento ou uma coleção de unidades deprocessamento. O sistema 400 também inclui uma área de memória 404 para armazenardados acessíveis pelo processador 402. Na modalidade, o sistema 400 pode ser um compu-tador com um ou mais processadores ou unidades de processamento (por exemplo, proces-sador 402) e uma memória de sistema (por exemplo, área de memória 404) e com pelo me-nos um outro componente conhecido pelos versados na técnica que acopla vários compo-nentes de sistema, que inclui a memória do sistema, no processador 402.
Em um exemplo, a assinante de memória 404 pode incluir mídia legível por compu-tador, seja mídia volátil, não volátil, removível ou não removível, implementada em qualquermétodo ou tecnologia para armazenamento de informação, tais como instruções legíveis porcomputador, estruturas de dados, módulos de programa e outros dados. Por exemplo, mídiade armazenamento no computador inclui RAM, ROM, EEPROM, memória flash ou outratecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamentoem disco ótico, cassetes magnéticos, fita magnética, armazenamento em disco magnéticoou outro dispositivo de armazenamento magnético, ou qualquer outra mídia que pode serusada para armazenar a informação desejada e que pode ser acessada pelo sistema 400. Amemória 404 também pode incluir mídia de comunicação que incorpora instruções legíveispor computador, estruturas de dados, módulos de programa ou outros dados em um sinal dedados modulado, tais como uma onda portadora ou outro mecanismo de transporte, e incluiqualquer mídia de distribuição de informação. Versados na técnica estão familiarizados como sinal de dados modulado, que tem uma ou mais de suas características ajustadas ou mo-dificadas de uma maneira tal para codificar informação no sinal. Mídia com fios, tais comorede com fios ou conexão direta com fios, e mídia sem fios, tais como acústica, RF, infra-vermelho, e outras mídias sem fios, são exemplos de mídia de comunicação. Combinaçõesde qualquer um dos expostos também podem ser incluídas no escopo da mídia legível porcomputador.
No exemplo, a área de memória 404 armazena uma pluralidade de atividades 406para processamento em um fluxo de trabalho (por exemplo, o fluxo de trabalho 300). Cadauma da pluralidade de atividades 406 inclui um ou mais itens de trabalho, e os itens de tra-balho podem ser organizados em uma estrutura hierárquica, tal como uma estrutura de ár-vore (veja figura 5). No processamento da pluralidade de atividades 406, o processador 402acessa ou executa um agendador 408, que é configurado para ajustar um conjunto organi-zado de atividades.
Por exemplo, o processador 408 acessa os itens de trabalho na pluralidade de ati-vidades 406 por meio de um componente ou de um conjunto de instruções legíveis porcomputador, tal como o agendador 408, para enfileirar os itens de trabalho 422 em uma fila410. Um expedidor 412, acessível pelo processador 402, expede os itens de trabalho 422para execução. Por exemplo, um item de trabalho 422-1 pode incluir um método de ativida-de 424, rotina ou uma coleção de códigos para realizar uma função de "solicitar entrada deum usuário". Um ou mais outros métodos de atividade, rotinas ou códigos podem ser incluí-dos em cada um dos itens de trabalho 422 sem fugir do escopo da invenção.
Uma vez que os itens de trabalho 422 são expedidos pelo expedidor 412, o proces-sador 402 executa cada um dos métodos 424 nos itens de trabalho 422 em 414. No exem-plo do item de trabalho 422-1, o processador 402 pode cuidar para que um usuário, pormeio de uma interface de usuário (Ul), insira a informação ou dados solicitados. Em umaoutra modalidade, o processador 402 pode conectar ou acessar uma fonte de dados externapara solicitar entrada do usuário. Mediante a conclusão do método da atividade 424, o pro-cessador 402 conclui a execução dos itens de trabalho 422 em 416. Em uma modalidade, oprocessador 402 passiva o estado de execução dos itens de trabalho em 418 em um arma-zenamento de dados 420.
Em uma outra modalidade, o processador 402 executa os itens de trabalho 422 deacordo com um autômato de estado, tal como o autômato mostrado na figura 6, que é umdiagrama que ilustra um autômato de estado exemplar 600 que descreve os estados de pro-cessamento dos itens de trabalho associados com uma atividade de acordo com uma moda-lidade da invenção. Em um exemplo, o autômato de estado 600 pode incluir um estado inici-alizado, um estado de execução e um estado encerrado (da forma mostrada na figura 4).Em uma outra modalidade, o autômato de estado 600 inclui um estado inicializado 602, umestado de execução 604, um estado de cancelamento 606, um estado defeituoso 608, umestado de compensação 610 e um estado encerrado 612.
Por exemplo, o autômato de estado 600 descreve um fluxo de processo de execu-ção dos itens de trabalho (por exemplo, itens de trabalho 422) em uma atividade de fluxo detrabalho. O item de trabalho 422-1, da forma ilustrada na figura 4, é inicializado primeiroquando ele está enfileirado na fila 410. A seguir, o item de trabalho 422-1 é retirado da filaaté o expedidor 412 antes de ser executado no estado de execução (por exemplo, estado deexecução 604, na figura 6). Dependendo dos parâmetros ou condições durante a execuçãodo item de trabalho 422-1, o item de trabalho 422-1 pode prosseguir até o estado de cance-lamento 606 do estado defeituoso 608. Em uma modalidade, o item de trabalho 422-1 podeprosseguir do estado de cancelamento 606 até o estado defeituoso 608. Em uma modalida-de alternativa, o estado de compensação 610 descreve um conjunto de operações ou fun-ções a ser realizadas quando o defeito ou exceção tiver ocorrido. Por exemplo, suponha queuma exceção ocorra durante a execução do item de trabalho (por exemplo, item de trabalho422-1), tal como a falta de um parâmetro para uma função. O sistema 400 transiciona o itemde trabalho 422-1 para o estado defeituoso 608. Fazendo isto, o sistema 400 também reali-za a operação da coleta de lixo (por exemplo, remoção da parte previamente executada dasoperações do cache ou da memória, reinicio dos valores de parâmetro, ou congêneres) noestado de compensação 610 antes de transicionar o item de trabalho 422-1 para o estadoencerrado 612.
Em uma modalidade, programas projetados de acordo com a estrutura de fluxo detrabalho que incorpora aspectos da invenção podem ser visitados por qualquer número delinhas de execução dos níveis inferiores (por exemplo, um ambiente de execução gerencia-do, tais como um tempo de execução em linguagem comum (CLR) ou nível OS). Em umaoutra modalidade, um agendador (por exemplo, agendador 408) pode usar uma linha deexecução CLR dedicada para uma dada realização ou execução de atividades.
Além do mais, um indicador de execução para uma atividade correspondente a umaatividade pode ser visualizado como uma linha de execução sob a estrutura de fluxo de tra-balho (WF) que incorpora aspectos da invenção. Como tal, linhas de execução WF interca-lam em pontos de espera ou mediante agendamento explícito fora de ordem de uma manei-ra assíncrona pela atividade composta pai.
Agora, em relação à figura 7A, um diagrama de blocos ilustra uma execução sín-crona dos itens de trabalho em uma atividade em um fluxo de trabalho de acordo com umamodalidade da invenção. Em uma modalidade, a execução síncrona dos itens de trabalhohabilita uma execução intercalada de linhas de execução associadas com o fluxo de traba-lho. Em uma modalidade, o fluxo de trabalho define uma SynchronizationScopeActivity parasincronizar o acesso ao estado compartilhado em um exemplo de uma atividade ilustrada noApêndice A. Por exemplo, suponha que duas atividades no fluxo de trabalho desejam aces-sar um diretório em um armazenamento de dados para realizar duas operações diferentes.Neste exemplo, a Activity1 pode desejar acessar arquivos no diretório antes de atualizar in-formação nos arquivos lidos. Ao mesmo tempo, a Activity2 pode desejar modificar o mesmoconjunto de arquivos acessados pela Activityi. Como tal, acessos a recursos compartilhadospela Activityi e pela Activity2 precisam ser sincronizados e gerenciados. O Apêndice A ilustraum conjunto de operações SynchronizationScope que mostra uma implementação exemplarda sincronia ou intercalação do estado compartilhado através das linhas de execução deuma maneira declarativa.
Tipicamente, sistemas existentes realizam tal sincronia contando com travas de a-cesso ou outros métodos fornecidos por um sistema operacional (OS). Tais travas do OS,embora forneçam funcionalidades básicas para alcançar o propósito desejado, são embuti-das no código, inflexíveis e inadequadas para a fundação ou estrutura de fluxo de trabalhoextensível. Além do mais, comumente, linhas de execução no nível do OS incluem chavesde contexto associadas com as travas do OS (por exemplo, endereços de memória grava-dos ou identificados, endereços de memória anteriores, alocações de pilha ou congêneres).Além do mais, as travas do OS não sobrevivem ao processo de passivação em virtude detodos os apontadores, pilhas, etc., associados com as travas do OS deixarem de restauraros valores previamente atribuídos nas travas antes da passivação. Além do mais, emborafluxos de trabalho possam executar em diferentes máquinas durante seu ciclo de vida, tra-vas OS são válidas somente para a máquina em que elas foram criadas.
Modalidades da invenção atribuem indicadores de sincronia 718 para itens de tra-balho na atividade para garantir que linhas de execução acessem de forma síncrona os re-cursos compartilhados sem conflito ou impasse. Aspectos da invenção habilitam desenvol-vedores a projetar linhas de execução virtuais e leves no topo das linhas de execução de umambiente de execução físico ou gerenciado. Em uma outra modalidade, as linhas de execu-ção são leves para não se anexar ou se associar a nenhuma referência física ou de hardwa-re. Como tal, as linhas de execução sobrevivem a ciclos de passivação ou podem ser pre-servadas depois de ser armazenadas em um armazenamento de dados.
Por exemplo, suponha que um programa inclui uma função de chamada de volta e,durante a execução da função de chamada de volta, determina-se que o programa precisaser passivado em um armazenamento de dados. Linguagens de programação e de modeloexistentes exigem que todos os parâmetros associados com o estado de execução do pro-grama sejam salvos como um objeto. O estado do programa pode ser restaurado em umponto posterior no tempo a partir do objeto. Entretanto, usualmente, o objeto inclui linhas deexecução que têm associação embutida no código com contexto de hardware ou ajustes emque o programa é executado. Modalidades da invenção superam esta dependência.
Novamente, em relação à figura 7A, um diagrama ilustra a execução síncrona daslinhas de execução quando mais de uma linha de execução tentar acessar o recurso com-partilhado. Inicialmente, uma coleção 902 dos itens de trabalho em uma atividade é agenda-da para ser processada. Em uma modalidade, os itens de trabalho na atividade podem serorganizados em uma estrutura de árvore, tal como a atividade 502 mostrada na figura 5. Umagendador 704 acessa a coleção 702 dos itens de trabalho e coloca os itens de trabalho emfila em uma fila do agendador 706 para ser processados. Em uma modalidade, a rotina detratamento de sincronia 718 é atribuída para cada uma das atividades na fila do agendador906, indicando que um recurso compartilhado em particular deve ser acessado pela ativida-de. Por exemplo, um item de trabalho 708-2 e um item de trabalho 708-N acessam um re-curso compartilhado (por exemplo, um local de memória). Como tal, ambos os itens de tra-balho 708-2 e 708-N incluem indicadores de sincronia 718. Por outro lado, um item de traba-lho 708-3, que não acessa um recurso compartilhado com outros itens de trabalho, não in-clui uma rotina de tratamento de sincronia 718, e aquele recurso compartilhado em particularque está sendo compartilhado por um ou mais dos itens de trabalho.
Em uma modalidade, a rotina de tratamento de sincronia 718 é uma seqüência decaracteres com sinal parecida com um objeto de exclusão mútua nomeado ("mutex"). Emuma modalidade, um filtro de sincronia 720 é aplicado nos itens de trabalho com a rotina detratamento de sincronia 718 atribuída.
Uma vez que a rotina de tratamento de sincronia 718 é atribuída, um valor com si-nal é computado para cada um dos itens de trabalho com base na rotina de tratamento desincronia 718 atribuída. Nas modalidades em que os itens de trabalho são parte de umaestrutura hierárquica (por exemplo, uma estrutura de árvore) na atividade, o valor com sinalé computado com base na rotina de tratamento de sincronia 718 atribuída e em um local doitem de trabalho na hierarquia da atividade. Em uma modalidade, um componente com sinal(da forma mostrada na figura 9) ou um gerente de trava monitora ou gerencia a rotina detratamento de sincronia 718 e os recursos compartilhados para cada um dos itens de traba-lho na árvore de atividade.
Os itens de trabalho com os valores com sinal computados são ordenados a seguirem uma fila de sincronia 712 com base no valor com sinal computado associado com cadaum dos itens de trabalho. Em uma modalidade, uma função AcquireLock pode ser usada naordenação e na determinação se os acessos ao recurso compartilhado forem permitidos.Por exemplo, da forma ilustrada na figura 7A, em virtude de os valores com sinal computa-dos, a função AcquireLock ordena o item de trabalho 708-2 em uma posição precedente aoitem de trabalho 708-N na fila de sincronia 712.
Em uma modalidade, a função AequireLock realiza a ordenação dos itens de traba-lho na fila de sincronia 712, primeiro, pela coleta de todos os indicadores de sincronia 718que pertencem à mesma atividade. Como tal, impasses não ocorrem. A figura 7B é um dia-grama que ilustra a ordenação da fila de sincronia 712 pela função AcquireLock de acordocom uma modalidade da invenção. Por exemplo, uma árvore de atividade simplista 732 in-clui um nó raiz / pai 722 e dois nós filhos 724 e 726, e cada qual inclui um work Item1 e umwork item2, respectivamente.
Como exposto, alguns dos itens de trabalho na árvore de atividade podem não in-cluir uma rotina de tratamento de sincronia. Como tal, se algum item de trabalho no nó filho /folha da árvore de atividade não tiver uma rotina de tratamento de sincronia, a função Acqui-reLock não prosseguirá adicionalmente na estrutura hierárquica da árvore de atividade. Emuma modalidade, durante a ordenação, a função AcquireLock também remove itens de tra-balho duplicados para evitar qualquer impasse na fila de sincronia 712.
Continuando a atravessar os nós da árvore de atividade, a seguir, a função Acqui-reLock tenta identificar o item de trabalho no nó raiz ou pai da árvore de atividade, tal comoo nó raiz 722. Depois de encontrar o nó raiz ou pai, a função AcquireLock determina se umalista ou dicionário de indicadores coletados para o nó raiz ou pai 722 inclui todos os indica-dores de sincronia 718 para todos os seus filhos.Na figura 7B, uma lista de indicadores coletados 728 inclui informação, tais como"H" (denotando indicadores de sincronia) e "GL" (denotando Travas Concedidas). Da formailustrada, a lista 728 indica que a rotina de tratamento de sincronia 718 atribuída ao nó filho724 foi coletada e que o nó raiz 722 é o titular da rotina de tratamento de sincronia 718 (istoé, permissão de acessar um recurso compartilhado em particular) para o work Item1 do nófilho 724.
Por outro lado, a lista 728 também indica que o nó raiz 722 tem a rotina de trata-mento de sincronia 718 para o nó filho 726, mas o nó raiz 722 não é o titular da rotina detratamento de sincronia 718 (isto é, o nó raiz 722 não tem acesso ao recurso compartilha-do). Como tal, o work item2 do nó filho 726 é adicionado em uma lista de espera 730 e afunção AcquireLock realizará uma outra iteração do processo para garantir que o nó raiz 722obtenha a rotina de tratamento de sincronia 718 para o nó filho 726.
Uma vez que a função AcquireLock ordena a fila de sincronia 712 de acordo com adescrição exposta, um expedidor 710 expede os itens de trabalho (por exemplo, 708-2) nafila de sincronia 712 a ser executados no estado de execução no qual métodos de atividadeou funções nos itens de trabalho são processados. Como tal, os itens de trabalho são se-qüencialmente executados a partir da fila de sincronia para tornar serial o acesso ao recursocompartilhado em particular e efetuar uma execução síncrona das linhas de execução asso-ciadas com os itens de trabalho.
Agora, em relação à figura 8, um fluxograma que ilustra um método para executarde forma síncrona atividades acessa um recurso compartilhado em particular de acordo comuma modalidade da invenção. Em um exemplo, o método ilustrado na figura 8 pode ser rea-lizado por componentes executáveis por computador incluídos em uma mídia legível porcomputador 900 ilustrada na figura 9. Por exemplo, um componente de armazenamento 902armazena uma pluralidade de itens de trabalho em uma fila (por exemplo, uma fila do agen-dador) ou coloca em fila a pluralidade de itens de trabalho para a execução em 802. O umou mais da pluralidade de itens de trabalho é associado com uma atividade em um fluxo detrabalho e com um ou mais da pluralidade de itens de trabalho que é organizado em umaestrutura de árvore ou em outra estrutura hierárquica na atividade. Cada um dos itens detrabalho é associado com uma linha de execução.
Em 804, um componente de sincronia 904 atribui uma rotina de tratamento de sin-cronia para cada um da pluralidade de itens de trabalho na fila. A rotina de tratamento desincronia indica o recurso compartilhado em particular a ser acessado pela pluralidade deitens de trabalho. Em 806, um componente com sinal 906 computa um valor com sinal paracada um dos itens de trabalho com base na rotina de tratamento de sincronia atribuída e emum local dos itens de trabalho na estrutura de árvore na atividade. Um componente de orde-nação 908 ordena os itens de trabalho em uma fila de sincronia com base no valor com sinalassociado com cada um dos itens de trabalho em 808. Em 810, um componente de execu-ção 910 executa cada um dos itens de trabalho ordenados na fila de sincronia para tornarserial o acesso ao recurso compartilhado em particular e efetuar uma execução síncronadas linhas de execução associadas com o fluxo de trabalho.
Em uma modalidade, a mídia legível por computador 900 inclui adicionalmente umcomponente de definição 912 para definir declarativamente a rotina de tratamento de sin-cronia atribuída para cada um dos itens de trabalho pela exposição das propriedades darotina de tratamento de sincronia para cada um dos itens de trabalho. Em uma ainda outramodalidade alternativa, a mídia legível por computador 900 inclui um componente de passi-vação 914 para passivar a fila de sincronia com os itens de trabalho e os valores com sinalassociados em um armazenamento de dados.
Embora descrito em conjunto com um ambiente de sistema de computação exem-plar, tal como o sistema 400 da figura 4, modalidades da invenção são operacionais cominúmeros outros ambientes ou configurações de sistema de computação de uso geral ou deuso especial. Não pretende-se que o ambiente do sistema de computação sugira nenhumalimitação ao escopo do uso ou à funcionalidade de nenhum aspecto da invenção. Além domais, o ambiente do sistema de computação não deve ser interpretado com qualquer de-pendência ou exigência relacionada a nenhum dos componentes ou de suas combinaçõesilustrados no ambiente operacional exemplar. Exemplos de sistemas, ambientes e/ou confi-gurações de computação bem conhecidos que podem ser adequados para uso com aspec-tos da invenção incluem, mas sem limitações, computadores pessoais, computadores servi-dores, dispositivos de mão ou portáteis, sistemas multiprocessadores, sistemas com baseem microprocessador, conversores de sinal de freqüência, aparelhos eletrônicos programá-veis pelo cliente, telefones celulares, PCs em rede, minicomputadores, computadores degrande porte, ambientes de computação distribuída que incluem qualquer um dos sistemasou dispositivos expostos, e congêneres.
Modalidades da invenção podem ser descritas no contexto geral das instruções e-xecutáveis por computador, tais como módulos de programa, executadas por um ou maiscomputadores ou outros dispositivos. No geral, módulos de programa incluem, mas semlimitações, rotinas, programas, objetos, componentes e estruturas de dados que realizamtarefas em particular ou implementam tipos de dados abstratos em particular. Aspectos dainvenção também podem ser praticados em ambientes de computação distribuída em quetarefas são realizadas por dispositivos de processamento remotos que são ligados por meiode uma rede de comunicações. Em um ambiente de computação distribuída, módulos deprograma podem ficar localizados em mídia de armazenamento no computador tanto localquanto remota, incluindo dispositivo de armazenamento em memória.
Em operação, o sistema 400 executa instruções executáveis por computador, taiscomo aquelas ilustradas nas figuras, tal como na figura 7, para implementar aspectos dainvenção.
A ordem de execução ou de desempenho das operações nas modalidades da in-venção aqui ilustrada e descrita não é essencial, a menos que de outra forma especificado.Isto é, as operações podem ser realizadas em qualquer ordem, a menos que de outra formaespecificado, e modalidades da invenção podem incluir operações adicionais ou menos ope-rações do que aquelas aqui divulgadas. Por exemplo, percebe-se que a execução ou o de-sempenho de uma operação em particular antes, durante ou depois de uma outra operaçãoestá no escopo dos aspectos da invenção.
Modalidades da invenção podem ser implementadas com instruções executáveispor computador. As instruções executáveis por computador podem ser organizadas em umou mais componentes ou módulos executáveis por computador. Aspectos da invenção po-dem ser implementados com qualquer número e organização de tais componentes ou mó-dulos. Por exemplo, aspectos da invenção não são limitados às instruções executáveis porcomputador ou aos componentes ou módulos específicos ilustrados nas figuras e aqui des-critos. Outras modalidades da invenção podem incluir diferentes instruções executáveis porcomputador ou componentes com mais ou menos funcionalidades do que aqui ilustrado edescrito.
Durante a introdução dos elementos dos aspectos da invenção ou das suas moda-lidades, pretende-se que os artigos "um", "uma", "o", "a", "dito" e "dita" signifiquem que háum ou mais dos elementos. Pretende-se que os termos "compreendendo", "incluindo" e"tendo" sejam inclusivos e signifiquem que pode haver elementos adicionais diferentes doselementos listados.
Tendo sido descritos aspectos da invenção com detalhes, ficará aparente que modi-ficações e variações são possíveis sem fugir do escopo dos aspectos da invenção definidonas reivindicações anexas. Já que várias mudanças podem ser feitas nas construções, pro-dutos e métodos expostos sem fugir do escopo dos aspectos da invenção, pretende-se quetodo o assunto contido na descrição exposta e mostrado nos desenhos anexos seja interpre-tado como ilustrativo e não em um sentido limitante.
APÊNDICE A
<myActivities:Parallel x:Name="pxxx"xmlns:myActivities="http://schemas.com/myActivities"xmlns:x="http://schemas. microsoft.com/winfx/2006/xaml"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow"><SynchronizationScopeActivity x:Name="sl" SynchronizationHandles="a">
<myActivities:Parallel x:Name="pl ">
<SynchronizationScopeActivity x:Name="s2" SynchronizationHandles="a"><myActivities:WriteLine x:Name="w3" Text="0ne'7><myActivities:WriteLine x:Name="w4" Text="Two"/></SynchronizationScopeActivity>
<SynchronizationScopeActivity x:Name="s3" SynchronizationHandles="b"> <myActivities:WriteLine x:Name="w5" Text="Three7>
<myActivities:WriteLine x:Name="w6" Text="Four'7></SynchronizationScopeActivity></myActivities:Parallel></SynchronizationScopeActivity> <SynchronizationScopeActivity x:Name="s4" SynchronizationHandles="b">
<myActivities:Paraliel x:Name="p2">
<SynchronizationScopeActivity x:Name="s5" SynchronizationHandles="b"><myActivities:WriteLine x:Name="w9" Text="Five"/><myActivities:WriteLine x:Name="wlO" Text="Six7> </SynchronizationScopeActivity>
<SynchronizationScopeActivity x:Name="s6" SynchronizationHandles="a"><myActivities:WriteLine x:Name="wl 1" Text="Seven7><myActivities:WriteLine x:Name="wl2" Text="Eight"/></SynchronizationScopeActivity> </myActivities:Parallel>
</SynchronizationScopeActivity></myActi vities: Parallel>
APÊNDICE B
Em um ainda outro exemplo, o seguinte ilustra uma seqüência exemplar da imple- mentação da execução de linha de execução assíncrona de acordo com uma modalidade dainvenção.
1) Filtro de Sincronia é aplicado em todas as atividades que têm o atributo [Sup-portsSynchronization],
2) RootActivity e todos os escopos de sincronia mantêm um Dicionário de {indica- dor, GrantedLock}. Cada estrutura GrantedLock} mantém a atividade e a WaitList. Grante-
dLock pode ser serializado assim como o Dicionário de maneira tal que ambos possam so-breviver à passivação.
3) Cada escopo de sincronia é um gerente de trava para seus escopos de sincroniafilhos. A atividade raiz é o gerente de trava padrão. Um gerente de trava é responsável por
conceder as travas para o escopo de sincronia filho e também por manter uma lista de espe-ra dos escopos de sincronia filhos que podem não receber travas.
4) Há uma hierarquia das linhas de execução WF (por exemplo, com base na hie-rarquia da atividade) e, similarmente, uma hierarquia dos gerentes de trava / escopos desincronia.
5) Em seu método de execução, SynchronizationFiIter chama AcquireLocks pas-sando a si mesmo como uma chamada de volta.
6) Se AcquireLock retornar verdadeiro, a execução da atividade prossegue. Casocontrário, ela permanece no estado de execução.
7) Na AcquireLock:
a. A atividade coleta os indicadores de sincronia e *todos* os seus filhos. Se ne-nhum dos filhos tiver tais indicadores de sincronia, pára-se de ir além na hierarquia. Então,ela remove duplicatas e ordena todos os indicadores. Isto é para evitar todos os impasses.
b. Se nenhum indicador for encontrado, AcquireLock retorna verdadeiro. A execu-ção do escopo de sincronia pode prosseguir desde que ele não esteja sincronizando nada(no-op).
c. AcquireLock continua caminhando pela hierarquia pai procurando um filho queesteja no escopo de sincronia ou até que ela encontre a raiz. Em cada etapa, quando elaencontra um pai de escopo de sincronia, para cada um dos indicadores que ela tiver coleta-do, ela verifica se o dicionário de travas concedidas do pai tem o indicador. Se não, ela seadiciona como a atividade para o dado indicador para o qual a trava foi concedida. Se ele játiver o indicador e ele não for o titular, ele se adiciona na lista de espera. Em qualquer pontoque ele estiver adicionado a pelo menos uma das listas de espera, AcquireLock retorna fal-so. Se nenhum pai de escopo de sincronia tiver lista de indicadores não vazia, interrompe-see retorna-se verdadeiro, desde que o pai já tenha adquirido todas as travas. Lembre que ofiltro de sincronia do pai sempre é executado antes do filho.
8) O filtro de sincronia se inscreve para a atividade para o estado fechado. Uma vezque ele prossegue até o estado fechado, o filtro chama ReIeaseLock.
9) Na ReIeaseLock:
a. Caminha na cadeia do pai, para cada etapa, para cada indicador, coleta as ativi-dades que estão esperando em um dado indicador.
b. Para todas as atividades em espera, tenta readquirir as travas. Para aquelas pa-ra as quais pode adquirir as travas, invoca a chamada de volta do filtro.
Claims (20)
1. Sistema (400) para implementar sincronia entre linhas de execução em um fluxode trabalho, CARACTERIZADO pelo fato de que o dito sistema (400) compreende:uma área de memória (404) para armazenar uma pluralidade de itens de trabalho(422) em uma fila do agendador (410), os ditos um ou mais da pluralidade de itens de traba-lho (422) sendo organizados hierarquicamente (500) em uma atividade (406) e sendo asso-ciados com a atividade (406) em um fluxo de trabalho, cada um dos itens de trabalho (422)sendo associado com uma linha de execução;um processador (402) configurado para executar instruções executáveis por com-putadorpara:atribuir uma rotina de tratamento de sincronia (718) a cada um dos itens de trabalho(422) na fila do agendador (410), a dita rotina de tratamento de sincronia (718) indicando umrecurso compartilhado em particular a ser acessado pelo item de trabalho (422), o dito re-curso compartilhado em particular sendo compartilhado por um ou mais dos itens de traba-Iho (422);para cada um dos itens de trabalho (422), computar um valor com sinal com basena rotina de tratamento de sincronia atribuída (718) e em um local do item de trabalho nahierarquia (500) na atividade (406);armazenar os itens de trabalho em uma fila de sincronia (712) com base no valorcom sinal computado com cada um dos itens de trabalho (422); eexecutar seqüencialmente cada um dos itens de trabalho (422) ordenados na fila desincronia (712) para tornar serial o acesso ao recurso compartilhado em particular e efetuaruma execução síncrona das linhas de execução associadas com os itens de trabalho (422).
2. Sistema (400), de acordo com a reivindicação 1, CARACTERIZADO pelo fato deque o processador (402) é adicionalmente configurado para definir declarativamente a rotinade tratamento de sincronia (718) atribuída para cada um dos itens de trabalho (422) pelaexposição das propriedades da rotina de tratamento de sincronia (718) para cada um dositens de trabalho (422).
3. Sistema (400), de acordo com a reivindicação 1, CARACTERIZADO pelo fato deque a rotina de tratamento de sincronia (718) atribuída de cada um dos itens de trabalho(422) define um escopo de linha de execução associado com cada um dos itens de trabalho(422).
4. Sistema (400), de acordo com a reivindicação 1, CARACTERIZADO pelo fato deque a hierarquia (500) na atividade (406) é uma estrutura de árvore, e em que o processa-dor (402) é configurado para executar instruções executáveis por computador para ordenaros itens de trabalho (422) com base no local na estrutura de árvore.
5. Sistema (400), de acordo com a reivindicação 1, CARACTERIZADO pelo fato deque o processador (402) é adicionalmente configurado para passivar a fila de sincronia (712)armazenando os itens de trabalho (422) e os valores com sinal associados em um armaze-namento de dados (420).
6. Sistema (400), de acordo com a reivindicação 1, CARACTERIZADO pelo fato de-5 que o processador (402) é configurado para executar os itens de trabalho (422) pela transi-ção dos itens de trabalho (422) a um estado de execução (604) de acordo com um autômatode estado (600) associado com o processamento do fluxo de trabalho.
7. Método para a execução sincronizada de atividades em um fluxo de trabalho a-cessando um recurso compartilhado em particular, CARACTERIZADO pelo fato de que odito método compreende:enfileirar uma pluralidade de itens de trabalho (422) para execução, os ditos um oumais da pluralidade de itens de trabalho sendo organizados em uma seqüência em umaatividade (406) e sendo associados com a atividade (406) em um fluxo de trabalho, os ditoscada um dos itens de trabalho (422) sendo uma linha de execução;atribuir uma rotina de tratamento de sincronia (718) para cada um da pluralidade deitens de trabalho (422), a dita rotina de tratamento de sincronia (718) indicando o recursocompartilhado em particular a ser acessado pela pluralidade de itens de trabalho (422), odito recurso compartilhado em particular sendo compartilhado por um ou mais dos itens detrabalho (422);para cada um dos itens de trabalho (422), computar um valor com sinal com basena rotina de tratamento de sincronia atribuída (718) e em um local dos itens de trabalho naseqüência na atividade (406);ordenar os itens de trabalho (422) em uma fila de sincronia (712) com base no valorcom sinal computado associado com cada um dos itens de trabalho (422); eexecutar seqüencialmente cada um dos itens de trabalho (422) ordenados na fila desincronia (712) para tornar serial o acesso ao recurso compartilhado em particular e efetuaruma execução síncrona das linhas de execução associadas com os itens de trabalho (422).
8. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de quecompreende adicionalmente definir declarativamente a rotina de tratamento de sincroniaatribuída (718) para cada um dos itens de trabalho pela exposição das propriedades da roti-na de tratamento de sincronia (718) para cada um dos itens de trabalho (422).
9. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de queatribuir a rotina de tratamento de sincronia (718) compreende atribuir uma seqüência de ca-racteres com sinal.
10. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de queatribuir a rotina de tratamento de sincronia (718) compreende definir um escopo de linha deexecução associado com cada um dos itens de trabalho (422).
11. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de quea seqüência na atividade (406) corresponde a uma seqüência para atravessar a árvore deestrutura (500), e em que a ordenação compreende arranjar os itens de trabalho (422) combase no local na árvore de estrutura.
12. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de quecompreende adicionalmente passivar a fila de sincronia (712) com os itens de trabalho (422)e os valores com sinal associados em um armazenamento de dados (420).
13. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de quea execução compreende executar os itens de trabalho pela transição a um estado de execu-ção de acordo com um autômato de estado associado com o processamento do fluxo detrabalho.
14. Método, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de queuma ou mais mídias legíveis por computador têm instruções executáveis por computadorpara realizar o método da reivindicação 1.
15. Mídia legível por computador (900) com componentes executáveis por compu-tador para executar atividades de forma síncrona, CARACTERIZADA pelo fato de que osditos componentes executáveis por computador compreendem:um componente de armazenamento (902) para armazenar uma pluralidade de itensde trabalho (422) em uma fila (410), o dito um ou mais da pluralidade de itens de trabalho(422) sendo associado com uma atividade (406) em um fluxo de trabalho, o dito um ou maisda pluralidade de itens de trabalho (422) sendo organizado em uma estrutura de árvore(500) na atividade (406), os ditos cada um dos itens de trabalho (422) sendo associadoscom uma linha de execução;um componente de sincronia (904) para atribuir uma rotina de tratamento de sin-cronia (718) a cada um da pluralidade de itens de trabalho (422) na fila (410), a dita rotinade tratamento de sincronia (718) indicando o recurso compartilhado em particular a ser a-cessado pela pluralidade de itens de trabalho (422), o dito recurso compartilhado em particu-lar sendo compartilhado por um ou mais dos itens de trabalho (422);um componente com sinal (906) para computar um valor com sinal para cada umdos itens de trabalho (422) com base na rotina de tratamento de sincronia atribuída (718) eem um local dos itens de trabalho (422) na estrutura de árvore (500) na atividade (406);um componente de ordenação (908) para ordenar os itens de trabalho (422) emuma fila síncrona (712) com base no valor com sinal associado com cada um dos itens detrabalho (422); eum componente de execução (910) para executar cada um dos itens de trabalho(422) na fila de sincronia (712) para tornar serial o acesso ao recurso compartilhado em par-ticular e efetuar uma execução síncrona das linhas de execução associadas com o fluxo detrabalho.
16. Mídia legível por computador (900), de acordo com a reivindicação 15, CA-RACTERIZADA pelo fato de que compreende adicionalmente um componente de definição(914) para definir declarativamente a rotina de tratamento de sincronia (718) atribuída paracada um dos itens de trabalho (422) pela exposição das propriedades da rotina de tratamen-to de sincronia para cada um dos itens de trabalho (422).
17. Mídia legível por computador (900), de acordo com a reivindicação 15, CA-RACTERIZADA pelo fato de que o componente de sincronia (904) compreende definir umescopo de linha de execução associado com cada um dos itens de trabalho (422).
18. Mídia legível por computador (900), de acordo com a reivindicação 15, CA-RACTERIZADA pelo fato de que compreende adicionalmente um componente de passiva-ção (912) para passivar a fila síncrona (712) com os itens de trabalho (422) e os valorescom sinal associados em um armazenamento de dados (420).
19. Mídia legível por computador (900), de acordo com a reivindicação 18, CA-RACTERIZADA pelo fato de que o componente de passivação (912) armazena a fila desincronia (712) com os itens de trabalho (422), o sinal associado e o estado de execução noarmazenamento de dados (420).
20. Mídia legível por computador (900), de acordo com a reivindicação 15, CA-RACTERIZADA pelo fato de que o componente de execução (910) compreende executar ositens de trabalho (422) pela transição a um estado de execução (604) de acordo com umautômato de estado (600) associado com o processamento do fluxo de trabalho.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/393,966 | 2006-03-30 | ||
| US11/393,966 US8024405B2 (en) | 2006-03-30 | 2006-03-30 | Declarative model for concurrency-control across lightweight threads |
| PCT/US2007/004633 WO2007120390A1 (en) | 2006-03-30 | 2007-02-21 | Declarative model for concurrency-control across lightweight threads |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| BRPI0710036A2 true BRPI0710036A2 (pt) | 2011-08-02 |
Family
ID=38560811
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| BRPI0710036-1A BRPI0710036A2 (pt) | 2006-03-30 | 2007-02-21 | modelo declarativo para controle e simultáneo através de linhas de execução leves |
Country Status (9)
| Country | Link |
|---|---|
| US (1) | US8024405B2 (pt) |
| EP (1) | EP2013847A4 (pt) |
| JP (1) | JP5006382B2 (pt) |
| KR (1) | KR20090008198A (pt) |
| BR (1) | BRPI0710036A2 (pt) |
| CA (1) | CA2644360A1 (pt) |
| MX (1) | MX2008011915A (pt) |
| RU (1) | RU2008138707A (pt) |
| WO (1) | WO2007120390A1 (pt) |
Families Citing this family (33)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8849691B2 (en) | 2005-12-29 | 2014-09-30 | Microsoft Corporation | Modeling user input and interaction in workflow based applications |
| US9274921B2 (en) * | 2006-12-27 | 2016-03-01 | International Business Machines Corporation | System and method for managing code displacement |
| US8108868B2 (en) * | 2007-12-18 | 2012-01-31 | Microsoft Corporation | Workflow execution plans through completion condition critical path analysis |
| 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 |
| US9354847B2 (en) * | 2008-12-29 | 2016-05-31 | Microsoft Technology Licensing, Llc | Interface infrastructure for a continuation based runtime |
| US20100169618A1 (en) * | 2008-12-30 | 2010-07-01 | Microsoft Corporation | Identifying concurrency control from a sequential proof |
| US9135584B2 (en) * | 2009-02-28 | 2015-09-15 | International Business Machines Corporation | Method and apparatus to model content state and access control in backend-systems and business processes |
| US8683432B2 (en) * | 2009-03-20 | 2014-03-25 | Microsoft Corporation | Providing execution context in continuation based runtimes |
| US8307368B2 (en) * | 2009-05-26 | 2012-11-06 | Microsoft Corporation | Locality-based scheduling in continuation-based runtimes |
| US8769496B2 (en) | 2010-08-13 | 2014-07-01 | Accenture Global Services Limited | Systems and methods for handling database deadlocks induced by database-centric applications |
| US9778915B2 (en) | 2011-02-28 | 2017-10-03 | Microsoft Technology Licensing, Llc | Distributed application definition |
| US9990184B2 (en) | 2011-03-25 | 2018-06-05 | Microsoft Technology Licensing, Llc | Distributed component model |
| US9465589B2 (en) | 2011-04-05 | 2016-10-11 | Microsoft Technology Licensing, Llc | Stateful component authoring and execution |
| US9536264B2 (en) | 2011-11-14 | 2017-01-03 | Microsoft Technology Licensing, Llc | Host agnostic messaging in a continuation based runtime |
| US9396007B2 (en) | 2013-03-22 | 2016-07-19 | Facebook, Inc. | Cache management in a multi-threaded environment |
| US10257316B2 (en) * | 2014-03-30 | 2019-04-09 | Cisco Technology, Inc. | Monitoring of node.js applications |
| CN104123177B (zh) * | 2014-07-18 | 2019-01-08 | 无锡梵天信息技术股份有限公司 | 一种无锁的多线程数据同步方法 |
| US9804883B2 (en) * | 2014-11-14 | 2017-10-31 | Advanced Micro Devices, Inc. | Remote scoped synchronization for work stealing and sharing |
| US10083412B2 (en) * | 2015-05-14 | 2018-09-25 | Atlassian Pty Ltd | Systems and methods for scheduling work items |
| US10853746B2 (en) | 2015-05-14 | 2020-12-01 | Atlassian Pty Ltd. | Systems and methods for scheduling work items |
| US11455190B2 (en) | 2016-02-05 | 2022-09-27 | Sas Institute Inc. | Implicit status in many task computing |
| US11775341B2 (en) * | 2016-02-05 | 2023-10-03 | Sas Institute Inc. | Automated job flow generation to provide object views in container-supported many task computing |
| US10795935B2 (en) | 2016-02-05 | 2020-10-06 | Sas Institute Inc. | Automated generation of job flow definitions |
| US10650046B2 (en) | 2016-02-05 | 2020-05-12 | Sas Institute Inc. | Many task computing with distributed file system |
| US10642896B2 (en) * | 2016-02-05 | 2020-05-05 | Sas Institute Inc. | Handling of data sets during execution of task routines of multiple languages |
| US11474863B2 (en) | 2018-06-22 | 2022-10-18 | Sas Institute Inc. | Federated area coherency across multiple devices in many-task computing |
| USD898059S1 (en) | 2017-02-06 | 2020-10-06 | Sas Institute Inc. | Display screen or portion thereof with graphical user interface |
| USD898060S1 (en) | 2017-06-05 | 2020-10-06 | Sas Institute Inc. | Display screen or portion thereof with graphical user interface |
| JP2019053355A (ja) | 2017-09-12 | 2019-04-04 | セイコーエプソン株式会社 | 情報処理装置、情報処理方法、及び、プログラム |
| CN109284193B (zh) * | 2018-09-06 | 2022-12-09 | 平安科技(深圳)有限公司 | 一种基于多线程的分布式数据处理方法及服务器 |
| CN113420864B (zh) * | 2021-07-05 | 2022-06-14 | 广西师范大学 | 一种包含互斥资源的多智能体系统的控制器生成方法 |
| US12579487B1 (en) * | 2021-11-24 | 2026-03-17 | Digital.Ai Software, Inc. | Computerized work-item selection and progress tracking based on a set of weighted computer-executable rules |
Family Cites Families (100)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5287537A (en) | 1985-11-15 | 1994-02-15 | Data General Corporation | Distributed processing system having plural computers each using identical retaining information to identify another computer for executing a received command |
| US5301320A (en) | 1991-06-28 | 1994-04-05 | Digital Equipment Corporation | Workflow management and control system |
| US5555388A (en) * | 1992-08-20 | 1996-09-10 | Borland International, Inc. | Multi-user system and methods providing improved file management by reading |
| AU6133594A (en) | 1993-02-08 | 1994-08-29 | Action Technologies, Inc. | Method and apparatus for managing business processes |
| US5734837A (en) | 1994-01-14 | 1998-03-31 | Action Technologies, Inc. | Method and apparatus for building business process applications in terms of its workflows |
| US6148325A (en) | 1994-06-30 | 2000-11-14 | Microsoft Corporation | Method and system for protecting shared code and data in a multitasking operating system |
| 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 |
| US6182108B1 (en) | 1995-01-31 | 2001-01-30 | Microsoft Corporation | Method and system for multi-threaded processing |
| US5774661A (en) | 1995-04-18 | 1998-06-30 | Network Imaging Corporation | Rule engine interface for a visual workflow builder |
| 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 |
| US5790851A (en) * | 1997-04-15 | 1998-08-04 | Oracle Corporation | Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment |
| US6158044A (en) | 1997-05-21 | 2000-12-05 | Epropose, Inc. | Proposal based architecture system |
| US6240440B1 (en) * | 1997-06-30 | 2001-05-29 | Sun Microsystems Incorporated | Method and apparatus for implementing virtual threads |
| 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 |
| US6225998B1 (en) | 1997-12-02 | 2001-05-01 | Aspect Communications | Visual design of workflows for transaction processing |
| US6115646A (en) | 1997-12-18 | 2000-09-05 | Nortel Networks Limited | Dynamic and generic process automation system |
| US6078982A (en) * | 1998-03-24 | 2000-06-20 | Hewlett-Packard Company | Pre-locking scheme for allowing consistent and concurrent workflow process execution in a workflow management system |
| US6430538B1 (en) | 1998-04-30 | 2002-08-06 | Enterworks | Workflow management system, method and medium with personal subflows |
| 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 |
| 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 |
| WO2000014618A2 (en) | 1998-08-24 | 2000-03-16 | Fujitsu Limited | Workflow system and method |
| US6606740B1 (en) | 1998-10-05 | 2003-08-12 | American Management Systems, Inc. | Development framework for case and workflow systems |
| US7133833B1 (en) | 1998-10-27 | 2006-11-07 | Netscape Communications Corporation | Lightweight directory access protocol workflow management system |
| US6862635B1 (en) | 1998-11-13 | 2005-03-01 | Cray Inc. | Synchronization techniques in a multithreaded environment |
| US6622155B1 (en) | 1998-11-24 | 2003-09-16 | Sun Microsystems, Inc. | Distributed monitor concurrency control |
| WO2000054202A2 (en) | 1999-03-11 | 2000-09-14 | Paysys International, Inc. | Methods and systems for developing applications and for interfacing with users |
| 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 |
| EP1277104A1 (en) | 2000-03-30 | 2003-01-22 | Ideogramic APS | Method for gesture based modeling |
| 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 |
| US20030033191A1 (en) | 2000-06-15 | 2003-02-13 | Xis Incorporated | Method and apparatus for a product lifecycle management process |
| JP2002157386A (ja) * | 2000-09-08 | 2002-05-31 | Hitachi Ltd | ワークフロー管理方法および装置並びにその処理プログラム並びにその処理プログラムを格納した記録媒体 |
| US20020032692A1 (en) | 2000-09-08 | 2002-03-14 | Atsuhito Suzuki | Workflow management method and workflow management system of controlling workflow process |
| AU2002211405A1 (en) | 2000-10-02 | 2002-04-15 | International Projects Consultancy Services, Inc. | Object-based workflow system and method |
| US6604104B1 (en) | 2000-10-02 | 2003-08-05 | Sbi Scient Inc. | System and process for managing data within an operational data store |
| US7653566B2 (en) | 2000-11-30 | 2010-01-26 | Handysoft Global Corporation | Systems and methods for automating a process of business decision making and workflow |
| US7917888B2 (en) | 2001-01-22 | 2011-03-29 | Symbol Technologies, Inc. | System and method for building multi-modal and multi-channel applications |
| US7240324B2 (en) | 2001-02-28 | 2007-07-03 | Hewlett-Packard Development Company, L.P. | Event-based scheduling method and system for workflow activities |
| US6971084B2 (en) | 2001-03-02 | 2005-11-29 | National Instruments Corporation | System and method for synchronizing execution of a batch of threads |
| US20020128068A1 (en) | 2001-03-09 | 2002-09-12 | Randall Whitten Jon Marcus | Method and apparatus for managing data in a gaming system |
| US20020147606A1 (en) | 2001-03-14 | 2002-10-10 | Norbert Hoffmann | Application development method |
| US7207069B2 (en) * | 2001-06-05 | 2007-04-17 | Hewlett-Packard Development Company, L.P. | Branch locking of job tickets to control concurrency |
| US20020188644A1 (en) | 2001-06-08 | 2002-12-12 | Verano | Workflow automated task component manager |
| US7069536B2 (en) | 2001-06-28 | 2006-06-27 | International Business Machines Corporation | Method, system, and program for executing a workflow |
| US6898604B1 (en) | 2001-06-29 | 2005-05-24 | Microsoft Corporation | XML serialization and deserialization |
| US20030018508A1 (en) | 2001-07-19 | 2003-01-23 | Schwanke Robert W. | Data-triggered workflow processes |
| US7222334B2 (en) | 2001-07-24 | 2007-05-22 | Hewlett-Packard Development Comapny, L.P. | Modeling tool for electronic services and associated methods and businesses |
| WO2003014927A2 (en) | 2001-08-08 | 2003-02-20 | Trivium Systems Inc. | Scalable messaging platform for the integration of business software components |
| US6985939B2 (en) | 2001-09-19 | 2006-01-10 | International Business Machines Corporation | Building distributed software services as aggregations of other services |
| US6895573B2 (en) | 2001-10-26 | 2005-05-17 | Resultmaker A/S | Method for generating a workflow on a computer, and a computer system adapted for performing the method |
| US20030177046A1 (en) | 2001-12-03 | 2003-09-18 | John Socha-Leialoha | Method and system for reusing components |
| US20030145035A1 (en) | 2002-01-15 | 2003-07-31 | De Bonet Jeremy S. | Method and system of protecting shared resources across multiple threads |
| 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 |
| US7865867B2 (en) | 2002-03-08 | 2011-01-04 | Agile Software Corporation | System and method for managing and monitoring multiple workflows |
| US20030233374A1 (en) | 2002-03-14 | 2003-12-18 | Ulrich Spinola | Dynamic workflow process |
| US20030195762A1 (en) | 2002-04-12 | 2003-10-16 | David Gleason | Automated workflow |
| 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 |
| US7424717B2 (en) | 2002-05-01 | 2008-09-09 | Bea Systems, Inc. | Systems and methods for business process plug-in development |
| US7272816B2 (en) | 2002-07-31 | 2007-09-18 | Sap Aktiengesellschaft | Transformations between private and shared workflows |
| US8374966B1 (en) | 2002-08-01 | 2013-02-12 | Oracle International Corporation | In memory streaming with disk backup and recovery of messages captured from a database redo stream |
| 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 |
| US7062537B2 (en) | 2002-11-25 | 2006-06-13 | Microsoft Corporation | Workflow services architecture |
| US20040148213A1 (en) | 2002-11-25 | 2004-07-29 | Microsoft Corporation | Automated workflow constraints |
| US7272820B2 (en) | 2002-12-12 | 2007-09-18 | Extrapoles Pty Limited | Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity |
| US7401334B2 (en) * | 2002-12-20 | 2008-07-15 | International Business Machines Corporation | Method, apparatus and computer program product for managing message flow in a multithreaded, message flow environment |
| US7168077B2 (en) | 2003-01-31 | 2007-01-23 | Handysoft Corporation | System and method of executing and controlling workflow processes |
| US20040162741A1 (en) | 2003-02-07 | 2004-08-19 | David Flaxer | Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference |
| CA2420479A1 (en) | 2003-02-13 | 2004-08-13 | Ibm Canada Limited - Ibm Canada Limitee | Flow debugging software and method |
| JP5154798B2 (ja) | 2003-05-07 | 2013-02-27 | エスアーペー アーゲー | 構造化ワークフローシステム及びコンピュータプログラム |
| US8332864B2 (en) | 2003-06-12 | 2012-12-11 | Reuters America Inc. | Business process automation |
| US8645420B2 (en) | 2003-08-05 | 2014-02-04 | Accenture Global Services Limited | Methodology framework and delivery vehicle |
| AU2003268381A1 (en) | 2003-09-02 | 2005-04-21 | Infoglide Software Corporation | System and method for workflow process management |
| CA2442796A1 (en) | 2003-09-26 | 2005-03-26 | Ibm Canada Limited - Ibm Canada Limitee | Binding a workflow engine to a data model |
| US7386848B2 (en) * | 2003-10-02 | 2008-06-10 | International Business Machines Corporation | Method and system to alleviate denial-of-service conditions on a server |
| US7137033B2 (en) * | 2003-11-20 | 2006-11-14 | International Business Machines Corporation | Method, system, and program for synchronizing subtasks using sequence numbers |
| US7519960B2 (en) | 2003-12-19 | 2009-04-14 | International Business Machines Corporation | Method and system for debugging business process flow |
| 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 |
| US7610585B2 (en) | 2004-06-03 | 2009-10-27 | Intel Corporation | Thread synchronization methods and apparatus for managed run-time environments |
| US7644409B2 (en) | 2004-06-04 | 2010-01-05 | Sun Microsystems, Inc. | Techniques for accessing a shared resource using an improved synchronization mechanism |
| US7676791B2 (en) | 2004-07-09 | 2010-03-09 | Microsoft Corporation | Implementation of concurrent programs in object-oriented languages |
| US20060064335A1 (en) | 2004-08-17 | 2006-03-23 | International Business Machines Corporation | Method, system, and storage medium for performing business process modeling |
| US20060074735A1 (en) | 2004-10-01 | 2006-04-06 | Microsoft Corporation | Ink-enabled workflow authoring |
| US7631291B2 (en) | 2004-10-01 | 2009-12-08 | Microsoft Corporation | Declarative representation for an extensible workflow model |
| US7464366B2 (en) | 2004-10-01 | 2008-12-09 | Microsoft Corporation | Programming interface for a componentized and extensible workflow model |
| 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 |
| JP2006215713A (ja) | 2005-02-02 | 2006-08-17 | Canon Inc | ワークフローシステムの先行業務指示及び廃止方法 |
| US7493594B2 (en) | 2005-03-14 | 2009-02-17 | Research In Motion | System and method for designing component based applications |
| WO2006110981A1 (en) | 2005-04-18 | 2006-10-26 | Research In Motion Limited | System and method for enabling assisted visual development of workflow for application tasks |
| US7983943B2 (en) | 2005-05-27 | 2011-07-19 | Xerox Corporation | Method and system for workflow process node synchronization |
-
2006
- 2006-03-30 US US11/393,966 patent/US8024405B2/en not_active Expired - Fee Related
-
2007
- 2007-02-21 CA CA002644360A patent/CA2644360A1/en not_active Abandoned
- 2007-02-21 MX MX2008011915A patent/MX2008011915A/es not_active Application Discontinuation
- 2007-02-21 EP EP07751399A patent/EP2013847A4/en not_active Withdrawn
- 2007-02-21 JP JP2009502787A patent/JP5006382B2/ja not_active Expired - Fee Related
- 2007-02-21 BR BRPI0710036-1A patent/BRPI0710036A2/pt not_active Application Discontinuation
- 2007-02-21 KR KR1020087023998A patent/KR20090008198A/ko not_active Withdrawn
- 2007-02-21 WO PCT/US2007/004633 patent/WO2007120390A1/en not_active Ceased
- 2007-02-21 RU RU2008138707/09A patent/RU2008138707A/ru not_active Application Discontinuation
Also Published As
| Publication number | Publication date |
|---|---|
| US20070233969A1 (en) | 2007-10-04 |
| MX2008011915A (es) | 2008-09-29 |
| JP2009532756A (ja) | 2009-09-10 |
| CA2644360A1 (en) | 2007-10-25 |
| EP2013847A1 (en) | 2009-01-14 |
| WO2007120390A1 (en) | 2007-10-25 |
| EP2013847A4 (en) | 2010-05-12 |
| US8024405B2 (en) | 2011-09-20 |
| KR20090008198A (ko) | 2009-01-21 |
| JP5006382B2 (ja) | 2012-08-22 |
| RU2008138707A (ru) | 2010-04-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| BRPI0710036A2 (pt) | modelo declarativo para controle e simultáneo através de linhas de execução leves | |
| JP5140067B2 (ja) | ワークフローにおいて継続をモデル化するフレームワーク | |
| BRPI0708917A2 (pt) | tratamento de falha assÍncrona em programas centralizados em processo | |
| BRPI0709182A2 (pt) | estrutura para modelagem de cancelamento para programas centralizados em processo | |
| BRPI0709242A2 (pt) | modelo de execução abstrato para um meta-tempo de execução com base em continuação | |
| US20100070975A1 (en) | Determining the processing order of a plurality of events | |
| CN104102971B (zh) | 管理具有对象循环的模型 | |
| US8601481B2 (en) | Workflow validation and execution | |
| Strøm et al. | Hardlock: Real-time multicore locking | |
| Xu et al. | Business process modeling extension and scheduling strategy compatible with big data business | |
| Madani | Parallel and Distributed Execution of Model Management Programs | |
| Louati et al. | RTO-RTDB: A real-time object-oriented database model | |
| Ganesh et al. | Java Concurrency | |
| Jeger | Extending the Eiffel Library for data structures and algorithms: EiffelBase | |
| Vajda | Introduction to Programming Models | |
| Lawler | Synchronisation of composite operations in multithreaded object-oriented programs | |
| Bailey | The use of semantic information in a distributed data structure | |
| Jack | Parallel Programming Dot Net |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| B11A | Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing | ||
| B11Y | Definitive dismissal acc. article 33 of ipl - extension of time limit for request of examination expired |