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
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