O mapa conceitual contém três elementos fundamentais: conceito, proposição e palavras de ligação. Assim, para criar mapas precisam-se criar, fundamentalmente, estes três elementos, sendo que a proposição possui as conexões que ligam os conceitos, o relacionamento. Além destes, há outras características que podem ser inseridas em cada conceito, a exemplo de recursos como vídeo, áudio e imagem.
Para implementar a arquitetura orientada a serviços para mapas conceituais, houve a necessidade de avaliar as funcionalidades que se desejava disponibilizar como serviços. Desta forma, optou-se por desenvolver os seguintes serviços contemplando os quinze requisitos listados anteriormente: criar mapa conceitual, inserir conceito, inserir frase de ligação, inserir
conexão, inserir recurso, apagar conceito, apagar frase de ligação, apagar conexão, apagar recurso, editar conceito, editar frase de ligação, editar a aparência do conceito, editar a aparência da frase, editar estilo do conceito e editar estilo da frase. A Tabela 3 apresenta todos os Web Services implementados e os seus respectivos parâmetros de entrada e saída.
Tabela 3: Web Services da arquitetura para mapas conceituais.
Serviço Parâmetros de entrada Parâmetros Retornados
criarMapaConceitual Titulo: String Mapa: String
inserirConceito
Titulo: string Conceito: string Position_X: integer
Position_Y: integer Mapa: String
inserirFraseLigacao
Titulo: string Relacao: string Position_X: integer
Position_Y: integer Mapa: String
Inserirconexao Titulo: string From_id: integer To_id: integer Mapa: String inserirRecurso Titulo: string Parent_id: integer NameRecurso: string url: string Mapa: String
apagarConceito Titulo: string Id: integer Mapa: String
apagarFraseLigacao Titulo: string Id: integer Mapa: String
apagarConexao Titulo: string Id: integer Mapa: String
apagarRecurso Titulo: string idConceito: integer idRecurso: string
Mapa: String
editarNomeConceito Titulo: string idConceito: integer
nomeNovo: string Mapa: String
editarNomeFrase Titulo: string idFrase: integer nomeNovo: string Mapa: String editarAparenciaConceito Titulo: string idConceito: string novoX: integer
novoY: integer Mapa: String
editarAparenciaFrase
Titulo: string idFrase: string novoX: integer
novoY: integer Mapa: String
editarFontStyleConceito Titulo: string idConceito: string fontStyle: string
Mapa: String
editarFontStyleFrase Titulo: string idFrase: string
fontStyle: string Mapa: String
Observa-se que em todos os Web Services apresentados na Tabela 3 é passado como parâmetro o título do mapa conceitual. Isto se faz necessário para que possa ser identificado para qual mapa conceitual o cliente está solicitando o serviço. Outra característica comum é o parâmetro retornado, pois todos retornam o mapa conceitual, ou seja, os serviços incluem novos parâmetros no mapa e o retornam em forma de string. Essa string nada mais é que o conteúdo do arquivo CXL gerado.
Para desenvolver os Web Services da arquitetura e criar os mapas conceituais em CXL utilizou-se a linguagem JAVA aliada ao framework SOA AXIS 2 e à API JDom. AXIS 2 é responsável por mascarar a implementação dos serviços, fazendo com que o desenvolvedor possa criá-los como métodos JAVA comuns e o framework se responsabiliza por criar o serviço automaticamente. Desta forma, é o próprio AXIS 2 que cria também o arquivo WSDL – formato XML que descreve os serviços.
Já o JDOM é responsável por manipular XML. Neste modelo, o documento XML inteiro é armazenado na memória do computador em um formato de árvore de nós, todos descendendo de uma raiz. É possível, então, aplicar vários métodos para localizar e manipular os nós.
Para utilizar os serviços da arquitetura, o Web Service inicial é o “criarMapaConceitual”, cujo diagrama de sequência foi mostrado na Figura 13. Este serviço tem como entrada o título do mapa conceitual. Com este título o serviço cria o objeto do tipo
document (objeto responsável pela criação da estrutura de árvore JDOM), que representa o
elemento raiz do arquivo XML, e insere no elemento “res-meta” a tag responsável pelo título do arquivo, como pode ser visto no exemplo uefs.cxl da Figura 10. O código abaixo, Figura 14, apresenta o método em JAVA por detrás do serviço “criarMapaConceitual”.
Na Figura 14, pode-se observar que, primeiramente, é criada uma instância da classe “Mapa”, e inserido o título com a função “setTitulo”. Após isso, cria-se uma instância do tipo
Document, no qual é passado como raiz o elemento “cmap” (“mapa.getCmap”), do objeto
“mapa” que acabou de ser criado e que é o elemento raiz de todo mapa conceitual definido pela CXL, esta estrutura pode ser observada no exemplo do código uefs.cxl presente na Figura 10.
O serviço “inserirConceito”, assim como todos os outros, tem como entrada o título do mapa conceitual. Para este serviço específico, as outras entradas são: o nome do conceito a ser criado, a posição referente a coordenada x do conceito e a posição referente a coordenada y.
Voltando ao exemplo da Figura 10, do arquivo uefs.cxl, se fosse utilizado este serviço de inserir conceito para criar o conceito “Ecomp” no mapa “UEFS” com, por exemplo, x igual a 73 e y igual a 56, as tags inseridas no mapa conceitual (arquivo CXL) por este serviço estaria da forma como apresenta a Figura 15.
Figura 15: Exemplo de saída do serviço “inserirConceito”.
Os outros serviços de inserção de dados no CXL, como: inserirFraseLigacao, inserirConexao e inserirRecurso, são bem parecidos ao serviço de inserir conceito, os seus parâmetros de entrada encontram-se na Tabela 3. Porém, o serviço responsável por inserir recursos tem uma peculiaridade a mais: os tipos de recursos aceitados. Assim, o serviço “inserirRecurso” aceita recursos inseridos nos seguintes tipos Multipurpose Internet Mail
Tabela 4: Tipos MIME aceitos pela arquitetura.
Grupo Tipo MIME Grupo
Image image/jpeg image/png image/tiff image/gif Image Video video/avi video/x-motion-jpeg video/quicktime video/mpeg video/x-ms-wmv Video
Text text/plain text/html
text/xml
Text
Audio audio/mpeg audio/wav
audio/midi Audio Application application/msword application/pdf application/vnd.ms-excel application/vnd.ms- powerpoint Application
Fonte: próprio autor.
Os serviços relacionados a exclusão de informações de um mapa conceitual são: apagarConceito, apagarFraseLigacao, apagarConexao e apagarRecurso. Estes serviços têm um fluxo de execução bem parecido com os serviços de inserir, a diferença é que para excluir algum componente do mapa, precisa-se varrer a estrutura, procurar pelo id desejado e excluir todos os elementos dele. Por exemplo, o serviço apagarConceito procura o conceito que o usuário deseja deletar (através do id), apaga o conceito e também deve apagar as tags referentes a sua aparência, recursos e conexões, caso haja. A Figura 16 mostra um exemplo de um arquivo CXL, onde o usuário inseriu dois conceitos “novela” e “atores”.
Figura 16: Arquivo cxl do mapa conceitual com os conceitos “novela” e “atores”.
Ao apagar o conceito “novela” (concept id= “1”), será apagado também a conexão em que ele está envolvido (connection id= “4”), a sua aparência (concept-appearance id= “1”) e os seus recursos (resource-group parent-id= “1”). Assim, o exemplo da Figura 16 estará agora como mostrado na Figura 17.
Figura 17: Arquivo cxl do mapa conceitual apenas com o conceito “atores”.
Os serviços de edição, por sua vez, têm um fluxo parecido com os serviços de exclusão. Estes serviços, editarNomeConceito, editarNomeFrase, editarAparenciaConceito, editarAparenciaFrase, editarFontStyleConceito e editarFontStyleFrase também precisam varrer a estrutura (document do mapa que se deseja editar), procurar pelo id desejado e editá- lo. Os conceitos que começam com “editarNome” são utilizados para modificar o nome do conceito e da frase de ligação, os serviços que começam com “editarAparencia” modificam as posições x e y dos conceitos e das frases de ligação, já os serviços que iniciam com “editarFont” modificam o tipo da letra dos conceitos e frases. Estes últimos serviços podem modificar a fonte para negrito, itálico ou sublinhado.