• Nenhum resultado encontrado

GET POST

7.4 APLICAÇÕES CLIENTES

Apesar do desenvolvimento de aplicações clientes estar fora do escopo desse trabalho, o estudo de caso apresenta três exemplos de im- plementação, para fins de validação da metodologia e do ferramental propostos. Duas aplicações clientes tradicionais foram desenvolvidas, uma para cada Web API. A aplicação cliente tradicional é uma imple- mentação que interage com a Web API sem usufruir das características semânticas oferecidas. Além dos clientes tradicionais, foi desenvolvido

um agente semântico capaz de interagir com as duas Web APIs. Para este estudo de caso, todas as aplicações clientes devem obter a lista de criminosos, em seguida obter todas as informações das pessoas apresen- tadas na lista. O código fonte das aplicações clientes está disponível em http://ivansalvadori.com.br/publicacoes/2015/dissertacaoMestrado/.

As aplicações clientes tracionais foram programadas de forma a conhecer previamente os detalhes da implementação da Web API. Os mecanismos de comunicação implementados no cliente tradicional não são dinâmicos. Isso significa que a estrutura das informações e a forma de execução das operações não podem ser modificadas em tempo de execução. Os clientes tradicionais estão preparados para manipu- lar as representações JSON disponibilizadas pela Web API, entretanto ignoram a descrição semântica. Isso implica que o cliente é capaz de consumir apenas as propriedades previamente conhecidas. As opera- ções também são previamente configuradas com base na implementação da Web API. As URLs, métodos HTTP, variáveis, dados enviados e re- cebidos são de conhecimento do cliente.

Obter lista em policiacivilrs-api/listaCriminosos

Obter dados criminoso Substituir variável {processo} na URL

policiacivilrs-api/listaCriminosos/{processo} Obter a variável {processo} de um criminoso Apresentar dados Fim vazia?Lista criminosoRemover

da lista Sim

Não Inicio

Figura 67 – Fluxo de operações do cliente tradicional - Polícia Civil-RS

O cliente tradicional da Web API da Polícia Civil do Estado do Rio Grande do Sul, cujo fluxo de operações é representado na Figura 67, primeiramente consulta a lista de criminosos através da execução da operação GET aplicada sobre a URL policiacivilrs-api/listaCriminosos. O resultado da execução dessa operação é a coleção de criminosos. Cada criminoso contido na lista apresenta o número do processo, que

é utilizado como identificador do item. Para cada item contido na lista, a aplicação cliente executa a consulta da URL policiacivilrs- api/listaCriminosos/{processo}, substituindo a variável processo pelo número do processo do criminoso. De acordo com a modelagem da Web API, todas as informações do criminoso estão disponíveis nas re- presentação retornadas, finalizando o procedimento.

O cliente tradicional da Web API do FBI, conforme mostra o flu- xograma apresentado na Figura 68, obtém a lista de criminosos através da execução da operação GET aplicada sobre a URL fbi-api/criminals. Para cada item da lista retornada, duas operações são executadas, pois as informações do criminosos estão distribuídas entre as representações CriminalRep e DescriptionRep. A primeira operação executada uti- liza o método GET na URL fbi-api/criminals/{protocol}, substituindo a variável protocol pelo valor da variável protocol do item da lista. Essa operação resulta nas informações básicas do criminoso. Outras informações são obtidas através da execução da operação GET sobre a URL fbi-api/criminals/{protocol}/description, também realizando a substituição da variável protocol. Ao término deste laço de repetição, a plicação cliente obtém todas as informações dos criminosos e finaliza o procedimento. Obter lista em fbi-api/criminals Obter dados Substituir variável {protocol} na URL fbi-api/criminals/{protocol} Obter a variável {protocol} de um criminoso Apresentar dados Fim vazia?Lista criminosoRemover

da lista Sim Não Inicio Obter dados

Substituir variável {protocol} na URL fbi-api/criminals/{protocol}/description Figura 68 – Fluxo de operações do cliente tradicional - FBI

O agente semântico possui uma abordagem diferenciada. Ele é capaz de interpretar as representações semânticas disponibilizadas por qualquer Web API que utiliza o vocabulário específico do domínio. O agente semântico é capaz de executar operações descritas pelo profile Hydra, em busca de um determinado objetivo, como por exemplo, criar, obter, remover ou alterar uma determinada representação.

Obter documentação

Substituir variáveis com base na lista

de criminosos Identificar operações

LoadResourceOperation que retornam classes

de interesse

Apresentar dados Fim vazia?Lista criminosoRemover

da lista Sim Não Inicio Obter dados Identificar operação LoadResourceOperation que retorna SupportedCollection

de wantedpeople:Criminal Obter lista Identificar as classes com propriedades de interesse Obter documentação

Figura 69 – Fluxo de operações do agente semântico

Neste estudo de caso, o agente semântico, cujo fluxo de opera- ções é especificado na Figura 69, considera a documentação da Web API válida por apenas uma requisição. Ao final da execução de uma operação, a documentação deve ser consultada novamente. Este é um cenário extremamente pessimista, entretanto, representa a execução no

contexto de pior caso. Sendo assim, a primeira ação do agente semân- tico é obter a documentação da Web API. O próximo passo é obter a lista de criminosos. Para fazê-lo, o agente semântico procura na documentação por uma operação descrita como LoadResourceOpera- tion que retorna uma coleção de Criminal. Localizada a operação, o agente semântico a executa e mantém o resultado obtido em memória. Para obter as informações dos criminosos, o agente semântico realiza uma busca na documentação pelas propriedades associadas aos termos da classe semântica Criminal. A busca tem o objetivo de identificar quais as representações possuem as propriedades desejadas. Após a fase de identificação de representações, o agente semântico localiza as operações do tipo LoadResourceOperation que possuem o parâmetro returns com as representações de interesse. A fase final é a execução das operações identificadas para todos os itens da lista de criminosos, resolvendo dinamicamente as variáveis presentes nas operações. Ao fim da execução dessas operações, o agente semântico tem acesso a todas as informações dos criminosos e encerra o procedimento.

7.5 CONSIDERAÇÕES FINAIS

Este capítulo apresentou um estudo de caso que tem como ob- jetivo aplicar a abordagem de desenvolvimento proposta e o suporte ferramental oferecido pelo framework JAX-SRS. O estudo de caso é constituído por duas Web APIs projetadas utilizando a abordagem de desenvolvimento proposta e implementadas com o framework JAX- SRS. O estudo de caso apresenta a implementação de três aplicações clientes, dentre elas um agente semântico capaz comunicar-se adequa- damente com Web APIs RESTful Semânticas. Os clientes são progra- mados para realizar um conjunto limitado de operações, que envolvem apenas a leitura de informações, entretanto, oferecem a visão necessária para validar as propostas.

8 ANÁLISES E VALIDAÇÕES

Este capítulo apresenta as análises e validações para as propostas do trabalho. A validação da abordagem de desenvolvimento é realizada através da execução do estudo de caso apresentado no capítulo 7. As Web APIs do estudo de caso são implementadas com o framework JAX- SRS, permitindo a validação do suporte ferramental proposto. Este ca- pítulo apresenta também uma análise comparativa entre o framework JAX-SRS e o suporte ferramental apresentado no Estado da Arte (se- ção 4.3). Os modelos de maturidade RMM e CoHA são analisados e comparados com o modelo de maturidade proposto.