14.04.2013 Views

Mecanismos de Flexibilização de Sistemas ... - Igor.pro.br

Mecanismos de Flexibilização de Sistemas ... - Igor.pro.br

Mecanismos de Flexibilização de Sistemas ... - Igor.pro.br

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

A seguir são apresentados os estados <strong>pro</strong>postos e a <strong>de</strong>scrição <strong>de</strong> cada um:<<strong>br</strong> />

• suspensa: continua com o mesmo significado, indicando que uma instância <strong>de</strong> tarefa foi parada, porém<<strong>br</strong> />

po<strong>de</strong> ser retomada a qualquer instante;<<strong>br</strong> />

• nãoPronta: é o estado inicial das instâncias. Indica que a tarefa foi instanciada, porém ainda não tem<<strong>br</strong> />

suas condições satisfeitas para ser disponibilizada para execução;<<strong>br</strong> />

o antecipável: indica que a instância da tarefa po<strong>de</strong>rá ser antecipada se tiver suas condições <strong>de</strong><<strong>br</strong> />

antecipação satisfeitas;<<strong>br</strong> />

o nãoAntecipável: indica que a instância da tarefa não po<strong>de</strong>rá ser executada antecipadamente;<<strong>br</strong> />

• <strong>pro</strong>nta: a instância teve suas pré-condições (<strong>de</strong> execução ou antecipação) satisfeitas e está <strong>pro</strong>nta para ser<<strong>br</strong> />

iniciada;<<strong>br</strong> />

• paraAntecipar: indica que a instância da tarefa teve as pré-condições <strong>de</strong> antecipação satisfeitas e<<strong>br</strong> />

aguarda ser iniciada;<<strong>br</strong> />

o paraExecutar: a instância po<strong>de</strong> ter sua execução iniciada, pois suas pré-condições <strong>de</strong><<strong>br</strong> />

execução foram satisfeitas por completo;<<strong>br</strong> />

o antecipando: tarefa está sendo rodada <strong>de</strong> maneira antecipada;<<strong>br</strong> />

o executando: tarefa está executando e po<strong>de</strong> ser concluída normalmente.<<strong>br</strong> />

Quando se instancia um <strong>pro</strong>cesso, todas suas tarefas são instanciadas. Quando instanciadas as tarefas são<<strong>br</strong> />

levadas para seu estado inicial. Neste caso o estado inicial das instâncias <strong>de</strong> tarefa é o estado nãoPronta. A instância<<strong>br</strong> />

é então mapeada para um dos dois sub-estados: antecipável ou nãoAntecipável. Tal classificação é realizada<<strong>br</strong> />

durante a fase <strong>de</strong> mo<strong>de</strong>lagem do <strong>pro</strong>cesso (como <strong>de</strong>scrito na seção anterior). A transição bidirecional existente entre<<strong>br</strong> />

estes dois estados se <strong>de</strong>ve à possibilida<strong>de</strong> <strong>de</strong> alteração <strong>de</strong>sta classificação mesmo durante a execução do <strong>pro</strong>cesso.<<strong>br</strong> />

Enquanto a instância da tarefa não passou ao estado <strong>pro</strong>nta é possível que o gerente modifique sua condição passando-a<<strong>br</strong> />

<strong>de</strong> antecipável a nãoAntecipável e vice-versa. Possibilitando a mudança <strong>de</strong> estado durante a execução<<strong>br</strong> />

aumenta-se a flexibilida<strong>de</strong> do sistema, <strong>de</strong>ixando inclusive que agentes solicitem a antecipação <strong>de</strong> tarefas mo<strong>de</strong>ladas<<strong>br</strong> />

como não antecipáveis. Além disso é possível a<strong>de</strong>quar cada instância <strong>de</strong> um <strong>pro</strong>cesso para suas necessida<strong>de</strong>s e<<strong>br</strong> />

características próprias apenas alterando o estado <strong>de</strong> uma tarefa, sem que seja preciso modificar o mo<strong>de</strong>lo do <strong>pro</strong>cesso,<<strong>br</strong> />

ou evoluir o esquema do workflow. A complexida<strong>de</strong> inserida por tal transição é mínima se comparada à complexida<strong>de</strong><<strong>br</strong> />

necessária para evoluir o esquema do <strong>pro</strong>cesso para cada instância em tempo <strong>de</strong> execução.<<strong>br</strong> />

A seguir os comportamentos das tarefas antecipáveis e não antecipáveis serão explicados, através do<<strong>br</strong> />

<strong>de</strong>talhamento das transições entre os estados.<<strong>br</strong> />

Primeiramente serão atacadas as tarefas que não po<strong>de</strong>m utilizar a antecipação em seu andamento, isto é, as<<strong>br</strong> />

tarefas naoAntecipaveis. Uma tarefa naoAntecipavel terá seu funcionamento similar ao funcionamento das<<strong>br</strong> />

tarefas em sistemas <strong>de</strong> workflow tradicionais.<<strong>br</strong> />

Sendo assim, uma tarefa naoAntecipavel se torna <strong>pro</strong>nta.paraExecutar assim que todas suas<<strong>br</strong> />

condições <strong>de</strong> disparo forem satisfeitas (suas antecessoras forem concluídas e os dados <strong>de</strong> entrada forem resultados<<strong>br</strong> />

finais). A exceção são as tarefas iniciais do <strong>pro</strong>cesso, que passam ao estado <strong>pro</strong>nta.paraExecutar quando o<<strong>br</strong> />

<strong>pro</strong>cesso é instanciado. Neste estado a tarefa fica disponível na lista <strong>de</strong> trabalho (worklist) dos agentes capazes <strong>de</strong><<strong>br</strong> />

executá-las.<<strong>br</strong> />

Para que a tarefa passe então do estado <strong>pro</strong>nta.paraExecutar para o estado executando é necessário<<strong>br</strong> />

que esta seja escolhida por algum dos agentes para a qual esta foi oferecida e este comece a executá-la. Ao passar para<<strong>br</strong> />

tal estado a tarefa po<strong>de</strong> fornecer resultados (intermediários e/ou finais) e po<strong>de</strong> ser concluída, quando suas pós<<strong>br</strong> />

condições forem satisfeitas.<<strong>br</strong> />

Além <strong>de</strong>sta transição, uma tarefa executando po<strong>de</strong> passar ao estado suspensa a qualquer instante. Este<<strong>br</strong> />

estado se refere às tarefas que foram paralisadas por escolha do agente responsável (ou do gerente), po<strong>de</strong>ndo esta tarefa<<strong>br</strong> />

ser retomada a qualquer instante. Quando retomada, a tarefa volta ao estado executando, po<strong>de</strong>ndo ser concluída<<strong>br</strong> />

ou suspensa novamente.<<strong>br</strong> />

Já uma tarefa classificada como antecipável po<strong>de</strong> ter seu comportamento modificado justamente pela<<strong>br</strong> />

flexibilida<strong>de</strong> oferecida pela antecipação. O fato <strong>de</strong> uma tarefa ser dita antecipável não garante que esta será<<strong>br</strong> />

antecipada, apenas permite que esta possa ser antecipada. É apenas uma alternativa para possibilitar a cooperação entre<<strong>br</strong> />

os agentes (através da troca <strong>de</strong> resultados intermediários) e ajudar na redução do tempo <strong>de</strong> execução dos <strong>pro</strong>cessos.<<strong>br</strong> />

8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!