• Nenhum resultado encontrado

4.1 Arquitetura de Software

4.1.3 CD Componente Diretório

O Componente Diretório (CD), instanciado no EXEHDABase, é formado por três módulos:

1. Controlador de Recursos - esse módulo tem 5 objetivos: (i) realizar a manu- tenção do estado dos recursos; (ii) gerenciar o Repositório de Recursos Ativos (RRA); (iii) gerenciar o Repositório de Recursos Negados (RRN); (iv) receber as consultas dos Componentes Cliente; e (v) receber as mensagens enviadas pelos Componentes Recurso. O lease é um intervalo de tempo, gerenciado pelo Con- trolador de Recursos. O Componente Recurso precisa renovar, periodicamente, o lease do recurso localizado no CD, caso contrário, será removido do Repositó- rio de Recursos Ativos (RRA). Quando se referir aos recursos presentes no am- biente computacional, a modelagem parte da premissa de que todo e qualquer recurso, quando descoberto pela primeira vez, tem suas características extraí- das de seu arquivo de configuração para armazenamento na ontologia. Uma vez presente no ambiente, há troca de mensagens entre o Componente Diretório e o Componente Recurso, garantindo que todos os recursos que não tenham seu lease renovado no período previsto, sejam desativados.

A modelagem proposta por este módulo, defende o uso de três possíveis valores para o estado atual de um recurso presente no ambiente:

• Inativo - estado de um recurso que se encontra no ambiente mas não teve seu estado renovado no limite de tempo previsto para sua renovação na arquitetura.

• Ativo - estado de um recurso que se fez descoberto recentemente pela ar- quitetura e que pode ser acessado por aplicações.

• Negado - estado de recurso definido de forma manual na arquitetura. Neste estado, todo e qualquer recurso neste estado será ignorado pela aplicação.

Para auxiliar com o controle do estado de recursos, são mantidas informações do estado atual de cada recurso presente no ambiente, bem como informa- ções referentes à última data que determinado recurso enviou uma mensagem, autoafirmando-se ativo no ambiente computacional. Por sua vez, o módulo Con- trolador de Recursos possui um serviço, denominado Controlador de Estado, que utiliza os seguintes repositórios: Repositório de Recursos Ativos (RRA) e Repositório de Recursos Negados (RRN).

O serviço Controlador de Estado é responsável por verificar periodicamente to- dos os recursos que não tiveram seu estado renovado, removendo-os do Re- positório de Recursos Ativos. Esse serviço implementa uma funcionalidade de autoconfiguração, visto que não é necessária a iteração do usuário para realizar a manutenção do estado do recurso.

O RRA é um repositório em base de dados relacional Postgres que mantém armazenados todos os recursos que se encontram ativos no ambiente computa- cional gerenciado pelo middleware EXEHDA, seu identificador e data de última atualização, tempo este utilizado para validação de seu estado atual.

O RRN, de igual modo que o RRA, também é um repositório em base de dados relacional Postgres, com a diferença, que mantém armazenados os recursos no primeiro momento em que eles forem anunciados pelo Componente Recurso, e que não podem ser retornados em consultas realizadas por aplicações externas.

2. Processador Semântico - responsável pelo processamento das consultas em lin- guagem SPARQL, segue o padrão arquitetural REST com a integração do Apa- che Jena Fuseki (DILLI et al., 2017). A base de dados TDB realiza a persistência de dados, sendo que o motor de inferência foi configurado para utilizar o racioci- nador genérico do Apache Jena. Com isso, é possível definir regras adicionais para aumentar a expressividade nas consultas. Por meio desse módulo, são re- alizadas as consultas à ontologia e são utilizados raciocinadores com o intuito

de aumentar a expressividade das consultas, gerando, por sua vez, melhores resultados (AZEVEDO, 2017).

O Processador Semântico atual foi aperfeiçoado e sua ontologia (Figura 12) re- modelada para fazer uso do servidor Apache Fuseki, base de dados TDB e lin- guagem de consulta SPARQL.

Figura 12 – Ontologia Concebida para o Processador Semântico do EXEHDA-RR

O Apache Fuseki é um componente do Apache Jena que engloba vários de seus componentes, a fim de disponibilizar um servidor SPARQL standalone, per- mitindo que sejam utilizadas as demais funcionalidades providas pelo Apache Jena (HOFEREK, 2012). A ferramenta Jena oferece as seguintes funcionalida- des:

• leitura, processamento e escrita de dados RDF em XML, em formato de triplas;

• uma API de ontologia para manipular OWL, com uso de RDF; • motor de inferência de raciocinadores RDF sobre dados OWL;

• armazenamento de grandes quantidades de triplas RDF, armazenadas em disco;

• motor de consulta com base nas últimas especificações da linguagem SPARQL;

• conjunto de configurações internas que permite que dados RDF sejam pu- blicados por outras aplicações, utilizando uma variedade de protocolos, in- cluindo SPARQL.

Em adição a todas essas características, o Fuseki permite que as consultas, as atualizações e os uploads de arquivos SPARQL sejam direcionadas a uma base de dados. Também conta com a presença de validadores para consultas e atualizações SPARQL, expandindo a comunicação para formatos além de RDF ou XML (XIN et al., 2013).

O TDB é uma base de dados que armazena informações em pares, contendo chaves e valores, sendo seus dados armazenados em formato binário. No Apa- che Jena, ele é o componente responsável por armazenar os dados RDF e realizar as consultas por meio da linguagem SQL. O Apache Fuseki admite a realização de procedimentos com a linguagem SPARQL no conjunto de dados presentes no TDB, baseado em padrões REST sobre o protocolo HTTP (XIN et al., 2013).

De acordo com a W3C, SPARQL contém um conjunto de padrões de triplas, de- nominado padrão básico de grafos. O resultado de dados de consulta SPARQL pode retornar conjuntos de grafos RDF. É considerada uma linguagem para trabalhar com dados RDF pela possibilidade de gerar consultas mais comple- xas, relacionadas diretamente com expressividade em resultados de buscas (PRUD’HOMMEAUX; SEABORNE, 2008).

3. Comunicador Intercelular - responsável pela comunicação com as células vizi- nhas. A comunicação entre as células é realizada utilizando tecnologias P2P entre os EXEHDABase de cada célula. A comunicação cliente/servidor ocorre apenas entre os diretórios localizados nos EXEHDABase. Os CC e CR acessam apenas o diretório da célula local. O Comunicador Intercelular é responsável por repassar a pesquisa para as células vizinhas.

4. Classificador de Recursos - tem por finalidade realizar a classificação dos recur- sos mais adequados à solicitação do cliente. Este módulo contém os seguintes serviços:

• Classificador MCDA - responsável por classificar todos os recursos desco- bertos através do algoritmo MCDA proposto.

• Pré-Classificador Machine Learning - por meio deste serviço, os novos re- cursos recém descobertos são pré-classificados, visando reduzir o custo computacional gerado pelo algoritmo MCDA.

• Classificador Fuzzy - tem por objetivo resolver as incertezas na especifica- ção e processamento de preferências do cliente.

A Figura 13 ilustra o fluxo de execução dos componentes do EXEHDA-RR e a atuação do módulo Classificador de Recursos e seus serviços.

Figura 13 – Fluxo de Execução do Módulo Classificador de Recursos

Considerando que o Módulo Classificador de Recursos do EXEHDA-RR agrega as principais contribuições desta Tese, segue, na Seção 4.2 uma discussão circunstanci- ada sobre esse módulo. Nesta seção estão sistematizadas as suas funcionalidades, os serviços da arquitetura que são envolvidos e a sua sinergia de atuação no atendi- mento das diferentes demandas.