BRPI0618302A2 - modelagem da entrada do usuário e interação em aplicativos baseados em fluxo de trabalho - Google Patents

modelagem da entrada do usuário e interação em aplicativos baseados em fluxo de trabalho Download PDF

Info

Publication number
BRPI0618302A2
BRPI0618302A2 BRPI0618302-6A BRPI0618302A BRPI0618302A2 BR PI0618302 A2 BRPI0618302 A2 BR PI0618302A2 BR PI0618302 A BRPI0618302 A BR PI0618302A BR PI0618302 A2 BRPI0618302 A2 BR PI0618302A2
Authority
BR
Brazil
Prior art keywords
workflow
computer
host
implemented method
implemented
Prior art date
Application number
BRPI0618302-6A
Other languages
English (en)
Inventor
Dandres Sanabria
Constantin Mihai
Nikhil Kothari
Israel Helerio
Michael Harder
Paul 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=38225702&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=BRPI0618302(A2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of BRPI0618302A2 publication Critical patent/BRPI0618302A2/pt
Publication of BRPI0618302A8 publication Critical patent/BRPI0618302A8/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work

Landscapes

  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Educational Administration (AREA)
  • Development Economics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

MODELAGEM DA ENTRADA DO USUáRIO E INTERAçAO EM APLICATIVOS BASEADOS EM FLUXO DE TRABALHO Trata-se de sistemas e métodos que implementam interatividade como parte do próprio fluxo de trabalho. Dados são passados para dentro e para fora do fluxo de trabalho para formar um fluxo de trabalho interativo, por meio do uso de um componente de atividade interativa. Tal componente de atividade interativa modela pontos de suspensão dentro de uma definição de fluxo de trabalho, em que a entrada do usuário e a interação associada podem ser fornecidas para o fluxo de trabalho durante vários intervalos de interatividade que exigem a entrada do usuário. Tal esquema permite uma troca de dados controlada/síncrona entre o fluxo de trabalho e um aplicativo hospedeiro associado a ele.

Description

"MODELAGEM DA ENTRADA DO USUÁRIO E INTERAÇÃO EMAPLICATIVOS BASEADOS EM FLUXO DE TRABALHO"
ANTECEDENTES DA INVENÇÃO
Em geral, "fluxo de trabalho" refere-se ao fluxode informações e controle dentro de organizações. As empre-sas empenham-se continuamente em definir, documentar e mo-dernizar tais processos a fim de competir solidamente. Emuma configuração comercial, esses processos incluem o pro-cessamento de vendas e pedidos, tarefas de compra, controlee gerenciamento de estoque, controle de fabricação e produ-ção, envio e recebimento, contas a pagar, entre outros.
Os sistemas de computadores e software associadosagora oferecem ferramentas com as quais as empresas e outrasorganizações podem aperfeiçoar seu fluxo de trabalho. Asferramentas de software podem ser usadas para moldar os pro-cessos ou programações de fluxo de trabalho comercial e i-dentificar ineficiências e possíveis aperfeiçoamentos. Alémdisso, quando um processo envolve a troca de dados entrepessoas, departamentos, instalações ou mesmo entre companhi-as separadas, sistemas e redes de computadores podem ser u-sados para aperfeiçoar essas trocas. Tais sistemas e ferra-mentas de software são capazes, ainda, de aperfeiçoar cálcu-los em grande escala e o processamento de outros dados ouinformações que costumam estar associados a informações re-lacionadas ao comércio.
Sendo assim, o gerenciamento do fluxo de trabalhoinclui o gerenciamento eficaz do fluxo e controle de infor-mações nos processos comerciais de uma organização, em que aautomação de tal processamento de informações levou a muitosaperfeiçoamentos eficazes no mundo comercial moderno. Alémdo mais, atualmente, tal automação do gerenciamento do fluxode trabalho permite ainda que empresas e outras organizaçõesaperfeiçoem ainda mais o desempenho ao executar as transa-ções de fluxo de trabalho em sistemas de computadores, in-clusive redes mundiais de computadores, tal como a Internet.
Um típico aplicativo baseado em fluxo de trabalhogeralmente requer que várias condições sejam satisfeitas.Por exemplo, uma dessas condições é a capacidade de tomardecisões com base em regras comerciais. Isso pode incluirregras simples, (por exemplo, como uma decisão entre "sim"ou "não" com base no resultado de uma verificação de crédi-to) , e regras mais complexas, (por exemplo, o conjunto pos-sivelmente grande que deve ser avaliado para tomar uma deci-são de subscrição inicial). Outra condição é a comunicaçãocom outros softwares e outros sistemas fora do fluxo de tra-balho. Por exemplo, um pedido inicial pode ser recebido apartir de uma parte do aplicativo, enquanto alguns aspectos,(por exemplo, contatar um serviço de crédito), podem exigircomunicação usando outros serviços ou tecnologias da Rede(Web). Uma condição adicional a ser satisfeita é a interaçãoapropriada do fluxo de trabalho com os usuários. Por exem-plo, o fluxo de trabalho normalmente deve ser capaz de exi-bir uma interface com o usuário própria ou interagir com se-res humanos por meio de outros softwares. Ademais, a capaci-dade de manter o estado durante todo o tempo de existênciado fluxo de trabalho é outra condição que precisa ser satis-feita. Portanto, a criação e execução de um fluxo de traba-lho em software representam desafios únicos.
Por exemplo, alguns processos comerciais podem le-var horas, dias ou semanas para serem completados, sendo ne- cessário manter informações sobre o estado atual do fluxo detrabalho durante todo esse tempo. Além disso, esse tipo defluxo de trabalho prolongado normalmente também se comunicacom outros softwares sem o uso de blocos, e uma comunicaçãoassincrona pode representar dificuldades. Ao mesmo tempo, embora a moldagem de interações fixas entre softwares sejarelativamente direta, os consumidores tendem a exigir cons-tantemente flexibilidade adicional, tal como o recurso demudar um processo comercial dinamicamente. A manipulação dediversos aplicativos pode também agravar as complexidades envolvidas na criação e no gerenciamento do fluxo de traba-lho.
Muitos aplicativos para ferramentas de fluxo detrabalho são internos a uma empresa ou organização.
Com a chegada dos computadores em rede com modems ou outros tipos de ligações de comunicação, os sistemas decomputadores em locais remotos agora podem se comunicar comfacilidade entre si. Tal comunicação avançada permite queaplicativos de fluxo de trabalho de sistemas de computadoressejam usados entre instalações remotas dentro de uma compa-nhia. Um exemplo inclui encaminhar o pedido de um cliente apartir de uma sede comercial para um escritório de vendasremoto para verificação pelo vendedor apropriado, e retornaruma verificação para a sede. Os aplicativos de fluxo de tra-balho também podem ser de especial utilidade no processamen-to de transações comerciais entre diferentes companhias. Emum aplicativo típico, duas companhias, com uma relação com-prador-vendedor, podem desejar automatizar a geração e oprocessamento de pedidos de venda, transporte de produtos,faturamento e cobrança.
Por exemplo, um aplicativo direcionado a um pro-blema específico, tal como a gestão de relacionamento com ocliente (CRM), ou a um mercado vertical específico, tal comoserviços financeiros, pode ser construído em torno de umfluxo de trabalho. Esse tipo de aplicativo normalmente im-plementa uma série de processos comerciais diferentes. Aconstrução da lógica que orienta esses processos em uma basede fluxo de trabalho comum, tal como o Windows WorkflowFoundation, pode tornar o aplicativo mais rápido de se cons-truir, mais ágil de ser alterado e mais fácil de ser perso-nalizado. Além disso, a automatização de tais processos poderesultar em melhora significativa na eficácia, que, de outraforma, não seria possível. No entanto, tal aplicativo inter-companhia de tecnologia de fluxo de trabalho requer a coope-ração das companhias, a criação de interface apropriada e aimplementação do serviço de persistência adequado dos siste-mas de computadores e aplicativos existentes em uma compa-nhia individual.
Até o presente momento, foram desenvolvidas ferra-mentas de aplicativo de fluxo de trabalho que oferecem algu-ma capacidade para automatizar o fluxo de trabalho comercialpela definição de programações de fluxo de trabalho. Por e-xemplo, um comprador pode desejar transmitir um número depedido de compra junto com uma lista de produtos sendo com-prados a um vendedor, e o vendedor pode desejar respondercom uma confirmação do pedido e uma data de envio esperada.Tal tipo de transação pode envolver um consumidor geral com-prando produtos de um revendedor, ou, como alternativa, duasgrandes pessoas jurídicas que fazem negócios regularmente.Os dados associados ao pedido e à confirmação podem ser re-lativamente pequenos e o tempo de transmissão para os dadospode ser da ordem de frações de segundo. Um aplicativo deprogramação de fluxo de trabalho em execução em um sistemade computador pode alocar recursos de sistema para a transa-ção durante sua pendência, que geralmente é muito curta.
No entanto, a modelagem de uma interação do usuá-rio dentro de um fluxo de trabalho apresenta dificuldades.Em particular, quando pessoas estão envolvidas , um fluxo detrabalho pode levar um longo tempo para ser completado, e aconstrução de sistemas escalonáveis requer a desativação dofluxo de trabalho para a interação com o usuário. Além domais, orientar uma interface com o usuário (IU) baseando-seno estado do fluxo de trabalho, independente do tipo de a-plicativo, pode aumentar ainda mais as complexidades envol-vidas .
Portanto, há a necessidade de se superar as defi-ciências exemplificativas supramencionadas associadas aossistemas e dispositivos convencionais.
SUMÁRIO
A seguir, será apresentado um sumário simplificadoa fim de oferecer uma explicação básica de alguns aspectosda matéria reivindicada. Esse sumário não se trata de umavisão geral extensiva. Não há a intenção de identificar ele-mentos chave/cruciais ou de delinear o âmbito da matériareivindicada. Sua única finalidade é a de apresentar algunsconceitos da invenção, de forma simplificada, para servir deprelúdio à descrição mais detalhada apresentada mais adian-te .
A invenção reivindicada refere-se a sistemas e mé-todos que implementam interatividade/entrada do usuário comoparte de um fluxo de trabalho em si, em que os dados sãopassados para dentro e para fora do fluxo de trabalho a fimde formar um fluxo de trabalho interativo por meio do empre-go de um componente de atividade interativa. Tal componentede atividade interativa modela pontos de suspensão dentro deuma definição do fluxo de trabalho, e não depende de um tipode aplicativo com o intuito de abranger aplicativos de ser-viço de Rede, de console, de área de trabalho, serviços deRede, entre outros. Sendo assim, a entrada do usuário e ainteração associada podem ser fornecidas ao fluxo de traba-lho durante vários intervalos de interatividade que solici-tam a entrada de usuário para permitir uma troca de dadoscontrolada/sincrona entre o fluxo de trabalho e um aplicati-vo hospedeiro associado ao fluxo de trabalho. Desse modo, emmomentos definidos dentro da execução do fluxo de trabalho,o contexto do usuário pode ser associado a uma instância dofluxo de trabalho.
Em um aspecto relacionado, o componente de ativi-dade interativa e os pontos de suspensão podem relacionar-seà alternância dos usuários do fluxo de trabalho. Por exem-plo, o fluxo de trabalho pode orientar a Interface com o U-suário (IU) com base no estado do fluxo de trabalho durantea suspensão, tal como informações relacionadas ao usuário dofluxo de trabalho. Dessa forma, um fluxo de trabalho intera-tivo é apresentado, que executa até pontos específicos, eenvia uma resposta ao aplicativo hospedeiro. Ademais, o a-plicativo hospedeiro pode alterar a aparência do fluxo detrabalho com base no estado de suspensão. Um tipo de fluxode trabalho pode ser definido (por exemplo, por meio de pro-gramação ou de uma ferramenta visual), e o aplicativo hospe-deiro pode inscrever-se em eventos de suspensão para ofere-cer um gancho dentro da execução do fluxo de trabalho. 0(s)evento(s) de suspensão pode(m) então ser construído(s) e ba-seado (s) nas informações de tal(is) evento(s) (por exemplo,informações com respeito ao usuário atual do fluxo de tra-balho) ; a aparência da IU pode ser alterada. Sendo assim, osdados podem ser passados para dentro e para fora de umaclasse do fluxo de trabalho, e aspectos personalizados podemser definidos para interação durante o tempo de execução(por exemplo, fluxo de trabalho fortemente tipificado).
Por exemplo, no contexto de um relatório de despe-sas, um usuário inicial pode iniciar um fluxo de trabalho derelatório de despesas, e um usuário responsável pela aprova-ção pode então aprovar tal relatório de despesas. Sendo as-sim, um processo pode ser abstraído na classe do fluxo detrabalho, em que o processo e a classe do fluxo de trabalhoestão sendo executados até um ponto em que se deve envolverum responsável pela aprovação. Nesse ponto, a interação dousuário inicial é interrompida. 0 responsável pela aprovaçãoentão abre o aplicativo (por exemplo, a partir de uma máqui-na diferente) para executar o fluxo de trabalho e retomar ainstância do fluxo de trabalho com a ação especificada peloresponsável pela aprovação (por exemplo, aprovar, desapro-var, entre outros). Desse modo, é possível passar os dadospara dentro e para fora da instância do fluxo de trabalho empontos de suspensão durante o tempo de existência da instân-cia do fluxo de trabalho.
De acordo com uma metodologia da presente inven-ção, é possível analisar uma ação no fluxo de trabalho paraverificar se ele corresponde a uma atividade interativa. Ca-so corresponda, o fluxo de trabalho é suspenso. Logo após,um evento de suspensão é criado e comunicado ao hospedeiro.Como tal, e enquanto a instância do fluxo de trabalho esti-ver suspensa, os dados são obtidos do hospedeiro e passadospara dentro e/ou para fora do fluxo de trabalho. Além disso,se os dados obtidos do hospedeiro indicarem um evento reto-mado, então o fluxo de trabalho pode ser retomado. O fluxode trabalho também pode ser carregado com base em uma iden-tificação da instância do fluxo de trabalho (por exemplo,por meio de um componente de consulta). O evento retomadopode ser recebido pelo fluxo de trabalho e executado paraalcançar a próxima etapa do processo.
Para a realização dos fins citados e relacionados,certos aspectos ilustrativos da matéria reivindicada sãodescritos neste documento em relação à descrição seguinte eaos desenhos anexos. Esses aspectos indicam várias formas emque a matéria reivindicada pode ser praticada, todas asquais devem estar dentro do âmbito da matéria reivindicada.
Outras vantagens e aspectos novos irão transparecer na des-crição detalhada seguinte, ao ser considerada em combinaçãocom os desenhos.
BREVE DESCRIÇÃO DOS DESENHOS
A Fig. 1 ilustra um diagrama de sistema exemplifi-cativo de um aplicativo hospedeiro que interage com um fluxode trabalho, por meio de um componente de atividade intera-tiva .
A Fig. 2 ilustra a execução de um fluxo de traba-lho com vários pontos de suspensão que solicitam interaçãocom um usuário e/ou hospedeiro.
As Figs. 3 e 4 ilustram um fluxograma especificopara um relatório de despesas com pontos de suspensão, deacordo com um aspecto exemplificativo da presente invenção.
A Fig. 5 ilustra uma interface gráfica exemplifi-cativa empregada para a apresentação de várias ações execu-tadas durante a execução do fluxo de trabalho.
A Fig. 6 ilustra uma troca de dados entre uma ins-tância do fluxo de trabalho e o aplicativo hospedeiro, deacordo com um aspecto da presente invenção.
As Figs. 7 a 9 ilustram uma metodologia exemplifi-cativa do fluxo de execução do fluxo de trabalho, de acordocom um aspecto da presente invenção.
A Fig. 10 ilustra um ambiente exemplificativo paraimplementar os vários aspectos da presente invenção.
A Fig. 11 é um diagrama de blocos esquemático deum ambiente de computação adicional que pode ser empregadopara implementar um fluxo de trabalho com um componente deatividade interativa da presente invenção.
DESCRIÇÃO DETALHADA
Os vários aspectos da presente invenção são agoradescritos, com referência aos desenhos em anexo, em que nú-meros iguais referem-se a elementos iguais ou corresponden- tes em todas as partes. Deve-se compreender, entretanto, queos desenhos e a descrição detalhada relacionada a eles nãotêm a intenção de limitar a matéria reivindicada à forma es-pecifica revelada. Em vez disso, a intenção é de cobrir to-das as modificações, equivalentes e alternativas incluídas dentro do âmbito e da essência da matéria reivindicada.
Conforme usados neste documento, os termos "compo-nente", "sistema", "serviço" e similares pretendem referir-se a uma entidade relacionada a computador, seja em hardwa-re, em uma combinação de hardware e software, em software ou em software em execução. Por exemplo, um componente podeser, sem a isto se limitar, um processo em execução em umprocessador, um processador, um objeto, um executável, umencadeamento de execução, um programa e/ou um computador. Atítulo ilustrativo, tanto um aplicativo em execução em um computador quanto o computador podem ser um componente. Umou mais componentes podem residir dentro de um processo e/ouencadeamento de execução, ao passo que um componente podeestar localizado em um computador e/ou ser distribuído entredois ou mais computadores.
No presente documento, a palavra "exemplificativo"é usada para indicar algo que serve de exemplo ou ilustra-ção. Qualquer aspecto ou projeto descrito no presente docu-mento como "exemplificativo" não deve ser necessariamenteinterpretado como preferido ou favorável em relação a outrosaspectos ou projetos.
Ademais, a matéria revelada pode ser implementadacomo um sistema, método, aparelho ou artigo de fabricaçãousando programação padrão e/ou técnicas de engenharia paraproduzir softwares, firmwares, hardwares, ou qualquer combi-nação desses, para controlar um computador ou dispositivobaseado em processador a fim de implementar os aspectos des-critos em detalhes no presente documento. Conforme usado nopresente documento, o termo programa de computador tem a in-tenção de abranger um programa de computador acessível apartir de qualquer dispositivo, portador ou meio legível porcomputador. Por exemplo, meios legíveis por computador podemincluir, mas sem a isto se restringir: dispositivos de arma-zenamento magnético (por exemplo, discos rígidos, discosflexíveis, tiras magnéticas etc.), discos ópticos (por exem-plo, discos compactos (CDs), discos versáteis digitais(DVDs) etc.), cartões inteligentes e dispositivos de memóriaflash (por exemplo, cartões, memory sticks) . Além disso, a-preciar-se-á que uma onda portadora pode ser empregada paracarregar dados eletrônicos legíveis por computador, tal comoos usados para transmitir e receber correio eletrônico oupara acessar uma rede tal como a Internet ou uma rede local(LAN) . Certamente, os versados na técnica perceberão muitasmodificações que podem ser aplicadas a essa configuração semdivergir do âmbito ou da essência da matéria reivindicada.
Voltando-se inicialmente à Fig. 1, é ilustrado umdiagrama de blocos para um sistema 101 que implementa inte-ratividade como parte do próprio fluxo de trabalho, em quedados são passados para dentro e para fora do fluxo de tra-balho a fim de formar um fluxo de trabalho interativo. 0sistema 101 emprega um componente de atividade interativa140 que modela pontos de suspensão dentro de uma definiçãodo fluxo de trabalho, e que não depende de um tipo de apli-cativo com o intuito de abranger aplicativos de serviço deRede, de console, de área de trabalho, serviços de Rede, en-tre outros.
Além disso, o sistema 101 inclui um aplicativohospedeiro 120 que interage com um sistema de fluxo de tra-balho 100, em que o fluxo de trabalho pode modelar um pro-cesso humano ou sistemático que é definido como um mapa deatividades. Uma atividade é uma etapa de um fluxo de traba-lho, e é a unidade de execução, re-utilização e composiçãopara um fluxo de trabalho. O mapa de atividades expressa re-gras, ações, estados e sua relação. Geralmente, o fluxo detrabalho é executado por meio do mecanismo/tempo de execuçãodo fluxo de trabalho 110, e o tempo de execução do fluxo detrabalho exige um aplicativo externo para hospedá-lo, de a-cordo com algumas poucas regras, conforme representado pelohospedeiro 120. A troca de dados entre o hospedeiro 120 e osistema de fluxo de trabalho 100 podem relacionar-se a e/oudescrever os documentos comerciais e outros objetos emprega-dos para, ou com o intuito de, facilitar a atividade do flu-xo de trabalho ou um fluxo entre as variáveis locais do flu-xo de trabalho usadas para os dados comunicados com o apli-cativo hospedeiro 120.
Por exemplo, o aplicativo hospedeiro 120 pode in-teragir com o Provedor de Fluxo de Trabalho 115 associado aosistema de fluxo de trabalho 100, por meio de uma Classe deBase do Provedor de Fluxo de Trabalho 117 e/ou implementaçãoassociada a ela. Além disso, o hospedeiro 120 pode ser res-ponsável por uma série de aspectos adicionais e cruciais,tal como a criação de um ou mais fluxos de trabalho, encami-nhamento de chamadas entre vários componentes conforme ne-cessário para a execução adequada do fluxo de trabalho, econfiguração de mecanismos de isolamento. Ademais, o hospe-deiro 120 pode criar vários processos para tirar proveito devárias Unidades Centrais de Processamento (CPUs) em uma má-quina por motivos de escalabilidade ou para executar umgrande número de instâncias do fluxo de trabalho em um gran-de conjunto de máquinas. O hospedeiro 120 pode ainda contro-lar as diretivas para aplicá-las quando um fluxo de trabalhoé submetido a uma longa espera, monitora eventos específicose comunica-os ao usuário ou administrador, ajusta limites detempo e tentativas para cada fluxo de trabalho, exibe conta-dores de desempenho e grava informações de registro parafins de depuração e diagnóstico.
Um fluxo de trabalho associado ao sistema de fluxode trabalho 101 pode comunicar-se com o mundo externo pormeio de um serviço estabelecido especialmente para esse fim,em que tal serviço pode disparar eventos em que as ativida-des orientadas por eventos dentro do fluxo de trabalho seinterligarão. Outrossim, o serviço expõe métodos públicospara o fluxo de trabalho chamar e enviar dados ao hospedei-ro .
Conforme ilustrado na Fig. 1, o componente de ati-vidade interativa 14 0 pode implementar a interatividade comoparte de um fluxo de trabalho em si, em que dados são passa-dos dentro e fora do fluxo de trabalho, para formar um fluxode trabalho interativo. O componente de atividade interativa140 modela pontos de suspensão dentro de uma definição dofluxo de trabalho. Sendo assim, a entrada do usuário e a in-teração associada podem ser fornecidas ao fluxo de trabalhodurante vários intervalos de interatividade que solicitam aentrada do usuário para permitir uma troca de dados contro-lada/sincrona entre o fluxo de trabalho e um aplicativo hos-pedeiro associado ao fluxo de trabalho. Desse modo, em mo-mentos definidos dentro da execução do fluxo de trabalho, ocontexto do usuário pode ser associado a uma instância dofluxo de trabalho.
A Fig. 2 ilustra a execução de um fluxo de traba-lho 200 com vários pontos de suspensão que exigem interaçãocom o usuário. Os pontos de suspensão 212-215 (1 a n, onde ηé um número inteiro) podem ser modelados pelo componente deatividade interativa para corresponderem a instâncias duran-te o tempo de execução do fluxo de trabalho, em que o fluxode trabalho pode ser suspenso para troca de dados com um a-plicativo hospedeiro, por exemplo. Além disso, tais pontosde suspensão 212-215 podem relacionar-se à alternância deusuários do fluxo de trabalho. Por exemplo, o fluxo de tra-balho pode orientar a Interface com o Usuário (IU) com base no estado do fluxo de trabalho durante a suspensão, tal comoinformações relacionadas ao usuário do fluxo de trabalho.
O fluxo de trabalho 200 pode ser definido na formade uma programação para execução em um sistema de computa-dor. Uma programação pode incluir um conjunto de ações com uma simultaneidade, dependência e atributos de transação es-pecificados associados a ela. Cada programação possui um es-tado de programação associado, que inclui uma definição daprogramação, a localização atual dentro da programação, bemcomo dados ativos ou dinâmicos e objetos associados à pro- gramação. Dentro de uma programação, podem existir limitesde transações com base em agrupamentos de ações. Sob esseaspecto, uma transação pode abranger ações ou transações in-dividuais, ou grupos das mesmas. As ações podem ser agrupa-das em seqüências, que são executadas em série, bem como ta-refas em que as ações são executadas ao mesmo tempo, por e-xemplo. Com base nos agrupamentos, portanto, os atributossimultâneos podem ser resolvidos para as ações e transaçõesdentro de uma programação.
As ações correspondem ao trabalho que é realizado dentro de uma programação e são a unidade básica de sua com-posição. Tais ações podem incluir atributos relacionados àlatência, simultaneidade e compensação, seja alternadamenteou em conjunto, dentro do contexto de uma programação. Porexemplo, uma ação pode enviar estímulos originados externa-mente a uma programação, permitindo, assim, que programasexternos avancem o estado da programação. Esses estímulospodem ser um evento, uma mensagem ou uma chamada em um com-ponente reservado. No caso de um evento, a programação emexecução age como um subscritor. Instâncias específicas daprogramação se encaixarão em uma ação tal como um evento,uma mensagem ou uma chamada em um componente reservado.
Ademais, as ações podem orientar chamadas de méto-dos nos componentes. Geralmente, tais ações instanciam umcomponente, (por exemplo, criam uma instância do componen-te) , chamam um método na instância e, logo após, liberam areferência à instância se ela não for usada posteriormentena programação. Quando um aplicativo executa uma programa-ção, pode-se criar uma instância de um mecanismo programadore a programação e uma ligação associada são carregadas. Asações, adicionalmente, podem incluir informações com respei-to ao tempo de conclusão ou latência esperado ou real. Taisinformações podem ser incorporadas na definição da programa-ção quando a programação está sendo definida e/ou podem serfornecidas dinamicamente em tempo de execução com base eminformações históricas ou preditivas sobre a latência da a-ção.
Os pontos de suspensão 212-215 também podem indi-car pontos de desidratação no fluxo de trabalho. Uma vez queum fluxo de trabalho pode ser executado por horas, dias ousemanas, o tempo de execução 200 pode desativar automatica-mente um fluxo de trabalho em execução e armazenar, de formapersistente, seu estado nos pontos de suspensão 212-215quando ele estiver inativo por um período de tempo. A desi-dratação refere-se, em geral, a um método de armazenar sele-tivamente um estado de programação em um meio de armazena-mento com base em considerações de latência. Por exemplo,quando é esperado que uma ação em uma programação leve cincohoras para uma mensagem de entrada, o estado da programaçãopode ser desidratado ao disco até que a mensagem seja rece-bida. Em uma situação desse tipo, o sistema pode realizaroutras tarefas até o recebimento da mensagem, com isso, au-mentando significativamente a produtividade de trabalho e aeficácia do sistema. Sendo assim, a entrada do usuário e ainteração associada podem ser fornecidas ao fluxo de traba-lho durante vários intervalos de interatividade que solici-tam a entrada do usuário para permitir uma troca de dadoscontrolada/síncrona entre o fluxo de trabalho e um aplicati-vo hospedeiro associado ao fluxo de trabalho. Desse modo, emmomentos definidos dentro da execução do fluxo de trabalho,o contexto do usuário pode ser associado a uma instância dofluxo de trabalho.
A seguir será apresentada uma definição exemplifi-cativa para o componente de atividade interativa para sus-pender e/ou retomar uma instância de fluxo de trabalho nospontos de suspensão 212-215:
Conforme indicado, a classe de atividade pode em-pregar seu próprio executor para a finalidade de bloquear aexecução do fluxo de trabalho chamando o método Suspender noServiço Interativo. Isso pode iniciar a propagação do Iden-tificadorDelnteração associado ao componente de AtividadeInterativa até o manipulador do hospedeiro.
Sendo assim, é possível oferecer um fluxo de tra-balho interativo que é executado até pontos específicos, eoferecer realimentação ao aplicativo hospedeiro. 0 aplicati-vo hospedeiro pode alterar a aparência do fluxo de trabalhocom base no estado de suspensão. Um tipo de fluxo de traba-lho pode ser definido (por exemplo, por meio de programaçãoou de uma ferramenta visual), e o aplicativo hospedeiro podesubscrever-se a eventos de suspensão para oferecer um ganchona execução do fluxo de trabalho. 0(s) evento(s) de suspen-são pode(m) então ser disparado(s) e baseado(s) nas informa-ções de tal(is) evento(s) (por exemplo, informações com res-peito a um usuário do fluxo de trabalho); a aparência da IUpode ser alterada. Sendo assim, é possível passar os dadospara dentro e para fora de uma classe do fluxo de trabalho,e podem ser definidos aspectos personalizados para interaçãodurante o tempo de execução (por exemplo, fluxo de trabalhofortemente tipificado) .
As Figs. 3 e 4 ilustram fluxogramas específicospara um relatório de despesas com pontos de suspensão quepermite entrada do usuário e interação associada durante vá-rios intervalos de interatividade que exigem entrada do usu-ário, para permitir uma troca de dados controlada/síncronaentre o fluxo de trabalho e um aplicativo hospedeiro associ-ado ao fluxo de trabalho. Os fluxogramas 300 e 400 ilustramo emprego da atividade TrocarUsuário e do componente Ativi-dadelnterativa como pontos de suspensão dentro de um fluxode trabalho Relatório de Despesas.
Tal como e no contexto de um relatório de despe-sas, um usuário inicial pode iniciar um fluxo de trabalho derelatório de despesas, e um usuário responsável pela aprova-ção pode então aprovar tal relatório de despesas. Sendo as-sim, um processo pode ser abstraído na classe do fluxo detrabalho, em que o processo e a classe do fluxo de trabalhoestão sendo executados até um ponto em que o envolvimento deum responsável pela aprovação torna-sè necessário. Nesseponto, a interação do usuário inicial é interrompida. O res-ponsável pela aprovação então abre o aplicativo (por exem-plo, a partir de uma máquina diferente) para executar o flu-xo de trabalho e retomar a instância do fluxo de trabalhocom a ação especificada pelo responsável pela aprovação (porexemplo, aprovar, desaprovar, entre outros). Desse modo, osdados podem ser passados para dentro e para fora da instân-cia do fluxo de trabalho em momentos de suspensão durante otempo de existência da instância do fluxo de trabalho.
Conforme ilustrado na Fig. 3, a caixa 310 repre-senta uma ação "RDEnviada", em que é indicado um estado desuspensão para o aplicativo hospedeiro para processar umavisualização de um relatório de despesas submetido por meiode uma interface gráfica (por exemplo, uma forma dedicada),conforme descrito em detalhes abaixo na Fig. 5. Além disso,a ação 320 na definição de fluxo de trabalho 300 representauma instância da atividade TrocarUsuário pela qual a inven-ção reivindicada altera a associação atual entre o usuárioresponsável pela execução do próximo segmento do fluxo detrabalho e a instância do fluxo de trabalho. Geralmente, is-so assegura que o fluxo de trabalho possa ser retomado poruma ação de aprovar/rejeitar realizada sob o contexto de e-xecução somente do usuário apropriado. De forma similar, asações 330, 430 representam instâncias do intervalo Ativida-delnterativa, de acordo com um aspecto exemplificativo dainvenção reivindicada. De modo semelhante, a caixa 420, queé designada como NovaRD, ilustra um Novo Relatório de Despe-sas, em que o fluxo de trabalho se torna suspenso enquantoaguardando pelos dados de relatórios de despesas globais se-rem fornecidos como resultado da entrada do usuário por meiode uma interface gráfica (por exemplo, uma forma dedicada daFig. 5) .
O fluxo de trabalho possui um aplicativo para en-viar e aprovar relatórios de despesas, caracterizado pelofato de o aplicativo contém várias páginas que são coordena-das por um fluxo de trabalho. Além das várias atividades econstruções de fluxo de controle, o fluxo de trabalho de-monstra como o usuário associado pode ser alterado, quandoapresentado ao responsável pela aprovação do relatório dedespesas, por exemplo. Como já explicado, durante a açãoPreencherRD 430, o fluxo de trabalho é suspenso e o usuáriopode continuar a adicionar itens de linha ao relatório dedespesas. Também é possível incluir consultar a lista defluxos de trabalho em desenvolvimento disponíveis para exi-bição no fluxo de trabalho do aplicativo.
Por exemplo, o aplicativo de relatórios de Despe-sas pode conter uma página inicial que lista relatórios dedespesas em desenvolvimento que foram enviados pelo usuárioatual e quaisquer relatórios de despesas aguardando a apro-vação do usuário. Tal aplicativo permite a criação de novosrelatórios de despesas pela: especificação de informaçõestais como a finalidade do relatório de despesas, entre ou-tros; adição dos itens de linha individuais; e verificaçãoda exatidão das informações. Além do mais, quando um novorelatório de despesas é enviado, o aplicativo pode enviaruma notificação por correio eletrônico 460 ao responsávelpela aprovação. Logo após, o responsável pela aprovação podevisualizar um relatório de despesas e ou aprová-lo ou rejei-tá-lo, enviando, então, uma mensagem final.
A seguir, é apresentada uma definição do fluxo detrabalho Relatórios de Despesas exemplificativo que incorpo-ra interatividade, de acordo com um aspecto exemplificativoda presente invenção.
<WorkfIow Name="ExpenseReportingWorkflow"Inherits="InteractiveWorkfIow"Implements="ITrackingWorkfIowStateHandler"
xmlns="System.ApplicationServices.Workflows, System.ApplicationServices.Workflow"
xmlns : w="System.Web.WorkfIows,System.Web"
xmlns : s="SampleApp">
<StartActivity Name="Start">
<Transitions>
<ActivityTransition Destination="NewER" />
</Transitions>
</StartActivity><UIActivity Name="NewER"
InteractionIdentifier="NewER" Actions="Submit">
<Transitions>
<ActivityTransition Destination="FillER"
Action="Submit" />
</Transitions>
</UIAetivity>
<UIAotivity Name="FillER"
InteractionIdentifier="FillER" Actions="AddItem, Submit">
<Transitions>
<ActivityTransition Destination="FillER"
Action="AddItem" />
<ActivityTransition Destination="FillApprover"
Action="Submit" />
</Transitions>
</UIAetivity>
<CodeAetivity Name="FillApprover"
CustomExecute="FillApprover_CustomExeeute">
<Transitions>
<AetivityTransition Destination="VerifyER" />
<Transitions>
</CodeAetivity>
<UIAetivity Name="VerifyER"
InteraetionIdentifier="VerifyER" Actions="Submit">
<Transitions>
<ActivityTransition Destination="MailActivityl"
Action="Submit" />
</Transitions></UIActivity>
<s:MailActivity Name=nMailActivityl"From="expenses@example.com" Subjeet=nNew expensereport submitted; approval required.">
<Transitions>
<AetivityTransition Destination="SwitehUserl" />
</Transitions>
</s:MaiIAetivity>
<SwitehUserAetivity Name="Switchüserl"> <Transitions>
<ActivityTransition Destination=nApproveER" />
</Transitions>
<Bindings>
<ActivityBinding ActivityPropertyName=nUserName" WorkflowPropertyName="Approver"></Bindings></CodeActivity><UIActivity Name="ApproveER"InteractionIdentifier="ApproveER" Actions="Approve, Reject"><Transitions>
<ActivityTransition Destination="Payment"
Action="Approve" />
<ActivityTransition Destination="MaiIActivity2" Action=llReject" />
</Transitions></UIActivity>
<s:MailAetivity Name="MailAetivity2"From="expenses@example.com" Subj ect="Expense
report was rejected."><Transitions>
<ActivityTransition Destination="Stop" />
</Transitions>
</s:MailActivity>
<CodeActivity Name=nPayment"
CustomExecute="Payment_CustomExecute"><Transitions>
<ActivityTransition Destination="MailActivity3" />
</Transitions>
</CodeActivity>
<s:MailActivity Name="MailActivity3"From="expenses@example.com" Subj ect="Expensereport was approved.">
<Transitions>
<ActivityTransition Destination="Stop" /></Transitions>
</s:MailActivity>
<StopActivity Name="Stop" />
<Code Language="C#">private Guid _expenseReportID;private ExpenseReport _expenseReport;public ExpenseReport ExpenseReport {get { return _expenseReport; }}
public Guid ExpenseReportID {get { return expenseReportID; }set { _expenseReportID = value; }}
protected override void OnStarting(EventArgs e) {base.OnStarting(e);
_expenseReport = new ExpenseReport();
_expenseReportID = _expenseReport. ID;}
private void FillApprover_CustomExecute (objectsender, ActivityExecuteEventArgs e) {
// TODO: Usa usuário atual e quantidade dorelatório de despesas para determinar responsável pelaaprovação
e.Result = true;}
private void Payment_CustomExeeute(objeet sender,ActivityExecuteEventArgs e) {
// TODO: Efetua pagamento chamando um serviço da
Rede
e.Result = true;}
#region Implementation ofITraekingWorkfIowStateHandler voidITraekingWorkfIowStateHandler.BeginLoa() {}
void ITraekingWorkfIowStateHandler.BeginSave () {ExpensesDB.UpdateExpenseReport (_expenseReport);}
void ITraekingWorkfIowStateHandler.EndLoad() {_expenseReport
ExpensesDB.GetExpenseReport(ExpenseReportID) ;}
void ITrackingWorkfIowStateHandler.EndSave() {}
#endregion</Code></Workflow>Web.config<system.web><pageFlows>
<pageFlow name="ExpenseReporting"workfIow=nExpenseReporting.workflow"provider="SqlWorkfIowProvider"StartPagePath=nDefault.aspx"><pages>
<add name="NewER'
behavior="CreateWorkflow" />
<add name="FillER"behavior="ResumeWorkflow" />
pagePath="NewER.aspx"
pagePath="FillER.aspx"
</pages></pageFlow></pageFlows></system.web>Default.aspx<%@ Page %><html><body>
<form runat="server"/>
<asp:WorkflowDataSourceid="pendingWorkflows"
pageFlowName="ExpenseReporting"Filter=nCreatedByUser" />
<asp:WorkflowDataSource runat="server"id="approvalWorkflows"
pageFlowName="ExpenseReporting"Filter=AssignedToUser"
Expense Reports Pending Approval:<asp:GridView runat="server"
DataSourceID="pendingWorkflows" />Expense Reports Needing Approval:<asp:GridView runat="server"
DataSourceID="approvaiWorkflows" />
<a href="NewER.aspx">Create New Expense Report</a>
</form>
</body>
</html>
Approve.aspx
<%@ Page %>
<asp:PageFlowManager runat="server"
id="pageFlowManager1" PageFlowName="ExpenseReporting" />
<html>
<body>
<form runat="server">
<asp: FormView runat="server"DataSourceID="pageFlowManager1">
<ItemTemplate>
</ItemTemplate>
</asp:FormView>
<asp:ActionButton runat="server" Text="Approve">
<ClickActions>
<asp:PageFlowAction Type=nResume"
ResumeAction=nApprove" />
</ClickAetions>
</asp:AetionButton>
<asp:AetionButton runat="server" Text=nRejeet">
<ClickActions>
<asp:PageFlowAetion Type=nResumen
ResumeAction=nRejeetn />
</CliekAetions>
</asp:ActionButton>
</form>
</body>
</html>
A Fig. 5 ilustra uma interface gráfica exemplifi-cativa (por exemplo, uma forma dedicada) que pode ser apli-cada em combinação com vários aspectos da invenção reivindi-cada. Para um fluxo de página 510, tal aplicativo de relató-rios de despesa apresenta um aplicativo de Rede para enviare aprovar relatórios de despesas, por exemplo. O aplicativocontém várias páginas coordenadas por um fluxo de trabalho.Além das várias atividades e construções de fluxo de contro-le, o fluxo de trabalho demonstra como o usuário associadopor ser trocado. 0 fluxo de página 510 também demonstra aconsulta à lista de fluxos de trabalho em desenvolvimentodisponíveis para exibição no fluxo de trabalho do aplicati-vo. Por exemplo, o fluxo de trabalho pode orientar a Inter-face com o Usuário (IU) com base no estado do fluxo de tra-balho durante a suspensão, tal como informações relacionadasao usuário do fluxo de trabalho. Dessa forma, obtém-se umfluxo de trabalho interativo, que é executado até pontos es-pecíficos, e fornece uma realimentação ao aplicativo hospe-deiro. Ademais, o aplicativo hospedeiro pode alterar a apa-rência do fluxo de trabalho com base no estado de suspensão.Conforme explicado acima, no contexto de um relatório dedespesas, um tipo de fluxo de trabalho pode ser definido(por exemplo, por meio de programação ou de uma ferramentavisual), e o aplicativo hospedeiro pode subscrever-se a e-ventos de suspensão para oferecer um gancho na execução dofluxo de trabalho. 0(s) evento(s) de suspensão pode(m) entãoser disparado(s) e baseado(s) nas informações de tal(is) e-vento(s) (por exemplo, informações com respeito a um usuáriodo fluxo de trabalho); a aparência da UI pode ser alterada.Sendo assim, os dados podem ser passados para dentro e parafora de uma classe do fluxo de trabalho, e podem-se definircaracterísticas personalizadas para interação durante o tem-po de execução (por exemplo, fluxo de trabalho fortementetipificado). Além disso, o hospedeiro pode consultar a ins-tância de fluxo de trabalho para identificar a atividade deinteração atual que fez com que o fluxo de trabalho se tor-nasse suspenso e/ou ocioso.
A Fig. 6 ilustra um diagrama de blocos para umsistema 600 que pode modelar pontos de suspensão dentro deuma definição do fluxo de trabalho, caracterizado pelo fatode que dados são passado dentro e fora do fluxo de trabalhopara formar um fluxo de trabalho interativo. Geralmente, emuma instância de fluxo de trabalho 640 que possui um compo-nente de atividade interativa 610 incluído como parte sua,um evento de suspensão pode ser disparado para permitir umasuspensão na execução do fluxo de trabalho, seja em termosde tempo, ou trocando o usuário atual, por exemplo. O fluxode trabalho pode iniciar a execução executando a AtividadeI-nicial contida e terminar quando PararAtividade for executa-do. No decorrer da execução, cada atividade pode ser anali-sada para verificar se ela pode ser executada. Se a ativida-de não puder ser executada, o fluxo de trabalho é suspenso,por exemplo. Se uma atividade pode ser executada, um métodoExecutar associado é invocado, e se o método retornar um re-sultado de êxito, usa-se a transição de atividade apropriadapara determinar a próxima atividade. Fluxos de trabalho po-dem ser suspensos por uma série de motivos, tais como: can-celamento da execução de uma atividade, incapacidade de umaatividade em continuar em execução, um retardo específicointroduzido para adiar uma execução posterior, e alteraçãode contexto de usuário exigindo que a execução subseqüenteseja realizada por um usuário diferente. Uma vez suspensa, ainstância de fluxo de trabalho pode ser salva/serializada embase de dados ou armazenamento equivalente, a partir do qualela poderá ser posteriormente, recuperada, desserializada eretomada. Um fluxo de trabalho também pode entrar em estadode erro, se a execução de uma atividade resultar em um erroque não é tratado.
Conforme ilustrado na Fig. 6, o componente de ati-vidade interativa 610 pode disparar o evento por meio doserviço de interatividade 620, que está associado ao meca-nismo/tempo de execução do fluxo de trabalho 635. Posterior-mente, o fluxo de trabalho é suspenso e o hospedeiro 630 po-de trocar dados (por exemplo, obter dados) com a instânciade fluxo de trabalho 640. O hospedeiro pode, então, retomaro fluxo de trabalho, chamando o serviço de atividade intera-tiva 620, para retomar a execução do fluxo de trabalho. Sen-do assim, a entrada do usuário e a interação associada podemser fornecidas ao fluxo de trabalho durante vários interva-los de interatividade que solicitam a entrada do usuário pa-ra permitir uma troca de dados controlada/sincrona entre ofluxo de trabalho e um aplicativo hospedeiro associado aofluxo de trabalho.
As Figs 7 a 9 ilustram fluxogramas exemplificati-vos do fluxo de execução do fluxo de trabalho, de acordo comum aspecto da presente reivindicada. Embora o método exem-plificativo seja ilustrado e descrito no presente documentocomo uma série de blocos que representam vários evento e/ouações, a invenção reivindicada não se limita à ordem ilus-trada de tais blocos. Por exemplo, diferentemente da ordemilustrada no presente documento, algumas ações ou eventospodem ocorrer em ordens diferentes e/ou simultaneamente aoutras ações ou eventos, de acordo com a invenção. Além dis-so, pode ser que nem todos os blocos, eventos ou ações ilus-trados sejam necessários para implementar uma metodologia deacordo com a presente invenção. Ademais, apreciar-se-á que o método exemplificativo e outros métodos de acordo com a in-venção podem ser implementados em associação ao método ilus-trado e descrito no presente documento, assim como em rela-ção a outros sistemas e aparelhos não ilustrados ou descri-tos. Conforme ilustrado na Fig. 7, a metodologia 700, o pro- cesso do fluxo de trabalho executa e passa para a ação se-guinte do processo. A execução do fluxo de trabalho pode ve-rificar em 710 se a ação a ser executada significa um térmi-no do fluxo de trabalho. Se a resposta for positiva, a exe-cução do fluxo de trabalho termina em 720. Caso contrário, a metodologia prossegue para a ação 730, em que a ação a serexecutada pelo fluxo de trabalho é analisada para verificarse ela é uma atividade interativa. Se a resposta for positi-va, o fluxo de trabalho é suspenso em 740 para permitir in-teração com um aplicativo hospedeiro, conforme descrito pre- viamente em detalhes. Caso contrário, a metodologia retornapara a ação 705, em que o fluxo de trabalho executa a açãoatual e prossegue para a próxima.
Conforme ilustrado na Fig. 7 e após a suspensão dofluxo de trabalho em 740, o fluxo de execução prossegue com o disparo de um evento de suspensão para o hospedeiro, em750. Como tal, e conforme ilustrado na Fig. 8, embora a ins-tância do fluxo de trabalho seja suspensa em 860, os dadossão trocados entre o hospedeiro e o fluxo de trabalho em862. Como tal, os dados podem ser passados dentro e/ou forado fluxo de trabalho. Isso pode incluir a obtenção dos dadosa partir da instância do fluxo de trabalho em 864 e/ou a de-finição dos dados pelo hospedeiro em 866. Sendo assim, a en-trada do usuário e a interação associada podem ser forneci-das ao fluxo de trabalho durante vários intervalos de inte-ratividade que solicitam a entrada do usuário para permitiruma troca de dados controlada/sincrona entre o fluxo de tra-balho e um aplicativo hospedeiro associado ao fluxo de tra-balho. Desse modo, em momentos definidos dentro da execuçãodo fluxo de trabalho, o contexto do usuário pode ser associ-ado a uma instância do fluxo de trabalho.
Em 870, pode-se realizar uma verificação para ana-lisar se os dados lançados pelo hospedeiro são um evento deretomada. Se não, então a instância do fluxo de trabalho po-de permanecer em estado suspenso para continuar a troca dedados, e a metodologia volta para a ação 862. Caso contrá-rio, a metodologia prossegue para a Fig. 9, em que o hospe-deiro pode enviar um evento para o fluxo de trabalho pararetomar a execução em 980. Em 982, é possível realizar umaverificação quanto a se o fluxo de trabalho está carregado.Se a resposta for positiva, o fluxo de trabalho recebe o e-vento de retomada em 986 e, logo após, volta para a ação 705para executar uma ação seguinte do fluxo de execução. Casocontrário, e se o fluxo de trabalho não estiver carregado,então o fluxo de trabalho é carregado com base em uma iden-tificação associada a ele (por exemplo, quando a instânciado fluxo de trabalho foi criada) em 984, e então prosseguepara a ação 8 96 para retomar o fluxo de trabalho.
De modo a apresentar um contexto para os váriosaspectos da matéria revelada, as Figs. 10 e 11, bem como adiscussão seguinte, visam a apresentar uma breve descriçãogeral de um ambiente de computação adequado, no qual é pos-sível implementar os vários aspectos da matéria revelada.Embora a invenção tenha sido descrita acima no contexto ge-ral de instruções executáveis por computador de um programade computador que roda em um computador e/ou em computado-res, os versados na técnica reconhecerão que a invenção tam-bém pode ser implementada em combinação com outros módulosde programa. Geralmente, os módulos de programa incluem ro-tinas, programas, componentes, estruturas de dados, etc.,que efetuam tarefas específicas e/ou implementam tipos dedados abstratos específicos. Além disso, os versados na téc-nica irão apreciar que os métodos inventivos podem ser pra-ticados com outras configurações de sistema de computador,incluindo sistemas de computador de único processador oumultiprocessadores, microdispositivos de computação, compu-tadores de grande porte, bem como computadores pessoais,dispositivos de computação portáteis (por exemplo, assisten-te digital pessoal (PDA), telefone, relógio, etc.), compo-nentes eletrônicos industriais baseados em microprocessadorou programáveis pelo consumidor, entre outros. Os aspectosilustrados também podem ser praticados em ambientes de com-putação distribuída, nos quais as tarefas são efetuadas pordispositivos de processamento remoto que estão ligados pormeio de uma rede de comunicações. No entanto, alguns dos as-pectos da invenção, ou mesmo todos, podem ser praticados emcomputadores autônomos.
Em um ambiente de computação distribuída, os módu-los de programa podem estar localizados tanto em dispositi-vos de armazenamento em memória local quanto remota.
Com referência à Fig. 10, é descrito um ambienteilustrativo 1010 para implementar vários aspectos da inven-ção reivindicada, o qual inclui um computador 1012. 0 compu-tador 1012 inclui uma unidade de processamento 1014, uma me-mória do sistema 1016 e um barramento do sistema 1018. Obarramento do sistema 1018 acopla componentes do sistema,incluindo, sem a isto se limitar, a memória do sistema 1016à unidade de processamento 1014. A unidade de processamento1014 pode ser qualquer uma dentre vários processadores dis-poníveis. Microprocessadores duplos e outras arquiteturascom múltiplos processadores também podem ser empregados comoa unidade de processamento 1014.
O barramento do sistema 1018 pode ser qualquer umdentre vários tipos de estrutura(s) de barramento®, incluin-do o barramento de memória ou controlador de memória, umbarramento periférico ou barramento externo e/ou um barra-mento local usando qualquer uma dentre uma variedade de ar-quiteturas de barramento disponíveis, incluindo, mas sem aisto se limitar, barramento de 11 bits, Arquitetura PadrãoIndustrial (ISA), Arquitetura de Microcanal (MSA), ISA Es-tendida (EISA), Interface IDE, Barramento local VESA (VLB),Interconexão de Componentes Periféricos (PCI), BarramentoSerial Universal (USB), Porta Gráfica Acelerada (AGP), bar-ramento da Associação Internacional de Placas de Memória pa-ra Computador Pessoal (PCMCIA), CardBUS, Bluetooth, Firewire1394 e Interface para Pequenos Sistemas de Computador(SCSI) .
A memória do sistema 1016 inclui a memória volátil1020 e memória não-volátil 1022. 0 sistema básico de entra-da/saída (BIOS), contendo as rotinas básicas para transfe-rência de informações entre os elementos dentro do computa-dor 1012, tal como durante a inicialização, é armazenado namemória não-volátil 1022. A titulo de ilustração, sem limi-tação, a memória não volátil 1022 pode incluir memória so-mente para leitura (ROM), ROM programável (PROM), ROM ele-tricamente programável (EPROM), ROM eletricamente apagável(EEPROM) ou memória flash. A memória volátil 1020 inclui me-mória de acesso aleatório (RAM), que age como memória cacheexterna. A titulo de ilustração, e sem limitação, a RAM seencontra disponível em diversas formas, como RAM sincrona(SRAM), RAM dinâmica (DRAM), DRAM sincrona (SDRAM), SDRAM dedupla taxa de dados (DDR SDRAM), SDRAM avançada (ESDRAM),DRAM Synchlink (SLDRAM) e RAM direta Rambus (DRRAM).
0 computador 1012 também inclui meios de armazena-mento de computador removiveis/não-removiveis e volá-teis/não-voláteis. A Fig. 10 ilustra, por exemplo, um arma-zenamento em disco 1024. 0 armazenamento em disco 1024 in-clui, sem a isto se restringir, dispositivos como uma unida-de de disco magnético, uma unidade de disco flexível, umaunidade de fita, uma unidade Jaz, uma unidade Zip, uma uni-dade LS-100, um cartão de memória flash ou um cartão memorystick. Além disso, o armazenamento em disco 1024 pode inclu-ir meios de armazenamento separados ou em combinação com ou-tros meios de armazenamento, incluindo, mas sem a isto serestringir, uma unidade de disco óptico, tal como um dispo- sitivo de disco compacto ROM (CD-ROM), uma unidade de CDgravável (Unidade de CD-R), uma unidade de CD regravável (U-nidade de CD-RW) ou uma unidade de disco versátil digitalROM (DVD-ROM). Para facilitar a conexão dos dispositivos dearmazenamento em disco 1024 ao barramento do sistema 1018, costuma-se usar uma interface removível ou não-removivel,tal como a interface 1026.
Deve-se apreciar que a Fig. 10 representa um soft-ware que age como um elemento intermediário entre os usuá-rios e os recursos básicos do computador descritos no ambi-ente operacional adequado 1010. Tal software inclui um sis-tema operacional 1028. O sistema operacional 1028, que podeser armazenado no armazenamento em disco 1024, serve paracontrolar e alocar recursos do sistema de computador 1012.Os aplicativos de sistema 1030 tiram proveito do gerencia- mento de recursos do sistema operacional 1028 por meio dosmódulos de programa 1032 e dos dados de programa 1034 arma-zenados tanto na memória do sistema 1016 como no armazena-mento em disco 1024. Deve-se apreciar que os vários compo-nentes descritos no presente documento podem ser implementa- dos com vários sistemas operacionais ou combinações de sis-temas operacionais.
O usuário entra com comandos ou informações nocomputador 1012 por meio do(s) dispositivo(s) de entrada1036. Os dispositivos de entrada 1036 incluem, sem a isto serestringir, um dispositivo de apontamento tal como um mouse,trackball, caneta, teclado sensível ao toque, teclado, mi-crofone, joystick, controle de jogo, antena de satélite,scanner, placa sintonizadora de TV, câmera digital, câmerade vídeo digital, webcam, e outros do gênero. Esses e outrosdispositivos de entrada conectam-se à unidade de processa-mento 1014 por meio do barramento do sistema 1018 pela(s)porta(s) de interface 1038. A(s) porta(s) de interface 1038incluem, por exemplo, uma porta serial, uma porta paralela,uma porta de jogo e um barramento serial universal (USB).0(s) dispositivo(s) de saída 1040 usam alguns dos mesmos ti-pos de portas que o(s) dispositivo(s) de entrada 1036. Dessemodo, por exemplo, uma porta USB pode ser usada para entradade informações no computador 1012 e para transmitir informa-ções do computador 1012 para um dispositivo de saída 1040. 0adaptador de saída 1042 é proporcionado para ilustrar queexistem alguns dispositivos de saída 1040 como monitores,alto-falantes e impressoras, dentre outros dispositivos desaída 1040, que necessitam de adaptadores especiais. Os a-daptadores de saída 1042 incluem, a título de ilustração enão de limitação, placas de vídeo e de som que propiciam ummeio de conexão entre o dispositivo de saída 1040 e o barra-mento de sistema 1018. Deve-se observar que outros disposi-tivos e/ou sistemas de dispositivos oferecerem tanto recur-sos de entrada quanto de saída, tal como o(s) computador(es)remoto(s) 1044.
O computador 1012 pode operar em um ambiente emrede usando conexões lógicas com um ou mais computadores re-motos, tais como o(s) computador(es) remoto(s) 1044. 0(s)computador(es) remoto(s) 1044 pode(m) ser um computador pes-soal, um servidor, um roteador, um PC de rede, uma estaçãode trabalho, um dispositivo baseado em microprocessador, umdispositivo não hierarquizado ou outro nó comum da rede, en-tre outros, e tipicamente incluem grande parte ou todos oselementos descritos em relação ao computador 1012. Para finsde concisão, apenas um dispositivo de armazenamento em memó-ria 1046 é ilustrado junto ao(s) computador(es) remoto(s)1044. 0(s) computador(es) remoto(s) 1044 é(são) logicamenteconectado(s) ao computador 1012 por meio de uma interface derede 1048 e então fisicamente conectado(s) por via de cone-xão de comunicação 1050. A interface de rede 1048 abrangeredes de comunicação, tais como redes locais (LAN) e redesde longa distância (WAN). As tecnologias LAN incluem Inter-face de Dados Distribuídos por Fibra Óptica (FDDI), Interfa-ce de Dados Distribuídos por Cobre (CDDI), Ethernet/IEEE802.3, Rede em Anel/IEEE 802.5, entre outros. As tecnologiasWAN incluem, sem a isto se restringir, ligações ponto-a-ponto, redes de comutação de circuito como Redes Digitais deServiços Integrados (ISDN) e variações destas, redes de co-mutação de pacotes e Linhas Digitais do Assinante (DSL).A(s) conexão(ões) de comunicação 1050 referem-se ao hardwa-re/software usado para conectar a interface de rede 1048 aobarramento 1018. Embora a conexão de comunicação 1050 sejailustrada, visando maior clareza na ilustração, dentro docomputador 1012, ela também pode ser externa ao computador1012. O hardware/software necessário para conexão à interfa-ce de rede 1048 inclui, para fins meramente exemplificati-vos, tecnologias internas e externas como modems, inclusivemodems de grade telefônica regular, modems a cabo e modemsDSL, adaptadores ISDN e placas Ethernet. A Fig. 11 é um dia-grama de blocos esquemático de um ambiente de computação mo-delo que pode ser usado para implementar um fluxo de traba-lho com um componente de interatividade da invenção reivin-dicada. O sistema 1100 inclui um ou mais cliente (s) 1110.O(s) cliente(s) 1110 podem ser hardware e/ou software (porexemplo, encadeamentos, processos, dispositivos de computa-ção) . O sistema 1100 também inclui um ou mais servidor(es)1130. O(s) servidor(es) 1130 também podem ser hardware e/ousoftware (por exemplo, encadeamentos, processos, dispositi-vos de computação). Os servidores 1130 podem armazenar enca-deamentos para realizar transformações empregando os compo-nentes descritos no presente documento, por exemplo. Umapossível comunicação entre um cliente 1110 e um servidor1130 pode ser na forma de um pacote de dados adaptado paraser transmitido entre dois ou mais processos de computador.O sistema 1100 inclui uma estrutura de comunicação 1150 quepode ser usada para facilitar as comunicações entre o(s)cliente(s) 1110 e o(s) servidor(es) 1130. 0(s) cliente(s)1110 são operavelmente conectados a um ou mais armazenamen-tos de dados de cliente 1160 que podem ser usados para arma-zenar informações locais para o(s) cliente(s) 1110. De formasemelhante, o(s) servidor(es) 1130 (é)são operavelmente co-nectado (s) a um ou mais armazenamento(s) de dados de servi-dor 1140 que podem ser usado(s) para armazenar informaçõeslocais para os servidores 1130.
O que foi descrito acima inclui vários aspectosexemplificativos. Naturalmente, não é possível descrever to-das as combinações possíveis dos componentes ou metodologiaspara fins de descrição desses aspectos, mas os versados natécnica serão capazes de reconhecer diversas outras possí-veis combinações e alterações. Logo, os aspectos descritosneste documento pretendem abranger todas tais alterações,modificações e variações que se enquadram na essência e noâmbito das reivindicações anexas. Além do mais, na medida emque o termo "inclui" é usado, tanto na descrição detalhadacomo nas reivindicações, tal termo pretende ser inclusivo deforma semelhante ao termo "compreendendo", uma vez que "com-preendendo" é interpretado, quando empregado, como uma pala-vra de transição em uma reivindicação.

Claims (13)

1. Sistema implementado por computador,CARACTERIZADO por compreender os seguintes componentes exe-cutáveis por computador:um sistema de fluxo de trabalho (100) contendo umcomponente de atividade interativa (140) que modela pontosde suspensão dentro de um fluxo de trabalho; eum hospedeiro (120) que troca dados com o fluxo detrabalho nos pontos de suspensão.
2. Sistema implementado por computador, de acordocom a reivindicação 1, CARACTERIZADO pelo fato de que ospontos de suspensão possuem intervalos de interatividade pa-ra entrada do usuário.
3. Sistema implementado por computador, de acordoponente de atividade interativa possui recursos de troca deusuário.
4. Sistema implementado por computador, de acordocom a reivindicação 2, CARACTERIZADO pelo fato de que o flu-xo de trabalho pode ser carregado com base na identificaçãoassociada a ele.
5. Sistema implementado por computador, de acordocom a reivindicação 1, CARACTERIZADO pelo fato de que ospontos de suspensão são associados a uma aparência da Inter-face com o Usuário (IU) alterável do fluxo de trabalho.
6. Sistema implementado por computador, de acordocom a reivindicação 5, CARACTERIZADO pelo fato de que a IUpode ser operada com base no estado do fluxo de trabalho du-com a reivindicação 9, CARACTERIZADO por adicionalmente com-preender verificar se os dados são um evento de retomada.14. Método implementado por computador, de acordocom a reivindicação 9, CARACTERIZADO por adicionalmente com-preender disparar um evento de suspensão para o hospedeiro.15. Método implementado por computador, de acordocom a reivindicação 14, CARACTERIZADO por adicionalmentecompreender um dentre alterar e modificar uma IU com base noevento de suspensão.16. Método implementado por computador, de acordocom a reivindicação 14, CARACTERIZADO por adicionalmentecompreender fornecer uma entrada do usuário ao fluxo de tra-balho.17. Método implementado por computador, de acordocom a reivindicação 14, CARACTERIZADO por adicionalmentecompreender subscrever o hospedeiro a eventos de suspensãodentro de um fluxo de trabalho.18. Método implementado por computador, de acordocom a reivindicação 14, CARACTERIZADO por adicionalmentecompreender determinar um estado do fluxo de trabalho con-sultando uma instância do fluxo de trabalho para identificaruma atividade de interação que causou a suspensão do fluxode trabalho.19. Método implementado por computador, de acordocom a reivindicação 14, CARACTERIZADO por adicionalmentecompreender alterar a aparência do fluxo de trabalho com ba-se em pontos de suspensão.20. Sistema implementado por computador,rante a suspensão.
7. Sistema implementado por computador, de acordocom a reivindicação 5, CARACTERIZADO pelo fato de que o flu-xo de trabalho pode ser retomado por uma atividade do hospe-deiro.
8. Sistema implementado por computador, de acordocom a reivindicação 5, CARACTERIZADO pelo fato de que o sis-tema de fluxo de trabalho possui uma Classe do provedor defluxo de trabalho para comunicação com o hospedeiro.
9. Método implementado por computador,CARACTERIZADO por compreender as seguintes ações executáveispor computador:encontrar uma atividade que suspende um fluxo detrabalho,trocar dados entre um hospedeiro e o fluxo de tra-balho durante a suspensão do fluxo de trabalho.
10. Método implementado por computador, de acordocom a reivindicação 9, CARACTERIZADO por adicionalmente com-preender definir dados pelo hospedeiro.
11. Método implementado por computador, de acordocom a reivindicação 9, CARACTERIZADO por adicionalmente com-preender enviar um evento pelo hospedeiro ao fluxo de traba-lho para retomar a execução.
12. Método implementado por computador, de acordocom a reivindicação 9, CARACTERIZADO por carregar um fluxode trabalho com base em uma identificação de uma instânciado fluxo de trabalho.
13. Método implementado por computador, de acordoCARACTERIZADO por compreender os seguintes componentes exe-cutáveis por computador:meios (110) para suspender um fluxo de trabalho; emeios (140) para trocar dados entre um hospedeiroe o fluxo de trabalho durante a suspensão do fluxo de traba-lho.
BRPI0618302A 2005-12-29 2006-12-07 Modelagem da entrada do usuário e interação em aplicativos baseados em fluxo de trabalho BRPI0618302A8 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/321,490 2005-12-29
US11/321,490 US8849691B2 (en) 2005-12-29 2005-12-29 Modeling user input and interaction in workflow based applications
PCT/US2006/046905 WO2007078593A1 (en) 2005-12-29 2006-12-07 Modeling user input and interaction in worklow based applications

Publications (2)

Publication Number Publication Date
BRPI0618302A2 true BRPI0618302A2 (pt) 2011-08-23
BRPI0618302A8 BRPI0618302A8 (pt) 2016-12-20

Family

ID=38225702

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0618302A BRPI0618302A8 (pt) 2005-12-29 2006-12-07 Modelagem da entrada do usuário e interação em aplicativos baseados em fluxo de trabalho

Country Status (8)

Country Link
US (2) US8849691B2 (pt)
EP (1) EP1969484A4 (pt)
JP (1) JP2009522645A (pt)
KR (1) KR20080087804A (pt)
CN (1) CN101346713B (pt)
BR (1) BRPI0618302A8 (pt)
RU (1) RU2445688C2 (pt)
WO (1) WO2007078593A1 (pt)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7412513B2 (en) * 2003-11-14 2008-08-12 Microsoft Corporation Systems and methods for using metrics to control throttling and swapping in a message processing system
US8849691B2 (en) 2005-12-29 2014-09-30 Microsoft Corporation Modeling user input and interaction in workflow based applications
JP2009110276A (ja) * 2007-10-30 2009-05-21 Toshiba Corp 顧客対応作成管理装置、顧客対応管理システム、及び顧客対応作成管理プログラム
US8429668B2 (en) * 2007-12-07 2013-04-23 Sap Ag Workflow task re-evaluation
US10169199B2 (en) 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
EP2199960A1 (en) * 2008-12-17 2010-06-23 Accenture Global Services GmbH Manufacturing collaboration hub data exchange interface
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
JP2011008506A (ja) * 2009-06-25 2011-01-13 Fuji Xerox Co Ltd 文書処理装置、文書処理プログラム、及び文書フローシステム
CN101741666B (zh) * 2010-02-26 2012-02-01 西安交通大学 一种通过网络结构划分来实现工作流多实例的方法
US8522256B2 (en) * 2010-10-12 2013-08-27 Microsoft Corporation Hosting non-messaging workflows in a messaging host
US8984531B2 (en) * 2011-06-01 2015-03-17 Microsoft Technology Licensing, Llc Episodic coordination model for distributed applications
US9536264B2 (en) 2011-11-14 2017-01-03 Microsoft Technology Licensing, Llc Host agnostic messaging in a continuation based runtime
KR101508496B1 (ko) * 2011-11-25 2015-04-10 서강대학교산학협력단 자산 기반의 요구사항 시뮬레이터 및 요구사항 관리 방법
US10332213B2 (en) * 2012-03-01 2019-06-25 Ricoh Company, Ltd. Expense report system with receipt image processing by delegates
US9483307B2 (en) * 2013-09-04 2016-11-01 Swiftpage Act! Llc Asynchronous, interactive task workflows
US10289411B2 (en) 2013-11-18 2019-05-14 Microsoft Technology Licensing, Llc Diagnosing production applications
KR102348354B1 (ko) * 2013-11-19 2022-01-11 국민대학교산학협력단 원격 시뮬레이션 과정을 관리하는 클라우드 서비스 제공 방법
KR102205651B1 (ko) * 2013-11-19 2021-01-21 국민대학교산학협력단 원격 시뮬레이션 과정을 관리하는 클라우드 서비스 제공 방법
US20160224202A1 (en) * 2013-11-25 2016-08-04 Yandex Europe Ag System, method and user interface for gesture-based scheduling of computer tasks
EP2933064A1 (en) * 2014-04-17 2015-10-21 Aldebaran Robotics System, method and computer program product for handling humanoid robot interaction with human
US9552562B2 (en) * 2014-09-26 2017-01-24 Oracle International Corporation Visual information builder for business rules
US9612939B2 (en) * 2014-10-29 2017-04-04 Microsoft Technology Licensing, Llc. Diagnostic workflow for production debugging
US10235337B2 (en) * 2015-06-24 2019-03-19 EMC IP Holding Company LLC Distributed work flow using database replication
US10127509B2 (en) 2015-09-17 2018-11-13 Bank Of America Corporation System for temporarily suspending a workflow associated with a work item
US10528327B2 (en) 2015-11-23 2020-01-07 Microsoft Technology Licensing Llc Workflow development system with ease-of-use features
US10423393B2 (en) 2016-04-28 2019-09-24 Microsoft Technology Licensing, Llc Intelligent flow designer
US10353560B2 (en) * 2016-04-28 2019-07-16 Microsoft Technology Licensing, Llc Debugging a flow
US11169982B2 (en) * 2016-06-30 2021-11-09 Microsoft Technology Licensing, Llc Dynamic deactivation of cold database in database service
US10379826B1 (en) * 2018-03-08 2019-08-13 International Business Machines Corporation Determining inputs to an integration flow component
US10904238B2 (en) 2018-07-13 2021-01-26 Sap Se Access token management for state preservation and reuse
US11238386B2 (en) 2018-12-20 2022-02-01 Sap Se Task derivation for workflows
US11366681B2 (en) 2019-03-27 2022-06-21 Amazon Technologies, Inc. Chaining virtual machines
US10963287B2 (en) 2019-03-27 2021-03-30 Amazon Technologies, Inc. Reducing request latency in a multi-tenant web service host
US11467858B2 (en) * 2019-03-27 2022-10-11 Amazon Technologies, Inc. Techniques for performing continuation workflows
US20210089990A1 (en) * 2019-09-19 2021-03-25 Sap Se Intelligent forms platform for modeling workflow forms
US11446818B2 (en) 2019-10-01 2022-09-20 UiPath, Inc. Resuming robotic process automation workflows based on external triggers
US11444903B1 (en) * 2021-02-26 2022-09-13 Slack Technologies, Llc Contextual discovery and design of application workflow
CN116909768A (zh) * 2023-07-12 2023-10-20 深圳市魔数智擎人工智能有限公司 一种基于工作流的应用程序中对用户输入和交互建模

Family Cites Families (128)

* 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 階層型ワークフロー管理方法及びワークフロー書類回覧方法
US5748962A (en) * 1996-09-30 1998-05-05 Mci Communications Corporation Common channels for inter-application communications
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
CA2226062A1 (en) * 1997-12-31 1999-06-30 Ibm Canada Limited-Ibm Canada Limitee Workflow mechanism for a stateless environment
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
US6397191B1 (en) * 1998-06-05 2002-05-28 I2 Technologies Us, Inc. Object-oriented workflow for multi-enterprise collaboration
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
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
US8862507B2 (en) 1999-06-14 2014-10-14 Integral Development Corporation System and method for conducting web-based financial transactions in capital markets
US6434568B1 (en) * 1999-08-31 2002-08-13 Accenture Llp Information services patterns in a netcentric environment
US6539396B1 (en) * 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
JP2001084320A (ja) * 1999-09-13 2001-03-30 Oki Electric Ind Co Ltd ワークフロー管理システム
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
RU2191425C2 (ru) * 2000-04-03 2002-10-20 Северо-Кавказский региональный центр информатизации высшей школы Способ оптимизации параллельной обработки информации для минимизации ее времени
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 処理コード情報を有するデータベース・システムおよび情報処理システム
AU2001269886A1 (en) * 2000-06-15 2002-01-14 Xis Incorporated Method and system for product lifecycle management
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
WO2002021314A2 (en) 2000-09-08 2002-03-14 Asera, Inc. Integrated design environment for a commerce server system
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
US6847974B2 (en) * 2001-03-26 2005-01-25 Us Search.Com Inc Method and apparatus for intelligent data assimilation
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
US20030135384A1 (en) 2001-09-27 2003-07-17 Huy Nguyen Workflow process method and system for iterative and dynamic command generation and dynamic task execution sequencing including external command generator and dynamic task execution sequencer
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
US20030233374A1 (en) 2002-03-14 2003-12-18 Ulrich Spinola Dynamic workflow process
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
JP2003331095A (ja) 2002-05-13 2003-11-21 Nec Software Kyushu Ltd Db管理によるワークフロー(申請承認業務)システム
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
US7299244B2 (en) 2002-12-10 2007-11-20 Hewlett-Packard Development Company, L.P. System and method for dynamic sequencing of a requirements-based workflow
US7448024B2 (en) 2002-12-12 2008-11-04 Bea Systems, Inc. System and method for software application development in a portal environment
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
GB2396928A (en) 2003-01-04 2004-07-07 Quicksilva Ltd Business process management tool framework
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
US20050005259A1 (en) * 2003-03-14 2005-01-06 Infowave Software, Inc. System and method for communication and mapping of business objects between mobile client devices and a plurality of backend systems
US7370333B2 (en) * 2003-06-02 2008-05-06 Microsoft Corporation Efficient processing of a convoy workflow scenario in a message driven process
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
US7464366B2 (en) * 2004-10-01 2008-12-09 Microsoft Corporation Programming interface for a componentized and extensible workflow model
US7792693B2 (en) 2005-02-25 2010-09-07 Novell, Inc. Distributed workflow techniques
US8140373B2 (en) * 2005-04-07 2012-03-20 International Business Machines Corporation Data driven dynamic workflow
US8230042B2 (en) * 2005-04-19 2012-07-24 International Business Machines Corporation Policy based auditing of workflows
US7363628B2 (en) * 2005-06-27 2008-04-22 Microsoft Corporation Data centric and protocol agnostic workflows for exchanging data between a workflow instance and a workflow host
US8849691B2 (en) 2005-12-29 2014-09-30 Microsoft Corporation Modeling user input and interaction in workflow based applications
US20070156487A1 (en) 2005-12-29 2007-07-05 Microsoft Corporation Object model on workflow
US7680683B2 (en) 2005-12-29 2010-03-16 Microsoft Corporation Dynamically repositioning workflow by end users
US20070156486A1 (en) 2005-12-29 2007-07-05 Microsoft Corporation Multiple concurrent workflow persistence schemes
US20070245300A1 (en) * 2006-03-22 2007-10-18 Benjamin Chan Apparatus, system, and method for presenting project scheduling information in combination with workflow information
US8069439B2 (en) * 2006-03-30 2011-11-29 Microsoft Corporation Framework for modeling continuations in workflows
US20070239498A1 (en) * 2006-03-30 2007-10-11 Microsoft Corporation Framework for modeling cancellation for process-centric programs
US20070239505A1 (en) * 2006-03-30 2007-10-11 Microsoft Corporation Abstract execution model for a continuation-based meta-runtime
US7739135B2 (en) * 2006-03-30 2010-06-15 Microsoft Corporation Asynchronous fault handling in process-centric programs
US8024405B2 (en) 2006-03-30 2011-09-20 Microsoft Corporation Declarative model for concurrency-control across lightweight threads
JP2007279838A (ja) * 2006-04-03 2007-10-25 Ibm Japan Ltd 情報処理装置、方法およびプログラム
US20080040417A1 (en) * 2006-08-09 2008-02-14 Gearworks, Inc. System and method for allocating workflow operations to a computing device
US9183011B2 (en) * 2006-10-31 2015-11-10 Oracle America Inc. Method and system for runtime environment emulation
US7506001B2 (en) * 2006-11-01 2009-03-17 I3Solutions Enterprise proposal management system
US20080243524A1 (en) 2007-03-28 2008-10-02 International Business Machines Corporation System and Method for Automating Internal Controls
WO2008152687A1 (ja) 2007-06-11 2008-12-18 Fujitsu Limited ワークフロー定義変更プログラム、ワークフロー定義変更方法およびワークフロー定義変更装置
US7827127B2 (en) * 2007-10-26 2010-11-02 Microsoft Corporation Data scoping and data flow in a continuation based runtime
US8868532B2 (en) 2008-08-08 2014-10-21 Microsoft Corporation Message exchange pattern rendezvous abstraction
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
US8307368B2 (en) 2009-05-26 2012-11-06 Microsoft Corporation Locality-based scheduling in continuation-based runtimes
US20100324948A1 (en) * 2009-06-18 2010-12-23 Microsoft Corporation Managing event timelines
US9536264B2 (en) * 2011-11-14 2017-01-03 Microsoft Technology Licensing, Llc Host agnostic messaging in a continuation based runtime

Also Published As

Publication number Publication date
RU2008126237A (ru) 2010-01-10
EP1969484A4 (en) 2011-06-22
CN101346713B (zh) 2011-10-26
US20070156485A1 (en) 2007-07-05
CN101346713A (zh) 2009-01-14
BRPI0618302A8 (pt) 2016-12-20
JP2009522645A (ja) 2009-06-11
US9710773B2 (en) 2017-07-18
WO2007078593A1 (en) 2007-07-12
EP1969484A1 (en) 2008-09-17
US20150206079A1 (en) 2015-07-23
KR20080087804A (ko) 2008-10-01
US8849691B2 (en) 2014-09-30
RU2445688C2 (ru) 2012-03-20

Similar Documents

Publication Publication Date Title
BRPI0618302A2 (pt) modelagem da entrada do usuário e interação em aplicativos baseados em fluxo de trabalho
US10185937B1 (en) Workflow support for an annotations-based generic load generator
US11632387B2 (en) Systems and methods for an artificial intelligence driven smart template
BRPI0620869A2 (pt) modelo de objeto em fluxo de trabalho
US9588822B1 (en) Scheduler for data pipeline
US20150256481A1 (en) Elastic Compute Cloud Based On Underutilized Server Resources Using A Distributed Container System
US20160034995A1 (en) Method and system for automated indentification and engagement of service providers
EP1966723A1 (en) Dynamically repositioning workflow by end users
BRPI0618982A2 (pt) esquemas de persistência de fluxo de trabalho simultáneos múltiplos
El-Omari Cloud IoT as a crucial enabler: a survey and taxonomy
Srinivasan Cloud Computing: A practical approach for learning and implementation
US10684889B2 (en) Systems, methods, and computer program products for scheduling processing jobs to run in a computer system
US20240046215A1 (en) Apparatus and method for distributed dataflow execution in a distributed environment
US20230138343A1 (en) Version based model result explainability
Hunt Introduction to akka actors
US20230199081A1 (en) Iot device based habit workflow management
Day Agile Software Engineering: Agile methods, Scrum, and Extreme Programming
de Esteban Uranga Combining Edge Computing and Data Processing with Kubernetes
Singh et al. Need of Agile Development
Elsten Exploring the potential use of FaaS within an iPaaS infrastructure.
Kesa Performance characteristics of current microservice frameworks
Puche Pérez Move to continuous integration on the cloud
Brennan et al. PBStoHTCondor system for campus grids
TESTBEDS EUROPEAN MIDDLEWARE INITIATIVE

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]

Free format text: MANTIDO O INDEFERIMENTO UMA VEZ QUE NAO FOI APRESENTADO RECURSO DENTRO DO PRAZO LEGAL