BRPI0620869A2 - modelo de objeto em fluxo de trabalho - Google Patents

modelo de objeto em fluxo de trabalho Download PDF

Info

Publication number
BRPI0620869A2
BRPI0620869A2 BRPI0620869-0A BRPI0620869A BRPI0620869A2 BR PI0620869 A2 BRPI0620869 A2 BR PI0620869A2 BR PI0620869 A BRPI0620869 A BR PI0620869A BR PI0620869 A2 BRPI0620869 A2 BR PI0620869A2
Authority
BR
Brazil
Prior art keywords
workflow
computer
occurrence
host
special
Prior art date
Application number
BRPI0620869-0A
Other languages
English (en)
Inventor
Andres Sanabria
Constantin Mihai
Nikhil Kothari
Israel Hilerio
Michael Harder
Paul E Maybee
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of BRPI0620869A2 publication Critical patent/BRPI0620869A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis

Landscapes

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

Abstract

MODELO DE OBJETO EM FLUXO DE TRABALHO. Sistemas e métodos que objetivam a visualização de fluxos de trabalho e comportamento de gerenciamento por intermédio de um componente de acesso que fornece acesso à o- corrência de fluxo de trabalho real. A inovação em questão permite que recursos especiais sejam definidos para interação durante tempo de execução. Por exemplo, recursos especiais (por exemplo, fluxo de trabalho fortemente tipificado)podem incluir um método(s), um evento(s), uma propriedade(s), uma interface e semelhante. Conseqüentemente, o fluxo de trabalho pode ser exposto como um tipo ou classe de objeto, em que novos membros podem ser adicionados e o fluxo de trabalho expandido.

Description

"MODELO DE OBJETO EM FLUXO DE TRABALHO"
ANTECEDENTES
Tipicamente todo software empregado em empreendi- mentos atualmente suporta processos comerciais. Alguns des- ses processos são completamente automatizados, se baseando apenas na comunicação entre aplicações, enquanto que outros se baseiam em pessoas para iniciar o processo, aprovar docu- mentos que o processo utiliza, resolver quaisquer situações excepcionais que surjam, e etc. Em todo caso, é comum espe- cificar uma série discreta de etapas conhecidas como fluxo de trabalho que descreve as atividades das pessoas e softwa- re envolvidos no processo. Quanto tal fluxo de trabalho ti- ver sido definido, uma aplicação pode ser construída em tor- no dessa definição para suportar o processo comercial.
Dito de forma diferente, o fluxo de trabalho ge- ralmente é o fluxo de informação e controle em tais organi- zações. As empresas se esforçam continuamente para definir, documentar, e modernizar tais processos para que possam com- petir efetivamente. Em um cenário comercial, esses processos incluem vendas e processamento de pedidos, tarefas de com- pra, controle e gerenciamento de inventário, controle de fa- bricação e produção, transporte e recebimento, contas a pa- gar, e semelhantes.
Os sistemas de computador e software associados agora proporcionam ferramentas com as quais as empresas e outras organizações podem melhorar o seu fluxo de trabalho. Ferramentas de software podem ser usadas para modelar os processos de fluxo de trabalho comerciais ou programas e i- dentificar ineficiências e possíveis aperfeiçoamentos. Além disso, onde um processo envolve a permuta de dados entre as pessoas, departamentos, fábricas, ou até mesmo entre compa- nhias distintas, sistemas e redes de computação podem ser usados para implementar tais trocas. Esses sistemas e ferra- mentas de software são adicionalmente capazes de implementar computações de grande escala e outro processamento de infor- mação ou dados que são tipicamente associados à informação relacionada ao negócio.
Conseqüentemente, o gerenciamento de fluxo de tra- balho inclui o gerenciamento eficaz do fluxo de informação e controle nos processos comerciais de uma organização, em que a automação de tal processamento de informação tem conduzido a muitos aperfeiçoamentos em termos de eficiência no mundo comercial moderno. Contudo, tal automação de gerenciamento de fluxo de trabalho está agora permitindo que as empresas e outras organizações melhorem adicionalmente a performance mediante execução de transações de fluxo de trabalho em sis- temas de computador, incluindo redes globais de computado- res, tal como a Internet.
Uma aplicação baseada em fluxo de trabalho típica freqüentemente requer que várias condições sejam atendidas. Por exemplo, tal condição é a capacidade de tomar decisões com base nas regras comerciais. Isso pode incluir regras simples, (por exemplo, como uma decisão de sim ou não basea- da no resultado de uma verificação e crédito) , e regras mais complexas, (por exemplo, o conjunto potencialmente grande que deve ser avaliado para se tomar uma decisão firmada ini- cial). Outra exigência é a comunicação com outro software e outros sistemas fora do fluxo de trabalho. Por exemplo, uma solicitação inicial pode ser recebida de uma parte da apli- cação, enquanto que alguns aspectos (por exemplo, contatar um serviço de crédito) podem exigir comunicação utilizando outros serviços da Rede ou tecnologias. Uma condição adicio- nal a ser satisfeita é a interação adequada do fluxo de tra- balho com os usuários. Por exemplo, o fluxo de trabalho ti- picamente deve ser capaz de exibir uma interface de usuário ou interagir com as pessoas através de outro software. Além disso, outra condição que precisa ser satisfeita é a capaci- dade de manter o estado por toda a vida útil do fluxo de trabalho. Conseqüentemente, criar e executar um fluxo de trabalho em software apresenta desafios singulares.
Por exemplo, alguns processos comerciais podem le- var horas, dias ou semanas para serem concluídos, e manter a informação sobre o estado atual do fluxo de trabalho, por tal período de tempo, é necessário. Além disso, tal tipo de fluxo de trabalho em execução por longo tempo tipicamente também se comunicará com outro software em uma forma de não- bloqueio, e uma comunicação assíncrona pode apresentar difi- culdades. Ao mesmo tempo, embora a ação de modelar intera- ções fixas entre software seja relativamente direta, os con- sumidores tendem a exigir continuamente flexibilidade adi- cional, tal como a capacidade de mudar um processo comercial instantaneamente. Lidar com diversas aplicações pode adicio- nalmente aumentar as complexidades envolvidas na criação e gerenciamento do fluxo de trabalho. Muitas aplicações para as ferramentas de fluxo de trabalho são internas a uma empresa ou organização. Com o advento de computadores em rede tendo modems ou links de co- municação de outro tipo, os sistemas de computadores em lo- cais remotos podem agora se comunicar facilmente entre si. Tal comunicação aperfeiçoada permite que as aplicações de fluxo de trabalho de sistema de computadores sejam usadas entre instalações remotas dentro de uma companhia. Um exem- plo incluiria o envio de um pedido de cliente a partir de uma matriz corporativa para um escritório de vendas no cam- po, remoto, para verificação pelo funcionário de venda apro- priado, e retornando uma verificação para a matriz. As apli- cações de fluxo de trabalho também podem ser de utilidade especifica no processamento de transações comerciais entre diferentes companhias. Em uma aplicação típica, duas compa- nhias mantendo uma relação de comprador-vendedor podem pre- tender automatizar a geração e o processamento dos pedidos de compra, transportes de produto, cobrança, e compilações.
Por exemplo, uma aplicação visando um problema es- pecífico, tal como gerenciamento de relação como cliente (CRM), ou um mercado vertical específico, tal como serviços financeiros, pode ser construída em torno de um fluxo de trabalho. Tal tipo de aplicação comumente implementa um nú- mero de diferentes processos comerciais. A construção da ló- gica que aciona esses processos, em uma base de fluxo de trabalho comum, tal como Windows Workflow Foundation pode tornar a aplicação mais rápida em termos de construção, mais rápida para ser mudada, e mais fácil de customizar. Além disso, automatizar tais processos pode resultar em aperfei- çoamentos significativos em eficiência, os quais de outra forma não são possíveis. Contudo, tal aplicação de tecnolo- gia de fluxo de trabalho entre companhias requer cooperação das companhias e estabelecimento de interface adequado e im- plementação de serviço de persistência adequada dos sistemas de computador e aplicações existentes das companhias indivi- duais .
Até o presente, ferramentas de aplicação de fluxo de trabalho têm sido desenvolvidas as quais proporcionam al- guma capacidade para automatizar o fluxo de trabalho comer- cial mediante definição de programas de fluxo de trabalho. Não obstante, a capacidade de estabelecer adicionalmente um grau superior de isomorfismo entre os objetos encontrados no espaço de problema (o domínio de processo/empresa) e aqueles empregados na solução (o modelo/definição de fluxo de traba- lho real) é onerosa, e não obstante é considerado uma exi- gência importante para um software de alta qualidade.
Portanto, há a necessidade de se superar as defi- ciências exemplares anteriores mencionadas associadas aos sistemas e dispositivos convencionais.
SUMÁRIO
O que se segue apresenta um sumário simplificado para prover um entendimento básico de alguns aspectos da ma- téria reivindicada. Esse sumário não é uma visão geral ex- tensiva. O mesmo não se destina a identificar elementos es- senciais/cruciais ou delinear o escopo da matéria reivindi- cada. Seu único propósito é o de apresentar alguns conceitos em uma forma simplificada como um prelúdio para a descrição mais detalhada que é apresentada posteriormente.
A inovação em questão provê sistemas e métodos que tem como objetivo a visualização dos fluxos de trabalho e comportamento de gerenciamento por intermédio de um compo- nente de acesso (por exemplo, GetWorkflow<workflow> method) que provê um acesso de hospedeiro à ocorrência de fluxo de trabalho, em que características padronizadas podem ser de- finidas para interação durante o tempo de execução. Tais ca- racterísticas padronizadas (por exemplo, fluxo de trabalho vigorosamente tipificado) podem incluir uma propriedade(s), um método(s), um evento(s), uma interface e semelhante. Além disso, a presente inovação provê uma ocorrência de fluxo de trabalho que está sendo criada a partir de uma definição de fluxo de trabalho, e tipicamente não é um proxy, fachada, ou reinicio cíclico do objeto de ocorrência de fluxo de traba- lho real. Desse modo, a ocorrência de fluxo de trabalho real pode ser avaliada diretamente. Conseqüentemente, o fluxo de trabalho pode ser exposto como um tipo ou classe de objeto, em que novos membros podem ser adicionados e o fluxo de tra- balho estendido. Tal proporciona flexibilidade e permite que um usuário interaja com as propriedades especiais.
Em um aspecto relacionado, métodos e propriedades especiais podem ser ativados durante troca de dados entre um hospedeiro e a ocorrência de fluxo de trabalho. 0 hospedeiro pode interagir com a ocorrência de fluxo de trabalho para associar um comportamento especial com a classe de fluxo de trabalho. Por exemplo, o hospedeiro pode subscrever para e- ventos especiais para acessar tal ocorrência de fluxo de trabalho, e manipular o fluxo de trabalho como um objeto. Tipos enriquecidos para o fluxo de trabalho podem ser defi- nidos programaticamente e/ou através de uma ferramenta visu- al.
De acordo com uma metodologia da inovação em ques- tão, uma nova definição de fluxo de trabalho que tem propri- edades especiais, métodos especiais, eventos especiais, e similares podem ser definidos a partir de uma definição bá- sica de fluxo de trabalho. Além disso, a aplicação de hospe- deiro pode requerer uma ocorrência de fluxo de trabalho a partir de um provedor de fluxo de trabalho através de uma identificação associada à ocorrência de fluxo de trabalho. Tal identificação pode identificar singularmente a ocorrên- cia do fluxo de trabalho e pode ser gerada programaticamente ou atribuída/acessada pela aplicação de hospedeiro. 0 prove- dor de fluxo de trabalho pode gerar/retornar uma ocorrência do fluxo de trabalho, e o usuário pode interagir com tal o- corrência mediante ativação de membros de classe tais como propriedades, métodos, eventos e similares. Subseqüentemen- te, e a partir da conclusão de tal interação a ocorrência de fluxo de trabalho pode ser salva.
Para a realização das finalidades anteriormente mencionadas e relacionadas, certos aspectos ilustrativos da matéria reivindicada são descritos aqui em conexão com a descrição a seguir e os desenhos anexos. Esses aspectos são indicativos de várias formas nas quais a matéria pode ser praticada, todos os quais devem estar dentro do escopo da matéria reivindicada. Outras vantagens e características i- novadoras podem se tornar evidentes a partir da descrição detalhada a seguir quando considerada em conjunto com os de- senhos .
DESCRIÇÃO RESUMIDA DOS DESENHOS
A Figura 1 ilustra um diagrama de sistema exemplar de uma aplicação de hospedeiro que interage com o fluxo de trabalho por intermédio de um componente de acesso, para de- finir características especiais para um fluxo de trabalho.
A Figura 2 ilustra características especiais cons- truída sobre uma definição de fluxo de trabalho básico.
A Figura 3 ilustra um diagrama de blocos de uma interação de aplicação de hospedeiro com uma ocorrência de fluxo de trabalho, em que as características especiais podem ser construídas sobre uma classe base.
A Figura 4 ilustra uma metodologia exemplar de em- prego de um tipo de fluxo de trabalho com propriedades espe- ciais .
A Figura 5 ilustra um diagrama de seqüência exem- plar para fluxo de informação entre processos de acordo com um aspecto específico da inovação em questão.
A Figura 6 ilustra uma metodologia exemplar de salvar ocorrências do fluxo de trabalho.
A Figura 7 ilustra uma metodologia exemplar para carregar ocorrências do fluxo de trabalho.
A Figura 8 ilustra uma metodologia adicional para troca de dados entre um hospedeiro e ocorrência de fluxo de trabalho de acordo com um aspecto exemplar da inovação em questão.
A Figura 9 ilustra um ambiente exemplar para im- plementar vários aspectos da inovação em questão.
A Figura 10 é um diagrama esquemático de blocos de um ambiente de computação adicional que pode ser empregado para enriquecer um fluxo de trabalho de acordo com um aspec- to da inovação em questão.
DESCRIÇÃO DETALHADA
Os vários aspectos da presente invenção são des- critos agora com referência aos desenhos anexos, em que nu- merais similares se referem a elementos semelhantes ou cor- respondentes do principio ao fim. Deve ser entendido, contu- do, que os desenhos e a descrição detalhada relacionada a eles não pretendem limitar a matéria reivindicada à forma especifica revelada. Mais propriamente, a intenção é a de cobrir todas as modificações, equivalentes, e alternativas, abrangidos pelo espirito e escopo da matéria reivindicada.
Conforme aqui usados, os termos: "componente", "sistema", "serviço" e similares pretendem se referir a uma entidade relacionada a computador quer seja hardware, uma combinação de hardware e software, software ou um software em execução. Por exemplo, um componente pode ser, mas não é limitado a ser, um processo executando em um processador, um processador, um objeto, um executável, um fluxo de execução, um programa, e/ou um computador. Como ilustração, ambos, uma aplicação executando em computador, e o computador, podem constituir um componente. Um ou mais componentes podem resi- dir dentro de um processo e/ou fluxo de execução e um compo- nente pode estar localizado em um computador e/ou distribuí- do entre dois ou mais computadores.
O termo "exemplar" é usado aqui significando ser- vindo como um exemplo, ocorrência, ou ilustração. Qualquer aspecto ou projeto descrito aqui como "exemplar" não deve ser considerado necessariamente como preferido ou vantajoso em relação a outros aspectos ou projetos.
Além disso, a matéria revelada pode ser implemen- tada como um sistema, método, aparelho, ou produto industri- al utilizando técnicas de engenharia e/ou programação padrão para produzir software, firmware, hardware, ou qualquer com- binação dos mesmos para controlar um computador ou disposi- tivo baseado em processador para implementar os aspectos a- qui detalhados. O termo programa de computador conforme usa- do aqui pretende abranger um programa de computador que pode ser acessado a partir de qualquer dispositivo legível por computador, portadora, ou meios. Por exemplo, meios legíveis por computador podem incluir, mas não são limitados aos dis- positivos de armazenamento magnético (por exemplo, disco rí- gido, disquetes, fitas magnéticas...), discos óticos (por exemplo, disco a laser (CD), disco digital versátil (DVD)...), cartões inteligentes, e dispositivos de memória flash (por exemplo, cartão, stick). Adicionalmente, deve ser considerado que uma onda portadora pode ser empregada para transportar dados eletrônicos legíveis por computador, como aqueles usados na transmissão e recepção de correio eletrô- nico ou no acesso a uma rede tal como a Internet ou uma rede de área local (LAN). Evidentemente, aqueles versados na téc- nica reconhecerão que muitas modificações podem ser feitas nessa configuração sem se afastar do espirito ou escopo da matéria reivindicada.
De acordo inicialmente com a Figura 1, é ilustrado um diagrama de blocos para um sistema de fluxo de trabalho 130 que provê a um hospedeiro 110, acesso à ocorrência de fluxo de trabalho, em que características especiais podem ser definidas para interação durante tempo de execução. Tais características especiais (por exemplo, fluxo de trabalho fortemente tipificado) podem incluir: um método(s), um even- to (s), uma interface e semelhante. 0 fluxo de trabalho pode modelar um processo de sistema ou humano que é definido como um mapa de atividades. Uma atividade é uma ação em um fluxo de trabalho, e é a unidade de execução, reutilização, e com- posição para um fluxo e trabalho. O mapa de atividades ex- prime regras, ações, estados, e a relação dos mesmos. Tipi- camente, o fluxo de trabalho é executado por intermédio de mecanismos/tempo de execução de fluxo de trabalho 150, e o tempo de execução de fluxo de trabalho requer uma aplicação externa para hospedar o mesmo, de acordo com umas poucas re- gras, conforme ilustrado pelo hospedeiro 110.
O hospedeiro 110 interage com o sistema de fluxo de trabalho 130, por intermédio de um componente de acesso 120 que provê acesso à ocorrência de fluxo de trabalho, em que características especiais podem ser definidas para inte- ração durante o tempo de execução. Tais características es- peciais (por exemplo, fluxo de trabalho fortemente tipifica- do) podem incluir: um método(s), um evento(s), uma proprie- dade(s), uma interface e semelhante. Conseqüentemente, o fluxo de trabalho pode ser exposto como um tipo ou classe de objeto, em que novos membros podem ser adicionados e o fluxo de trabalho estendido. Tal fato provê flexibilidade e permi- te que um usuário interaja com propriedades especiais.
Além disso, através de tal componente de acesso 120, o hospedeiro 110 pode permutar dados com uma ocorrência de fluxo de trabalho do sistema de fluxo de trabalho 130, conforme descrito em detalhe abaixo. O hospedeiro 110 pode ser responsável por um número de aspectos adicionais e cru- ciais, tal como a criação de um ou mais fluxos de trabalho, guiando as chamadas entre os vários componentes conforme ne- cessário para execução adequada do fluxo do trabalho, e con- figuração dos mecanismos de isolamento. Além disso, o hospe- deiro 110 pode criar múltiplos processos para tirar proveito das múltiplas CPUs em uma máquina por razões de escalabili- dade, ou para executar um número maior de ocorrências de fluxo de trabalho em um sitio de máquinas. O hospedeiro 110 pode controlar ainda as políticas a serem empregadas quando um fluxo de trabalho é submetido a uma longa espera, ouvir eventos específicos e comunicar os mesmos a um usuário ou administrador, estabelecer tempos de espera e retentativas para cada fluxo de trabalho, expor contadores de desempenho, e gravar informação de registro para fins de resolução de problemas e diagnóstico.
Um fluxo de trabalho associado ao sistema de fluxo de trabalho 130 pode se comunicar com o mundo externo atra- vés de um serviço estabelecido especificamente para essa fi- nalidade, em que tal serviço pode promover eventos que ati- vidades acionadas por evento internamente ao fluxo de traba- lho conectarão. Similarmente, o serviço expõe métodos públi- cos para o fluxo de trabalho ativar e enviar dados para o hospedeiro 110. 0 fluxo de trabalho pode ser definido na forma de uma programação para execução em um sistema de com- putador. Uma programação pode incluir um conjunto de ações tendo atributos especificados de simultaneidade, dependência e transação associados às mesmas. Cada programação tem um estado de programação associado, o qual inclui uma definição da programação, o local atual dentro da programação, assim como dados e objetos ativos ou vivos associados à programa- ção. Dentro de uma programação, limites de transação podem existir com base em grupos de ação. A esse respeito, uma transação pode abranger ações individuais, ou transações, ou grupos das mesmas. Conforme discutido adicionalmente em se- guida, as ações podem ser agrupadas em seqüências, as quais são executadas na forma serial, assim como tarefas nas quais as ações são executadas simultaneamente. Com base nos agru- pamentos, portanto, atributos de simultaneidade podem ser resolvidos para as ações e transações dentro de uma progra- mação .
Conforme ilustrado na Figura 1, o componente de acesso 120 pode criar/recuperar uma ocorrência de fluxo de trabalho e prover a mesma à aplicação de hospedeiro para in- teração adicional. O componente de acesso 120 pode fornecer um meio para que a ocorrência de fluxo de trabalho para o hospedeiro 110 acesse as propriedades, métodos e eventos. Como tal, o componente de acesso 120pode prover uma ocorrên- cia de um fluxo de trabalho, em que a ocorrência de fluxo de trabalho é de um tipo de fluxo de trabalho.
O que se segue provê uma definição exemplar para o componente de acesso 120, em que o método GetWork- flow<WorkflowType> fornece um acesso para a definição de fluxo de trabalho em execução e suas propriedades especiais, métodos e eventos (por exemplo, quando o fluxo de trabalho está inativo). Tal utilização de um mecanismo de base gené- rica para (<WorkflowType>) pode tipicamente facilitar uma definição de fluxo de trabalho vigorosamente tipificada de uma maneira de tipo-seguro.
public class InteractiveWorkflow {
public event EventHandler<SuspensionEventArgs>
Suspended;
public event EventHandler<EventArgs> Completed; public InteractiveWorkflowO { }
public InteractiveWorkfIow(Guid workflowln- stanceld) { }
public InteractiveWorkfIow(WorkfIowInstance work- flowlnstance){}
public IRootActivity Workflow {get;}
public WorkflowSuspendType SuspendType { get; }
public string Interactionidentifier { get; }
public string UserName { get; }
public WorkflowType GetWorkflow<WorkflowType>() where WorkflowType : Activity
public void StartWorkflowO { }
public void ResumeWorkflow (string action) { }
public void Save() { }
}
Com referência agora à Figura 2 é ilustrado um di- agrama de blocos de um novo tipo de fluxo de trabalho 220 e propriedades especiais que são criadas a partir de uma defi- nição de fluxo de trabalho de base 210 de acordo com o as- pecto da presente inovação. 0 tipo pode ser estendido medi- ante adição de elementos de classe. Tipicamente, bloco de construção essencial em tal estrutura são Atividades, que representa uma tarefa(s) ou uma única unidade lógica de tra- balho que é realizada quando o método Executar associado é invocado pela estrutura. Cada atividade pode prover um mode- lo de objeto consistindo em propriedades, métodos e eventos que um desenvolvedor pode programar em relação ao código de aplicação, (por exemplo, similar a programar em relação a controles de UI e componentes) . Esses seis tipos diferentes de atividades, e a presente inovação, permitem que partes independentes construam atividades especiais, similares aos controles de UI e semelhante.
Por exemplo, a estrutura pode definir um conjunto núcleo de classes básicas de atividade, assim como poucas atividades especificas. Tal pode incluir: StartActivity, e StopActivity (representando pontos de partida e de parada em um fluxo de trabalho); CodeActivity (permitindo que o desen- volvedor de fluxo de trabalho implemente a funcionalidade associada com a atividade em um processador de eventos den- tro do tipo de fluxo de trabalho); ControlFlowActivity (per- mitindo que os desenvolvedores de fluxo de trabalho introdu- zam lógica de ramificação para o fluxo de trabalho com base em condições e regras) ; SuspendableActivity (permitindo que os desenvolvedores de fluxo de trabalho modelem uma suspen- são na execução do fluxo de trabalho, seja em termos de tem- po, ou mediante comutação do usuário atual, por exemplo, De- layActivity e SwitchUseActivity); InteractiveActivity (per- mitindo que os desenvolvedores de fluxo de trabalho modelem um ponto de interação de usuário, onde uma ação a partir do usuário final determina quando e como procede a execução dentro de um fluxo de trabalho) tal InteractiveActivity pode ser tratada como um tipo de SuspendableActivity que suspende a execução até que uma ação válida seja realizada); Composi- teActivity (permitindo que o desenvolvedor de fluxo de tra- balho agrupe as atividades juntas); LoopActivity (sendo um exemplo de uma CompositeActivity que repete a execução de suas atividades contidas); IMultiActionActivity: (uma inter- face sendo implementada pelas atividades que suportam múlti- plas ações, e requerem que uma dessas ações sejam seleciona- da antes da execução poder prosseguir e a InteractiveActi- vity pode implementar tal interface; ImultiResultActivity (uma interface sendo implementada por atividades que geram um de um conjunto de possíveis resultados durante sua execu- ção) e ControlFlowActivity implementa essa interface; ISus- pendableActivity (uma interface sendo implementada pelas a- tividades que podem suspender a execução do fluxo de traba- lho para um conjunto de condições especificas de espera).
O fluxo de trabalho pode iniciar a execução medi- ante a execução de StartActivity contida, e terminar quando StopActivity é executada. No andamento da execução, cada a- tividade pode ser verificada para averiguar se ela pode ser executada. Se a atividade não pode continuar a ser executada porque ela está esperando por alguma informação a partir do hospedeiro (por exemplo, mensagens, marcadores de tempo, e semelhante) o fluxo de trabalho é suspenso, por exemplo. Se uma atividade pode ser executada, um método Executar associ- ado é invocado, e seu método retorna um resultado de suces- so, a transição de atividade apropriada é usada para deter- minar a próxima atividade. Além disso, os fluxos de trabalho podem ser suspensos por um número de razões durante sua vida útil, tal como: cancelamento de uma execução de atividade, incapacidade de uma atividade em continuar a execução porque ela está esperando por alguma informação tal como mensagens, marcadores de tempo, e semelhante a partir do hospedeiro, um retardo especifico introduzido para adiar a execução subse- qüente, e comutação de contexto de usuário exigindo que exe- cução subseqüente seja realizada por um usuário diferente. Quando suspensa, a ocorrência de fluxo de trabalho pode ser serializada em um banco de dados ou armazenamento equivalen- te, a partir do qual ela pode ser subseqüentemente recupera- da, deserializada e recomeçada. Um fluxo de trabalho também pode entrar em um estado de erro, se uma execução de ativi- dade resultar em um erro, o qual não é processado.
A Figura 3 ilustra um diagrama de blocos de uma aplicação de hospedeiro de uma interação de aplicação de hospedeiro 310 com uma ocorrência de fluxo de trabalho 330, em que propriedades especiais 320 podem ser construídas so- bre uma classe de base, em que os dados estão sendo passados e para fora do fluxo de trabalho, para formar um fluxo de trabalho interativo. Durante o andamento da execução, cada atividade pode ser verificada para se averiguar se ela pode ser executada. Se a atividade não pode ser executada o fluxo de trabalho pode ser, por exemplo, suspenso. Se uma ativida- de pode ser executada, um método Executar associado pode ser invocado, e se o método retornar um resultado de sucesso, a transição de atividade apropriada é usada para determinar a próxima atividade. Conforme ilustrado a aplicação de hospe- deiro 310 pode permutar dados com a ocorrência de fluxo de trabalho 330 (por exemplo, obter dados). Isso permite uma troca de dados controlada, síncrona entre a ocorrência de fluxo de trabalho e uma aplicação de hospedeiro, em que os métodos especiais e propriedades podem ser ativados. Desse modo, a aplicação de hospedeiro 310 pode interagir com a o- corrência de fluxo de trabalho para associar um comportamen- to especial com a classe de fluxo de trabalho. Por exemplo, o hospedeiro pode subscrever para eventos especiais para a- cessar tal ocorrência de fluxo de trabalho, para manipular o fluxo de trabalho como um objeto. Além disso, tipos enrique- cidos para o fluxo de trabalho podem ser definidos programa- ticamente e/ou através de uma ferramenta visual. A Figura 4 ilustra uma metodologia relacionada de emprego de características especiais e/ou definindo uma nova definição de fluxo de trabalho, de acordo com um aspecto e- xemplar da inovação em questão. Tal definição de fluxo de trabalho nova pode ter propriedades especiais, métodos espe- ciais, eventos especiais, e semelhantes, os quais são defi- nidos a partir de uma definição de fluxo de trabalho de ba- se. Embora o método exemplar seja ilustrado e descrito aqui como uma série de blocos representativos de vários eventos e/ou ações, a inovação em questão não é limitada pela orde- nação ilustrada de tais blocos. Por exemplo, algumas ações ou eventos podem ocorrer em diferentes ordens e/ou simulta- neamente com outras ações e eventos, não considerando a or- denação ilustrada aqui, de acordo com a inovação. Além dis- so, nem todos os blocos, eventos ou ações ilustradas podem ser exigidos para se implementar uma metodologia de acordo com a inovação em questão. Além disso, será considerado que o método exemplar e outros métodos de acordo com a invenção podem ser implementados em associação com o método ilustrado e descrito aqui, assim como em associação com outros siste- mas e aparelho não ilustrados ou descritos. Inicialmente, em 410 um provedor de fluxo de trabalho é obtido, e a aplicação de hospedeiro pode então solicitar uma ocorrência de fluxo de trabalho a partir de tal provedor de fluxo de trabalho através de uma identificação associada à ocorrência de fluxo de trabalho em 420. Tal identificação identifica unicamente a ocorrência do fluxo de trabalho e pode ser gerada progra- maticamente ou atribuída pela aplicação de hospedeiro. Em 430, é realizada uma verificação para averiguar se tal ocor- rência de fluxo de trabalho existe. Se não existir, a meto- dologia pára em 435.
Caso contrário, a metodologia prossegue para a a- ção 440 em que o provedor de fluxo de trabalho pode gerar uma ocorrência do fluxo de trabalho. A aplicação de hospe- deiro pode então interagir com tal ocorrência em 450, medi- ante ativação de membros de classe tais como propriedades, métodos, eventos e semelhante em 460. A partir do término de tal interação, o processo de fluxo de trabalho pode ser sal- vo, conforme descrito em detalhe abaixo.
A Figura 5 ilustra um diagrama de seqüência exem- plar para fluxo de informação entre processos de acordo com um aspecto especifico da inovação em questão. Inicialmente, a aplicação de hospedeiro pode empregar o componente de a- cesso (por exemplo, GetWorkflow <WorkflowType>) para obter a definição de fluxo de trabalho e suas propriedades, métodos e eventos especiais (por exemplo, quando o fluxo de trabalho está inativo). Tal utilização de um mecanismo de base gené- rica para o <WorkflowType> pode tipicamente facilitar a ob- tenção de uma definição de fluxo de trabalho fortemente ti- pificada de uma maneira de tipo-seguro. As características especiais (por exemplo, fluxo de trabalho fortemente tipifi- cado) podem incluir um método(s), um evento(s), uma proprie- dade(s), uma interface e semelhantes. Conseqüentemente, o fluxo de trabalho pode ser exposto como um tipo ou classe de objeto, em que novos membros podem ser adicionados e o fluxo de trabalho estendido. Isso proporciona flexibilidade e per- mite que um usuário interaja com as propriedades especiais.
O provedor de fluxo de trabalho 510 pode cri- ar/recuperar uma ocorrência do fluxo de trabalho, e a apli- cação de hospedeiro pode interagir com tal ocorrência medi- ante ativação de membros de classe tal como propriedades, métodos, eventos e semelhantes. Como tal, com base na iden- tificação de ocorrência de fluxo de trabalho (por exemplo, número de ID) , a ocorrência de fluxo de trabalho pode então ser acessada (por exemplo, por intermédio da aplicação de hospedeiro). O hospedeiro pode interagir com a ocorrência de fluxo de trabalho através de seu comportamento especial as- sociado ao tipo/classe de fluxo de trabalho. Por exemplo, o hospedeiro pode subscrever para eventos especiais para aces- sar tal ocorrência de fluxo de trabalho, para manipular o fluxo de trabalho como um objeto. Tipos enriquecidos para a definição de fluxo de trabalho podem ser definidos programa- ticamente e/ou através de uma ferramenta visual.
A Figura 6 ilustra uma metodologia relacionada 600 para carregar uma ocorrência do fluxo de trabalho durante uma troca de dados com a aplicação de hospedeiro. Conforme ilustrado na Figura 6, acesso a um armazenador de persistên- cia é provido em 610, o qual armazena uma representação de ocorrência de fluxo de trabalho. Subseqüentemente, e em 620 a representação de estado de ocorrência de fluxo de trabalho é obtida a partir do armazenador de persistência correspon- dente. Tal representação pode ser então convertida em ocor- rências de fluxo de trabalho em 630. A seguir, e em 640 a ocorrência de fluxo e trabalho é provida à aplicação de hos- pedeiro, em que o hospedeiro pode interagir com a ocorrência de fluxo de trabalho através de seu comportamento especial associado ao tipo/classe de fluxo de trabalho. Por exemplo, o hospedeiro pode subscrever para eventos especiais para a- cessar tal ocorrência de fluxo de trabalho, para manipular o fluxo de trabalho como um objeto. Tipos enriquecidos para o fluxo de trabalho podem ser definidos programaticamente e/ou através de uma ferramenta visual.
Similarmente, e conforme ilustrado na Figura 7, para salvar uma ocorrência do fluxo de trabalho, a ocorrên- cia do fluxo de trabalho é obtida em 710. Subseqüentemente e em 720, um estado de fluxo de trabalho é gerado que é uma representação de tal ocorrência de fluxo de trabalho. A a- plicação de hospedeiro pode então interagir com tal ocorrên- cia em 725, mediante ativação dos membros de classe tais co- mo propriedades, métodos, eventos e semelhantes. Os dados relacionados a tal interação/representação podem ser então salvos no armazenador de dados e/ou implementação de serviço de persistência em 730. Como tal e em 740, um evento de sal- var tempo de execução de fluxo de trabalho pode ser ativado, em que a ocorrência de fluxo de trabalho é salva e/ou aces- sada. Desse modo, a inovação em questão permite que uma nova definição de fluxo de trabalho que tem propriedades especi- ais, métodos especiais, e eventos especiais seja definida a partir de uma definição de fluxo de trabalho de base.
O provedor de fluxo de trabalho pode cri- ar/recuperar uma ocorrência do fluxo de trabalho, e o desen- volvedor pode interagir com tal ocorrência mediante ativação dos membros de classe tal como propriedades, métodos, even- tos e semelhantes.
A Figura 8 ilustra uma metodologia especifica 800 de acessar um fluxo de trabalho em execução de acordo com um aspecto da inovação em questão. Inicialmente e em 810, a a- plicação de hospedeiro pode acessar um fluxo de trabalho em execução, mediante obtenção de uma identificação de ocorrên- cia de fluxo de trabalho. Subseqüentemente, e em 820 a ocor- rência de fluxo de trabalho pode ser acessada por intermédio de um método de carregamento de chamada, em que um arranjo tabular corresponde às ocorrências de fluxo de trabalho com identificações associadas (IDs) . A seguir, e em 830 a apli- cação de hospedeiro pode interagir com o fluxo de trabalho. Durante tal implementação e em 840, o hospedeiro pode inte- ragir com o comportamento especial do tipo de fluxo de tra- balho. Por exemplo, o hospedeiro pode subscrever para even- tos especiais para acessar tal ocorrência de fluxo de traba- lho, para manipular o fluxo de trabalho como um objeto. Ti- pos enriquecidos para o fluxo de trabalho podem ser defini- dos programaticamente e/ou através de uma ferramenta visual.
Para prover um contexto para os vários aspectos da matéria revelada, as Figuras, 9 e 10, assim como a discussão a seguir, se destinam a prover uma descrição resumida, geral de um ambiente adequado no qual os vários aspectos da maté- ria revelada podem ser implementados. Embora a matéria tenha sido descrita acima no contexto geral de instruções executá- veis por computador de um programa de computador que é exe- cutado em um computador e/ou computadores, aqueles versados na técnica reconhecerão que a invenção também pode ser im- plementada em combinação com outros módulos de programa. Ge- ralmente, o módulo de programa inclui rotinas, programas, componentes, estruturas de dados, etc. que realizam tarefas especificas e/ou implementam tipos de dados abstratos espe- cíficos. Além disso, aqueles versados na técnica considera- rão que métodos inovadores podem ser praticados com outras configurações de sistema de computador, incluindo sistemas de computador de processador único ou de múltiplos processa- dores, dispositivos de minicomputação, computadores de gran- de porte, assim como computadores pessoais, dispositivos de computação de mão (por exemplo, assistente pessoal digital (PDA), telefone, relógio...), meios eletrônicos industriais ou de consumidor baseados em microprocessador ou programá- veis, e semelhantes. Os aspectos ilustrados também podem ser praticados em ambientes de computação distribuída onde as tarefas são realizadas por dispositivos de processamento re- moto que são ligados através de uma rede de comunicação. Contudo, alguns, senão todos os aspectos da invenção podem ser praticados em computadores independentes. Em um ambiente de computação distribuída, módulos de programa podem estar localizados em dispositivos de armazenamento de memória lo- cais e remotos.
Com referência à Figura 9, um ambiente exemplar 910 para implementar vários aspectos da inovação em questão é descrito o qual inclui um computador 912. O computador 912 inclui uma unidade de processamento 914, uma memória de sis- tema 916, e um barramento de sistema 918. O barramento de sistema 918 acopla os componentes de sistema incluindo, mas não limitado a, memória de sistema 916 à unidade de proces- samento 914. A unidade de processamento 914 pode ser qual- quer um dos vários processadores disponíveis. Microprocessa- dores duais e outras estruturas de multiprocessador também podem ser empregados como a unidade de processamento 914.
O barramento de sistema 918 pode ser qualquer um de vários tipos de estrutura(s) de barramento incluindo o barramento de memória ou controlador de memória, um barra- mento periférico ou barramento externo, e/ou um barramento local utilizando qualquer variedade de arquiteturas de bar- ramento disponíveis incluindo, mas não limitadas a, barra- mento de 11 bits, Arquitetura Padrão Industrial (ISA), Ar- quitetura de Micro Canal (MAS), ISA Estendida (EISA), Ele- trônica de Acionamento Inteligente (IDE), Barramento Local VESA (VLB), Interconexão de Componentes Periféricos (PCI), Barramento Serial Universal (USB), Porta Gráfica Avançada (AGP), barramento da Associação Internacional de Cartão de Memória de Computador Pessoal (PCMCIA), e Interface de Sis- temas de Computadores Pequenos (SCSI).
A memória de sistema 916 inclui memória volátil 920 e memória não-volátil 922. 0 sistema básico de entra- da/saída (BIOS), contendo as rotinas básicas para transferir informação entre elementos dentro do computador 912, tal co- mo durante a partida, é armazenado em memória não-volátil 922. Como ilustração, e não limitação, a memória não-volátil 922 pode incluir memória de leitura (ROM), ROM programável (PROM), ROM eletricamente programável (EPROM), ROM eletrica- mente apagável (EEPROM), ou memória flash. A memória volátil 920 inclui memória de acesso aleatório (RAM), a qual atua como memória cache externa. Como ilustração e não limitação, RAM está disponível em muitas formas tais como RAM síncrona (SRAM), RAM dinâmica (DRAM), DRAM síncrona (SDRAM), SDRAM de taxa de dados dupla (DDR SDRAM), SDRAM otimizada (ESDRAM), DRAM Synchlink (SLDRAM), e RAM Rambus direta (DRRAM).
O computador 912 também inclui meios de armazena- mento de computador removiveis/não-removíveis, voláteis/não- voláteis. A Figura 9 ilustra, por exemplo, um meio de arma- zenamento de disco 924. O meio de armazenamento de disco 924 inclui, mas não é limitado aos dispositivos como uma unidade de disco magnético, unidade de disquete, unidade de fita, Jaz drive, Zip drive, LS-100 drive, cartão de memória flash, ou stick de memória. Além disso, o meio de armazenamento de disco 924 pode incluir meios de armazenamento separadamente ou em combinação com outros meios de armazenamento incluin- do, mas não limitado a uma unidade de disco ótico tal como um dispositivo ROM de disco a laser (CD-ROM), unidade de CD gravável (Unidade de CD-R), unidade de CD regravável (Unida- de de CD-RW) ou uma unidade de disco digital versátil ROM (DVD-ROM). Para facilitar a conexão dos dispositivos de ar- mazenamento de disco 924 ao barramento de sistema 918, uma interface removível ou não-removível é tipicamente usada co- mo a interface 926.
Deve ser considerado que a Figura 9 descreve soft- ware que atua como um intermediário entre usuários e os re- cursos básicos de computador descritos no ambiente de opera- ção adequado 910. Tal software inclui um sistema operacional 928. O sistema operacional 928, o qual pode ser armazenado no meio de armazenamento de disco 924, atua para controlar e alocar recursos do sistema de computador 912. As aplicações de sistema 930 tiram proveito do gerenciamento de recursos pelo sistema operacional 928 através de módulos de programa 932 e dados de programa 934 armazenados seja em uma memória de sistema 916 ou em um meio de armazenamento de disco 924. Deve ser considerado que vários componentes aqui descritos podem ser implementados com vários sistemas operacionais ou combinações de sistemas operacionais.
Um usuário introduz comandos ou informação no com- putador 912 através do dispositivo(s) de entrada 936. Os dispositivos de entrada 936 incluem, mas não são limitados a um dispositivo indicador tal como um mouse, trackball, cane- ta, mesa de toque, teclado, microfone, joystick, console de jogos, antena de prato de satélite, scanner, cartão de sin- tonizador de TV, câmera digital, câmera digital de video, câmera da Rede, e semelhantes. Esses e outros dispositivos de entrada se conectam a unidade de processamento 914 atra- vés de um barramento de sistema 918 por intermédio de por- tais) de interface 938. A porta (s) de interface 938 inclui, por exemplo, uma porta serial, uma porta paralela, uma porta de jogos, e um barramento serial universal (USB). O disposi- tivo(s) de saida 940 utiliza algum do mesmo tipo de porta que o dispositivo(s) de entrada 936. Desse modo, por exem- plo, uma porta USB pode ser usada para prover entrada ao computador 912, e para permitir informação a partir do com- putador 912 para um dispositivo de saida 940. 0 adaptador de saída 942 é provido para ilustrar que existem alguns dispo- sitivos de saída 940 como os monitores, alto-falantes, im- pressoras, entre outros dispositivos de saída 940 que reque- rem adaptadores especiais. Os adaptadores de saída 942 in- cluem, por intermédio de ilustração e não-limitação, placas de vídeo e som que proporcionam um meio de conexão entre o dispositivo de saída 940 e barramento de sistema 918. Deve ser observado que outros dispositivos e/ou sistemas de dis- positivos proporcionam ambas as capacidades de entrada e de saída tal como computador(es) remoto 944.
O computador 912 pode operar em um ambiente de re- de utilizando conexões lógicas para um ou mais computadores remotos, tal como o computador(es) remoto 944. 0 computa- dor (es) remoto 944 pode ser um computador pessoal, um servi- dor, um roteador, um PC de rede, uma estação de trabalho, um aparelho baseado em microprocessador, um dispositivo não- hierárquico ou outro nó de rede comum, e semelhante, e in- clui tipicamente muitos, ou todos os elementos descritos em relação ao computador 912. Com o propósito de brevidade, a- penas um dispositivo de armazenamento de memória 916 é ilus- trado com o computador (es) remoto 944. O computador (es) re- moto 94 4 é conectado logicamente ao computador 912 através de uma interface de rede 948 e então fisicamente conectado por intermédio da conexão de comunicação 950. A interface de rede 94 8 abrange as redes de comunicação tais como redes de área local (LAN) e redes de longo alcance (WAN). As tecnolo- gias LAN incluem Interface de Dados Distribuídos por Fibra (FDDI), Interface de Dados Distribuídos de Cobre (CDDI), E- thernet/IEEE 902.3, Token Ring/IEEE 802.5 e semelhante. As tecnologias WAN incluem, mas não são limitadas a links de ponto a ponto, redes de comutação de circuito como as Redes Digitais de Serviços Integrados (ISDN) e variações das mes- mas, redes de comutação de pacotes, e Linhas Digitais de As- sinantes (DSL).
A conexão(ões) de comunicação 950 se refere a hardware/software empregado para conectar a interface de re- de 948 ao barramento 918. Embora a conexão de comunicação 950 seja mostrada para clareza ilustrativa dentro do compu- tador 912, ela também pode ser externa ao computador 912. 0 hardware/software necessário para conexão à interface de re- de 948 inclui, apenas com o propósito de exemplo, tecnologi- as internas e externas tais como, modems incluindo modems do tipo para telefone comum, modems a cabo e modems DSL, adap- tadores ISDN, e placas Ethernet.
A Figura 10 é um diagrama esquemático de blocos de um ambiente de computação de amostra 1000 que pode ser em- pregado para implementar a implementação de fluxo de traba- lho da inovação em questão. O sistema 1000 inclui um ou mais cliente(s) 1010. O cliente (s) 1010 pode ser hardware e/ou software (por exemplo, fluxos de execução, processos, dispo- sitivos de computação). O sistema 1000 inclui também um ou mais servidores 1030. O servidor(es) 1030 também pode ser hardware e/ou software (por exemplo, fluxos de execução, processos, dispositivos de computação). Os servidores 1030 podem alojar fluxos de execução para realizar transformações mediante emprego dos componentes aqui descritos, por exem- plo. Uma possível comunicação entre um cliente 1010 e um servidor 1030 pode ser na forma de um pacote de dados adap- tado para ser transmitido entre dois ou mais processos de computador. O sistema 1000 inclui uma estrutura de comunica- ção 1050 que pode ser empregada para facilitar as comunica- ções entre o cliente (s) 1010 e o servidor(es) 1030. O clien- te (s) 1010 é conectado operativamente a um ou mais meio(s) de armazenamento de dados de cliente 1060 que podem ser em- pregados para armazenar informação local para o cliente(s) 1010. Similarmente, o servidor(es) 1030 é conectado operati- vamente a um ou mais meio(s) de armazenamento de dados de servidor 1040 que podem ser empregados para armazenar infor- mação local para o servidor 1030.
O que foi descrito acima inclui vários aspectos exemplares. Evidentemente não é possível descrever cada com- binação concebível de componentes ou metodologias com o pro- pósito de descrever esses aspectos, mas aqueles versados na técnica podem reconhecer que muitas combinações e permuta- ções adicionais são possíveis. Conseqüentemente, os aspectos aqui descritos pretendem abranger todas as tais alterações, modificações e variações abrangidas pelo espírito e escopo das reivindicações anexas. Além disso, até o ponto em que o termo "inclui" é usado seja na descrição detalhada ou nas reivindicações, pretende-se que tal termo seja inclusivo de uma maneira similar ao termo "compreendendo" conforme "com- preendendo" é interpretado quando empregado como uma palavra transicional em uma reivindicação.

Claims (12)

1. Sistema implementado em computador CARACTERIZADO por compreender os seguintes componentes exe- cutáveis por computador: um componente de acesso (120) que provê um hospe- deiro (110) com acesso a uma ocorrência de fluxo de traba- lho; e o hospedeiro (110) que chama recursos especiais durante uma troca de dados com a ocorrência de fluxo de tra- balho.
2. Sistema implementado em computador, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que os re- cursos especiais são pelo menos um de métodos, propriedades e eventos para fluxos de trabalho fortemente tipificados.
3. Sistema implementado em computador, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que um fluxo de trabalho associado à ocorrência de fluxo de traba- lho pode ser exposto como um tipo ou classe de objeto.
4. Sistema implementado em computador, de acordo com a reivindicação 3, CARACTERIZADO por uma definição do fluxo de trabalho que pode ser estendido por intermédio de adições de novos membros.
5. Sistema implementado em computador, de acordo com a reivindicação 1, CARACTERIZADO por uma definição do fluxo de trabalho especial associada a uma ocorrência de fluxo de trabalho que pode ser suspensa durante a troca de dados com o hospedeiro.
6. Sistema implementado em computador, de acordo com a reivindicação 5, CARACTERIZADO por compreender ainda um provedor de fluxo de trabalho que recupera a ocorrência de fluxo de trabalho.
7. Sistema implementado em computador, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a o- corrência de fluxo de trabalho pode ser reassumivel mediante uma ação do hospedeiro.
8. Sistema implementado em computador, de acordo com a reivindicação 5, CARACTERIZADO por uma definição de fluxo de trabalho com uma classe base para derivar uma nova definição de fluxo de trabalho a partir da mesma.
9. Método implementado por computador CARACTERIZADO por compreender as seguintes ações executáveis por computador: acessar uma ocorrência de fluxo de trabalho por intermédio de um componente de acesso do sistema de fluxo de trabalho; e chamar recursos especiais durante uma troca de da- dos entre um hospedeiro e a ocorrência de fluxo de trabalho.
10. Método implementado por computador, de acordo com a reivindicação 9, CARACTERIZADO por compreender ainda solicitar a ocorrência de fluxo de trabalho com base na i- dentificação associada a ela.
11. Método implementado por computador, de acordo com a reivindicação 10, CARACTERIZADO por compreender ainda verificar a existência da ocorrência de fluxo de trabalho.
12. Método implementado por computador, de acordo com a reivindicação 9, CARACTERIZADO por compreender ainda
BRPI0620869-0A 2005-12-29 2006-12-07 modelo de objeto em fluxo de trabalho BRPI0620869A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/321,820 US20070156487A1 (en) 2005-12-29 2005-12-29 Object model on workflow
US11/321.820 2005-12-29
PCT/US2006/047220 WO2007078668A1 (en) 2005-12-29 2006-12-07 Object model on workflow

Publications (1)

Publication Number Publication Date
BRPI0620869A2 true BRPI0620869A2 (pt) 2011-11-29

Family

ID=38225704

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0620869-0A BRPI0620869A2 (pt) 2005-12-29 2006-12-07 modelo de objeto em fluxo de trabalho

Country Status (8)

Country Link
US (1) US20070156487A1 (pt)
EP (1) EP1966688A4 (pt)
JP (1) JP2009522647A (pt)
KR (1) KR20080087802A (pt)
CN (1) CN101317153B (pt)
BR (1) BRPI0620869A2 (pt)
RU (1) RU2008126264A (pt)
WO (1) WO2007078668A1 (pt)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
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
US8001429B2 (en) * 2006-09-25 2011-08-16 International Business Machines Corporation Method and system for automated handling of errors in execution of system management flows consisting of system management tasks
US20090249293A1 (en) * 2008-03-31 2009-10-01 International Business Machines Corporation Defining Workflow Processing Using a Static Class-Level Network in Object-Oriented Classes
US10169199B2 (en) 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
US8265980B2 (en) * 2009-04-21 2012-09-11 International Business Machines Corporation Workflow model for coordinating the recovery of IT outages based on integrated recovery plans
US20100299631A1 (en) * 2009-05-22 2010-11-25 Weihsiung William Chow Prompt for User Input on All Workflow Activities Before Workflow Execution
US10078674B2 (en) * 2010-06-04 2018-09-18 Mcl Systems Limited Integrated workflow and database transactions
US8522256B2 (en) * 2010-10-12 2013-08-27 Microsoft Corporation Hosting non-messaging workflows in a messaging host
US9536264B2 (en) * 2011-11-14 2017-01-03 Microsoft Technology Licensing, Llc Host agnostic messaging in a continuation based runtime
CN102915477A (zh) * 2012-09-17 2013-02-06 北京中电普华信息技术有限公司 一种工作流活动节点参与者扩展方法及装置
US8606599B1 (en) 2013-01-03 2013-12-10 Medidata Solutions, Inc. Apparatus and method for executing tasks
JP5924351B2 (ja) 2014-01-23 2016-05-25 コニカミノルタ株式会社 情報端末、印刷システム、印刷システムの制御方法、およびプログラム
US10504075B2 (en) * 2014-03-10 2019-12-10 Aliaswire, Inc. Methods, systems, and devices to dynamically customize electronic bill presentment and payment workflows
US9639830B2 (en) * 2014-03-10 2017-05-02 Aliaswire, Inc. Methods, systems, and devices to dynamically customize electronic bill presentment and payment workflows
GB201417262D0 (en) * 2014-09-30 2014-11-12 Bizagi Group Contextual workflow management
US10664350B2 (en) * 2016-12-14 2020-05-26 Vmware, Inc. Failure handling for lifecycle blueprint workflows
US11231912B2 (en) 2016-12-14 2022-01-25 Vmware, Inc. Post-deployment modification of information-technology application using lifecycle blueprint
US11231910B2 (en) 2016-12-14 2022-01-25 Vmware, Inc. Topological lifecycle-blueprint interface for modifying information-technology application
US11249803B2 (en) * 2019-03-11 2022-02-15 Nec Corporation Usecase specification and runtime execution
US11483412B2 (en) * 2020-12-30 2022-10-25 Blackberry Limited Method for marshalling events in a publish-subscribe system

Family Cites Families (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5490097A (en) * 1993-03-22 1996-02-06 Fujitsu Limited System and method for modeling, analyzing and executing work process plans
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
JP2666755B2 (ja) * 1995-01-11 1997-10-22 日本電気株式会社 ワークフローシステム
US7069451B1 (en) * 1995-02-13 2006-06-27 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5999911A (en) * 1995-06-02 1999-12-07 Mentor Graphics Corporation Method and system for managing workflow
US6272672B1 (en) * 1995-09-06 2001-08-07 Melvin E. Conway Dataflow processing with events
DE19705955A1 (de) * 1996-03-29 1997-10-02 Ibm Verfahren zum Generieren einer Implementierung eines Workflow-Prozessmodells in einer Objektumgebung
AU2453797A (en) * 1996-04-10 1997-10-29 Paul M. Konnersman Computer-based system for work processes that consist of interdependent decisions involving one or more participants
JPH10105623A (ja) * 1996-09-27 1998-04-24 Hitachi Ltd 階層型ワークフロー管理方法及びワークフロー書類回覧方法
US6041306A (en) * 1996-12-05 2000-03-21 Hewlett-Packard Company System and method for performing flexible workflow process execution in a distributed workflow management system
JPH10207939A (ja) * 1997-01-17 1998-08-07 Nec Corp ワークフローシステム
EP0854431A3 (en) * 1997-01-20 2001-03-07 International Business Machines Corporation Events as activities in process models of workflow management systems
US6047260A (en) * 1997-06-05 2000-04-04 Attention Control Systems, Inc. Intelligent planning and calendaring system with cueing feature and floating tasks
US5960404A (en) * 1997-08-28 1999-09-28 International Business Machines Corp. Mechanism for heterogeneous, peer-to-peer, and disconnected workflow operation
US5999910A (en) * 1997-10-06 1999-12-07 Fmr Corp. Processing a workflow item
US6339838B1 (en) * 1998-01-02 2002-01-15 At&T Corp. Control of commercial processes
US6230197B1 (en) * 1998-09-11 2001-05-08 Genesys Telecommunications Laboratories, Inc. Method and apparatus for rules-based storage and retrieval of multimedia interactions within a communication center
JPH11306244A (ja) * 1998-04-16 1999-11-05 Hitachi Ltd ワーク管理システム
US6134559A (en) * 1998-04-27 2000-10-17 Oracle Corporation Uniform object model having methods and additional features for integrating objects defined by different foreign object type systems into a single type system
US6430538B1 (en) * 1998-04-30 2002-08-06 Enterworks Workflow management system, method and medium with personal subflows
US6442528B1 (en) * 1998-06-05 2002-08-27 I2 Technologies Us, Inc. Exemplar workflow used in the design and deployment of a workflow for multi-enterprise collaboration
US6397191B1 (en) * 1998-06-05 2002-05-28 I2 Technologies Us, Inc. Object-oriented workflow for multi-enterprise collaboration
US6282531B1 (en) * 1998-06-12 2001-08-28 Cognimed, Llc System for managing applied knowledge and workflow in multiple dimensions and contexts
US6772407B1 (en) * 1998-10-02 2004-08-03 International Business Machines Corporation Staging objects in workflow management systems
US6820118B1 (en) * 1999-01-20 2004-11-16 International Business Machines Corporation Method and system for providing a linkage between systems management systems and applications
DE10003015A1 (de) * 1999-02-06 2000-08-17 Ibm Die Erzeugung von Ereignis-Bedingungs-Aktions-Regeln aus Prozessmodellen
US6499023B1 (en) * 1999-02-19 2002-12-24 Lucent Technologies Inc. Data item evaluation based on the combination of multiple factors
US6473794B1 (en) * 1999-05-27 2002-10-29 Accenture Llp System for establishing plan to test components of web based framework by displaying pictorial representation and conveying indicia coded components of existing network framework
US6539396B1 (en) * 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
US6434568B1 (en) * 1999-08-31 2002-08-13 Accenture Llp Information services patterns in a netcentric environment
US6769113B1 (en) * 1999-10-08 2004-07-27 International Business Machines Corporation Enterprise process models and enterprise application for information technologies
KR100377189B1 (ko) * 1999-12-24 2003-03-28 한국전자통신연구원 워크플로우 시스템과 어플리케이션간의 데이터 교환시스템 및 그 방법
US6968503B1 (en) * 2000-03-09 2005-11-22 Quovadx, Inc. XML user interface for a workflow server
US7503033B2 (en) * 2000-04-28 2009-03-10 Microsoft Corporation Model for business workflow processes
US6772216B1 (en) * 2000-05-19 2004-08-03 Sun Microsystems, Inc. Interaction protocol for managing cross company processes among network-distributed applications
US6922685B2 (en) * 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
JP2001356907A (ja) * 2000-06-09 2001-12-26 Ibm Japan Ltd 処理コード情報を有するデータベース・システムおよび情報処理システム
US7219304B1 (en) * 2000-06-19 2007-05-15 International Business Machines Corporation System and method for developing and administering web applications and services from a workflow, enterprise, and mail-enabled web application server and platform
US6854016B1 (en) * 2000-06-19 2005-02-08 International Business Machines Corporation System and method for a web based trust model governing delivery of services and programs
US6859217B2 (en) * 2000-07-19 2005-02-22 Microsoft Corporation System and method to display and manage data within hierarchies and polyarchies of information
US20020038450A1 (en) * 2000-08-03 2002-03-28 International Business Machines Corporation Method and system to run stored procedures as workflow activity implementations
AU2001286848A1 (en) * 2000-08-28 2002-03-13 Michael D. Harold System and method for transmitting and retrieving data via a distributed persistence framework
US20020188597A1 (en) * 2000-09-01 2002-12-12 Jonathan Kern Methods and systems for linking tasks to workflow
US7027997B1 (en) * 2000-11-02 2006-04-11 Verizon Laboratories Inc. Flexible web-based interface for workflow management systems
US7653566B2 (en) * 2000-11-30 2010-01-26 Handysoft Global Corporation Systems and methods for automating a process of business decision making and workflow
US6801227B2 (en) * 2001-01-16 2004-10-05 Siemens Medical Solutions Health Services Inc. System and user interface supporting user navigation and concurrent application operation
US6675133B2 (en) * 2001-03-05 2004-01-06 Ncs Pearsons, Inc. Pre-data-collection applications test processing system
US6966049B2 (en) * 2001-04-24 2005-11-15 Heuristics Physics Laboratories, Inc. Software development tool employing workflows for developing user interactive programs
JP2002324155A (ja) * 2001-04-26 2002-11-08 Hitachi Ltd ワークフロー・システムおよびプログラム
US6941514B2 (en) * 2001-04-30 2005-09-06 Bellsouth Intellectual Property Corporation System and method for priority-based work order scheduling
US6983421B1 (en) * 2001-06-22 2006-01-03 I2 Technologies Us, Inc. Using connectors to automatically update graphical user interface elements at a client system according to an updated state of a configuration
US7100147B2 (en) * 2001-06-28 2006-08-29 International Business Machines Corporation Method, system, and program for generating a workflow
US7069536B2 (en) * 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
GB2377779A (en) * 2001-07-18 2003-01-22 Hewlett Packard Co Computer apparatus for implementing a workflow with graphical representation
US20030023622A1 (en) * 2001-07-27 2003-01-30 Liaison Technology, Inc. Manual activity persistence in content management workflow systems
AU2002355575A1 (en) * 2001-08-08 2003-02-24 Trivium Systems Inc. Scalable messaging platform for the integration of business software components
US20030078975A1 (en) * 2001-10-09 2003-04-24 Norman Ken Ouchi File based workflow system and methods
WO2003044661A1 (en) * 2001-10-18 2003-05-30 Bea Systems, Inc. System and method for implementing a service adapter
US20030090514A1 (en) * 2001-10-23 2003-05-15 Cole Douglas J. Business process user interface generation system and method
US7389335B2 (en) * 2001-11-26 2008-06-17 Microsoft Corporation Workflow management based on an integrated view of resource identity
US7370335B1 (en) * 2001-11-29 2008-05-06 Vignette Corporation System and method for providing a public application program interface
US7865867B2 (en) * 2002-03-08 2011-01-04 Agile Software Corporation System and method for managing and monitoring multiple workflows
US20030217054A1 (en) * 2002-04-15 2003-11-20 Bachman George E. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution
US7627631B2 (en) * 2002-05-02 2009-12-01 Bea Systems, Inc. Systems and methods for collaborative business plug-ins
US7149747B1 (en) * 2002-06-27 2006-12-12 Siebel Systems, Inc. Dynamic generation of user interface components
US20040046789A1 (en) * 2002-08-23 2004-03-11 Angelo Inanoria Extensible user interface (XUI) framework and development environment
US20040078105A1 (en) * 2002-09-03 2004-04-22 Charles Moon System and method for workflow process management
WO2004038556A2 (en) * 2002-10-23 2004-05-06 David Theiler Method and apparatus for managing workflow
US20040103014A1 (en) * 2002-11-25 2004-05-27 Teegan Hugh A. System and method for composing and constraining automated workflow
US7272820B2 (en) * 2002-12-12 2007-09-18 Extrapoles Pty Limited Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity
US7171664B2 (en) * 2002-12-16 2007-01-30 International Business Machines Corporation Content management system and method of employing extensible workflow entities with user-defined attributes in an object-oriented framework
US7711694B2 (en) * 2002-12-23 2010-05-04 Sap Ag System and methods for user-customizable enterprise workflow management
US7409674B2 (en) * 2002-12-26 2008-08-05 Research In Motion Limited System and method of creating and communicating with component based wireless applications
US7555538B2 (en) * 2002-12-26 2009-06-30 Research In Motion Limited System and method for building and execution of platform-neutral generic services' client applications
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
US6839062B2 (en) * 2003-02-24 2005-01-04 Microsoft Corporation Usage semantics
US20050022164A1 (en) * 2003-02-25 2005-01-27 Bea Systems, Inc. Systems and methods utilizing a workflow definition language
US20050044173A1 (en) * 2003-02-28 2005-02-24 Olander Daryl B. System and method for implementing business processes in a portal
US7876705B2 (en) * 2003-06-25 2011-01-25 Schlumberger Technology Corporation Method and apparatus and program storage device for generating a workflow in response to a user objective and generating software modules in response to the workflow and executing the software modules to produce a product
JP2005050318A (ja) * 2003-07-16 2005-02-24 Ricoh Co Ltd ワークフロー管理装置、ワークフロー管理方法、ワークフロー管理プログラム及び記録媒体
JP2005063253A (ja) * 2003-08-18 2005-03-10 Knowledge Works:Kk クリニカルフロー実行方法、及び、クリニカルフロー実行システム
CA2443454A1 (en) * 2003-09-11 2005-03-11 Teamplate Inc. Data binding method in workflow system
US20050096959A1 (en) * 2003-10-31 2005-05-05 Microsoft Corporation Rule engine method and system
US7698383B2 (en) * 2004-02-27 2010-04-13 Research In Motion Limited System and method for building component applications using metadata defined mapping between message and data domains
US20050203757A1 (en) * 2004-03-11 2005-09-15 Hui Lei System and method for pervasive enablement of business processes
US7881233B2 (en) * 2004-09-01 2011-02-01 Cisco Technology, Inc. Techniques for planning a conference using location data
US7506001B2 (en) * 2006-11-01 2009-03-17 I3Solutions Enterprise proposal management system
US20100324948A1 (en) * 2009-06-18 2010-12-23 Microsoft Corporation Managing event timelines

Also Published As

Publication number Publication date
EP1966688A4 (en) 2010-01-20
US20070156487A1 (en) 2007-07-05
CN101317153B (zh) 2012-07-04
CN101317153A (zh) 2008-12-03
JP2009522647A (ja) 2009-06-11
KR20080087802A (ko) 2008-10-01
EP1966688A1 (en) 2008-09-10
RU2008126264A (ru) 2010-01-10
WO2007078668A1 (en) 2007-07-12

Similar Documents

Publication Publication Date Title
BRPI0620869A2 (pt) modelo de objeto em fluxo de trabalho
US9710773B2 (en) Modeling user input and interaction in workflow based applications
US11310165B1 (en) Scalable production test service
RU2433463C2 (ru) Динамическое перепозиционирование потока работ конечными пользователями
US10565095B2 (en) Hybrid testing automation engine
WO2020233037A1 (zh) 数据处理方法、装置及存储介质
BRPI0618982A2 (pt) esquemas de persistência de fluxo de trabalho simultáneos múltiplos
US9588822B1 (en) Scheduler for data pipeline
US7818410B1 (en) System and method of implementing major application migration
US8171481B2 (en) Method and system for scheduling jobs based on resource relationships
US10785129B2 (en) Computerized methods and systems for maintaining and modifying cloud computer services
US20070150852A1 (en) Application template creation and management
CN101159596A (zh) 用于布置服务器的方法和设备
JP2022097438A (ja) ロボティックプロセスオートメーション(rpa)ロボットの動的クラウドデプロイメント
JP2008186461A (ja) マルチソース・スプレッド・データを同期させるためのシステム、方法、およびプログラム
Tankov et al. Kotless: A serverless framework for kotlin
US20240054026A1 (en) Federated distributed mutation
EP4354281A1 (en) Converting an api into a graph api
Salama Energy-efficient cloud computing application solutions and architectures
CN116932372A (zh) 为工作流自动化平台插件生成用户界面(ui)自动化测试用例
CN115454494A (zh) 基于事件流机制的内容管理系统的实现方法、系统及介质

Legal Events

Date Code Title Description
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 7A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2261 DE 06/05/2014.