7. RESULTS AND DISCUSSION
7.3 Results for ECA of Clad Pipes with Girth Welds
Nesta subseção nós apresentamos os experimento conduzidos para demonstrar como a nossa instanciação do framework de geração dinâmica de processos lida com exceções que podem ser recuperadas na fase tática, gerando um novo workflow concreto sem a necessidade de reiniciar o processo de reconfiguração. Para isso, nós injetamos falhas em alguns componentes durante a execução do processo de reconfiguração.
Considerando o workflow concreto apresentado na Figura 14 nós injetamos falhas no componente SchedSequentialInstance para que ele lance uma exceção durante a execução da tarefa Install(SchedSequentialInstance). Dessa forma, o processo deve gerar e executar um workflow de recuperação antes de voltar para a fase tática.
Figura 15: Exemplo de um Workflow de Recuperação Gerado para Experimentos com Recu- peração na Fase Tática
A Figura 15 mostra um workflow de recuperação capaz de voltar a aplicação ao seu estado inicial (ou seja, um estado onde não há uma configuração estabelecida). Após o framework executar o workflow de recuperação o processo retorna para a fase tática onde ele tentará encontrar uma nova configuração concreta para o workflow abstrato mostrado na Figura 12.
Após retornar à fase tática uma nova configuração concreta é então selecionada. A Fi- gura 16 apresenta uma outra configuração concreta do comanche (o XMI do modelo dessa configuração pode ser visto no Apêndice D) para a configuração abstrata apresenta na Figura 11. Note que a instância do componente Scheduler agora é SchedMultiThrea- dInstance (mostrado na figura com preenchimento na cor cinza), que escalona as tarefas de forma que elas possam ser executadas em paralelo. Essa nova configuração concreta é então utilizada para gerar um novo workflow concreto.
A Figura 17 (reduzimos o nome das interfaces para caber na figura) apresenta um novo workflow concreto gerado para a configuração concreta apresentada na Figura 16. As tarefas que sofreram alterações em relação ao workflow concreto apresentado na Figura 14
Figura 16: Exemplo de Configuração Concreta para a Configuração Abstrata da Figura 11 com Scheduler MultiThread
estão com preenchimento em cinza, onde SchedSequentialInstance foi substituído por SchedMultiThread. Após o novo workflow concreto ser gerado ele é executado na fase operacional e a configuração da Figura 16 é então estabelecida.
4.3
Discussão
Nesta Seção nós discutimos a integração do framework de geração dinâmica de pro- cessos com o ambiente OSGi e as diversas tecnologias necessárias para a instanciação do framework sobre outros ambientes. A seguir nós apresentamos nossa discussão destacando também algumas das dificuldades encontradas durante a nossa instanciação.
Para integrar o framework de geração dinâmica de processo ao ambiente OSGi foi necessário o desenvolvimento de uma interface para que o framework pudesse executar os workflows gerados. Devido ao sistema de gerenciamento de workflows utilizado pelo framework necessitar de uma interface WSDL, foi necessário que essa interface de comu- nicação entre o framework e o ambiente fosse provida na forma de uma interface WSDL. Essa interface WSDL é disponibilizada dentro do nosso componente Configurator e além dos métodos para execução das tarefas, oferece também métodos para que o framework recupere a configuração atual e a configuração selecionada. Para disponibilizar essa in- terface WSDL nós utilizamos o CXF Distributed OSGi, que é um projeto da Apache que
implementa o capítulo de serviços remotos da especificação Enterprise do OSGi (ALLI-
ANCE, 2010). O CXF Distributed OSGi é disponibilizado na forma de um bundle que deve
estar instalado no ambiente. O ambiente OSGi utilizado nos nossos experimentos foi a implementação Equinox em sua versão 3.7.
Nosso objetivo inicial era utilizar a mesma aplicação que Da Silva utilizou em sua instanciação do framework de geração dinâmica de processos. Dessa forma, teríamos uma maneira de comparar o processo de reconfiguração das duas abordagens. Porém, devido ao ambiente OSGi não oferecer uma forma explicita para conexão entre os componentes isso não foi possível. A falta da conexão explicita também impossibilitou a replicação dos experimentos de desempenho e escalabilidade que foram realizados por Da Silva. O ambi- ente OSGi também não oferece estados de bloqueio e quiescência para seus bundles. Dessa forma, requisições que estejam sendo atendidas por componentes que estão participando de uma reconfiguração serão perdidos assim como novas requisições feitas durante a adap- tação. Para suportar conexão explícita, bloqueio e quiescência, é necessário um modelo de componentes que rode como uma camada acima do ambiente OSGi.
Como esperado para soluções desse tipo, é necessária a presença de especialistas no domínio de aplicação e no ambiente de execução. O framework de geração dinâmica de processos utiliza diversas tecnologias e exige a definição de vários artefatos, o que exige algum conhecimento nessas tecnologias. Além disso, é preciso um conhecimento sobre
o ambiente no qual o framework será instanciado, pois as características, facilidades e limitações do ambiente devem ser levadas em conta durante a definição dos diversos artefatos do framework.
Durante a nossa instanciação, concluímos também que a existência de uma documen- tação sobre os diversos artefatos a serem gerados durante a instanciação com tutoriais práticos e guias de configuração das diversas funcionalidades do framework melhoraria a produtividade durante a sua instanciação.
Uma facilidade notada durante a instanciação do framework de geração dinâmica de processos é que, uma vez instanciado, o administrador do sistema somente precisa lidar com modelos arquiteturais. Novos componentes e configurações da aplicação podem ser facilmente adicionados sem alteração nenhuma na instanciação do framework. Em expe- rimentos que realizamos saindo de uma configuração A para alcançar um configuração B com um novo componente, a única coisa necessária foi a criação de um novo modelo arquitetural representando a nova configuração da aplicação. Além disso, novas aplica- ções que estejam de acordo com o metamodelo específico de domínio também podem ser facilmente consideradas com uma mesma instanciação do framework.
4.4
Sumário do Capítulo
Neste capítulo apresentamos uma prova de conceito da instanciação do framework de geração dinâmica de processos sobre o ambiente OSGi. Na primeira parte nós demonstra- mos os diversos artefatos que são gerados de forma automática pelo framework durante a geração e execução do plano de adaptação. Na segunda parte nós discutimos sobre a integração do framework com o ambiente OSGi, sobre as diversas tecnologias necessárias para sua instanciação e as principais vantagens obtidas com a instanciação do framework.