Um sistema web para gerenciamento de - ESPWEB

Propaganda
Um Sistema Web para Gerenciamento de Assistência
Técnica com Suporte a Smartphones
1
Luiz Guilherme Bon Ami Teixeira , Edson A. Oliveira Junior
2
Resumo.
Sistemas de informação são ferramentas fundamentais para automatizar e
proporcionar maior agilidade nos processos de uma organização. Em alguns casos é
necessário que as informações possam ser acessadas e gerenciadas remotamente por
meio de navegadores Web ou dispositivos móveis. Portanto, é fundamental a existência
de sistemas que permitam a interação da Web com tecnologias móveis como, por
exemplo, no ramo de assistência técnica. Assim, este artigo apresenta o
desenvolvimento de um sistema Web para o gerenciamento de solicitações de
assistência técnica referente a computadores e peças relacionadas. O sistema foi
desenvolvido para a Web usando a tecnologia Java EE 6 e a plataforma Android que
proporciona uma interação com tal sistema por meio de um smartphone.
Palavras-chave: Android, Aplicação Mobile, Assistência Técnica, Chamados, Java, Sistema
Web.
Abstract.
Keywords: The use of information systems is a fundamental tool to automate and
provide greater agility in an organization processes. It is usually necessary that the
information can be accessed and managed remotely through web browsers or
mobile devices. Therefore, it is essential to have systems that allow interaction
between Web technologies and mobile as, for instance, in the field of technical
assistance. Thus, this paper presents the development of a Web system for
managing repair services for computers and related parts. The system was
developed for the Web by using the Java EE 6 platform and Android for providing
one interaction with such a system via a smartphone.
Keywords: Android, Java, Mobile Application, Repair Service, Technical Assistance, Web
System.
1. Introdução
Um dos principais desafios da empresa Click Informática situada em Francisco
Alves – PR é gerenciar a demanda de solicitações de assistência técnica referente a
1
Aluno do curso de especialização em Desenvolvimento de Sistemas para Web – Universidade Estadual de
Maringá (UEM) - Av. Colombo, 5790 – Bloco C56 – Maringá – PR – Brasil – [email protected]
2
Departamento de Informática – Universidade Estadual de Maringá (UEM) - Av. Colombo, 5790 – Bloco
C56 – Maringá – PR – Brasil - [email protected]
1
computadores, com qualidade e no menor tempo possível. Visto que a empresa mesmo
adotando certas tecnologias não as utiliza para esse fim, atualmente adota processos
manuais e obsoletos. Com isso, muitos dos registros das solicitações acabam sendo
esquecidos e não atendidos, provocando demora e insatisfação dos clientes. A empresa
não possui nenhum sistema para tal gerenciamento e não disponibiliza para os clientes
nenhum meio para acompanhar em que situação encontra-se a solicitação realizada.
Nesse caso é importante que exista uma interação entre a empresa e seus
clientes por meio de um sistema, por meio do qual que o cliente pode acompanhar o
andamento da solicitação realizada podendo, assim, saber em que o momento foi
concluído o serviço contratado. Além disso, o cliente não precisará efetuar ligações e
nem se deslocar até a empresa para saber como está o andamento do serviço solicitado.
Este artigo apresenta um sistema Web que tem como finalidade atender às
necessidades da empresa, centralizando e gerenciando as solicitações de assistência
técnica. Uma aplicação para smartphones também foi desenvolvida para permitir ao
cliente acompanhar suas solicitações.
Este artigo está organizado da seguinte forma: a Seção 2 apresenta as
tecnologias adotadas para o desenvolvimento do sistema proposto; na Seção 3 é
apresentado o sistema Web desenvolvido para gerenciar solicitações de assistência
técnica, a aplicação mobile e as suas respectivas arquiteturas; a Seção 4 apresenta as
lições aprendidas e, a Seção 5 apresenta as conclusões e direções para trabalhos
futuros.
2. Tecnologias Adotadas
Esta seção apresenta os conceitos fundamentais sobre as tecnologias utilizadas
no desenvolvimento do sistema proposto.
2.1. Java Server Faces (JSF)
Java Server Faces (JSF) [1] é uma especificação que foi definida por meio do
Java Community Process (JCP) [2], uma entidade que tem como objetivo especificar a
evolução da linguagem Java de acordo com o interesse do mercado e não apenas da
empresa que detém a sua patente.
O JSF é um framework de componentes para desenvolvimento Web em Java [3].
Sua arquitetura é baseada no padrão MVC (Model-View-Controller), onde a aplicação é
dividida em três camadas: modelo, visão e controlador. O modelo é a camada
responsável por fornecer ao controlador o acesso aos dados e representar os objetos de
negócio. A Visão é responsável pela interface gráfica com o usuário e controla como os
dados são apresentados na tela. Além disso, a visão tem a função de encaminhar as
ações do usuário para o controlador. O controlador tem a responsabilidade de realizar a
ligação entre o modelo e a visão: interpretam as ações recebidas pela camada de visão,
traduz em uma operação para o modelo e por fim retorna uma visualização referente à
solicitação [5].
O controle do JSF é realizado por meio de um Servlet chamado Faces Servlet,
por um conjunto de manipuladores de ações, observadores de eventos e por arquivos de
configuração em XML (eXtensible Markup Language). O Faces Servlet é a parte
responsável por receber todas as requisições realizadas pelos usuários e redirecioná-las
para o modelo que, então, retorna uma resposta. Os manipuladores de eventos recebem
os dados da camada de visão, acessam o modelo e retornam dados utilizando o Faces
2
Servlet. Os arquivos de configuração são responsáveis pelo mapeamento das ações e
pela definição das regras de navegação [5].
A camada de visualização do JSF é composta por uma hierarquia de componente
onde é possível unir os componentes parar formar as interfaces. Os principais
componentes são: formulários, campos de texto, links, botões, painéis, tabelas de dados
e campos de senha [4].
Uma das vantagens de JSF é a possibilidade de empresas investirem no
desenvolvimento de componentes para tal framework. Esses componentes são recursos
adicionais aos padrões definidos pela especificação. Algumas bibliotecas de
componentes mais populares são: RichFaces da JBoss, ICEFaces da ICESoft e
PrimeFaces [3].
2.2. O Container Tomcat
O Tomcat [6] é um container Web baseado em Java. Foi desenvolvido em código
aberto seguindo o projeto Apache Jakarta [7]. Contudo, está sendo mantido como um
projeto separado da Apache [8] onde é apoiado e aprimorado por um grupo de
desenvolvedores voluntários da JCP. O Tomcat suporta a execução de tecnologias como
Java Servlet [9] e Java Server Pages (JSP) [10].
O Tomcat é estável e pode ser utilizado mesmo em um ambiente em produção.
Também fornece suporte à tecnologias de apoio relacionadas como: Realms e
segurança, JNDI Resources e JDBC Data Sources [11].
2.3. Hibernate
O Hibernate [12] é uma das soluções de Mapeamento Objeto-Relacional (Object
Relational Mapping - ORM) existentes no mercado. Pertencente ao grupo JBoss [14], é
um framework de código aberto apoiado pela especificação Java Persistence API (JPA)
[15].
O Hibernate facilita o desenvolvimento de aplicações que realizam consultas a
bancos de dados, evitando o uso de código Structured Query Language (SQL),
permitindo o uso de um código SQL-like, chamado Object Query Language (OQL) [13].
A utilização do Hibernate faz com que o programador não se preocupe tanto com
as entidades do banco de dados e atente mais para o modelo de objeto e seus
comportamentos. O Hibernate também evita que sejam escritos códigos repetidos que
tem a mesma funcionalidade, por exemplo, de realizar operações como “inserts”,
“selects”, “updates” e “deletes” em um banco de dados. Além disso, é possível definir
buscas complexas em objetos [16].
A configuração do Hibernate é feita com um arquivo XML, geralmente com o
nome hibernate.cfg.xml. Nesse arquivo é possível definir qual a configuração do banco
de dados a ser utilizada e as suas propriedades, tais como, usuário, senha e ativação da
opção para que sejam criadas as entidades do banco de dados automaticamente. Além
disso, existe a opção de depuração, como apresentar o código OQL que está gerando. O
Hibernate permite usar um sistema de cache de informações, aumentando assim o
desempenho das aplicações [16].
3
2.4 MySQL
MySQL [17] é um Sistema Gerenciador de Bancos de Dados (SGBD) relacional
que utiliza a linguagem padrão SQL. O MySQL é um SGBD já consolidado sendo um dos
mais populares SGBDs com código-fonte aberto [18].
O MySQL á uma opção interessante, pois mesmo possuindo uma tecnologia
complexa de um banco de dados, seu custo não é elevado. Atualmente, é executado em
mais de 20 plataformas incluindo Linux, Windows, Mac Os e IBM, oferecendo uma
grande flexibilidade [18]. Destaca-se por suas características de desempenho,
escalabilidade e confiabilidade, fazendo com que seja adotado por departamentos de
Tecnologia da Informação (TI), desenvolvedores Web e fornecedores de pacotes de
softwares [19].
Atualmente, o MySQL é utilizado por empresas renomadas, dentre as quais: a
Google, Facebook, Adobe, Yahoo e NASA [18].
2.5 Spring-Security
O Spring-Security [20] é um framework de controle de acesso a dados, facilmente
configurável, desenvolvido em Java e de código aberto que visa facilitar o
desenvolvimento em Java Enterprise Edition (EE) ao tratar segurança. Esse framework
permite as suas configurações em um único arquivo XML, dispensando configurações do
container Web utilizado, disponibilizando a aplicação desenvolvida em um arquivo Web
Archive (WAR) com suas próprias configurações [21].
O Spring-Security utiliza roles (papéis), para definir a segurança. Assim, a
aplicação não precisa de métodos específicos para realizar a autenticação ou
autorização do usuário, sendo configurado por meio de arquivo XML.
A configuração do framework não é complexa, pois simplesmente são declarados
quais são os roles envolvidos. Por exemplo, em uma aplicação pode existir o
ROLE_ADMINISTRADOR e o ROLE_USUARIO. Com base nisso, pode-se definir quais
os recursos que serão protegidos e quais roles podem acessar cada recurso. Além disso,
declara-se como a autenticação será feita [21]. A Figura 1 apresenta um exemplo de um
arquivo XML de configuração do Spring-Security.
4
Figura 1: Arquivo de configuração do spring security.
A seguir são descritas as funcionalidades das principais marcações utilizadas no
arquivo de configuração apresentado pela Figura 1 [3]:
• <http> - sua função é realizar o agrupamento das configurações referentes ao
contexto Web do sistema;
• <intercept-url> - define quais páginas ou diretórios serão seguros, onde o
atributo pattern indica a URL a ser protegida e o atributo access os nomes
das permissões que terão acesso ao recurso;
• <form-login> - configura o funcionamento da página de login. Seus atributos
têm as seguintes funcionalidades:
o
definir a URL da página de login do sistema;
o
ativar o redirecionamento para página de inicial caso o usuário não
esteja logado;
o
definir a URL a ser apresentada após o login; e
o
definir a URL caso o login não seja realizado com sucesso.
• <logout> - habilita o recurso de logout para o sistema;
• <remember-me> - habilita o recurso de login automático; e
• <autentication-provider> - indica ao Spring Security, quais são os usuários
válidos do sistema e suas respectivas permissões. Em conjunto pode ser
utilizado o elemento <jdbc-user-service> que permite declarar instruções
SQLs que fornecem os dados que o Spring necessita, para realizar
autenticação.
5
2.6 RESTEasy
Com a grande utilização de Web Services com a arquitetura RESTFull [22], foi
criada a especificação JAX-RS [23], que tem como foco o uso de classes Java e
anotações, para que o desenvolvedor não precise se preocupar com detalhes específicos
da plataforma. Um exemplo disso é a implementação dos métodos GET e POST da
classe abstrata HttpServlet. A especificação oferece uma forma interessante para a
criação de serviços baseados no modelo arquitetural da Web. As principais
implementações desta API são: o Jersey que é uma implementação de referência, o
JBoss RESTEasy e o Apache CXF [24].
O RESTEasy [25] é a implementação da especificação JSR-311 [26]. Com ele é
possível desenvolver serviços RESTFull.,pois permite o mapeamento de requisições
HTTP por meio das anotações do JAX-RS. Geralmente, as implementações JAX-RS
oferecem um diferencial com relação à especificação [24].
O RESTEasy tem suporte à diversos formatos utilizados na Web, permitindo
variar a representação dos recursos disponibilizados pelo web service. Em alguns casos,
é necessário escolher o provedor de um determinado formato, por exemplo, entre
Jettison e o Jackson para a geração do corpo HTTP no formato JSON. Além disso, a API
já conta com suporte à FastInfoSet, YML, XML e JSON [24].
A Figura 2 representa uma classe Java com um exemplo de anotação
@XmlRootElement para disponibilizar o recurso no formato XML.
Figura 2: Anotação do RESTEasy.
2.7 Sistema Operacional Android – Android SDK
O sistema operacional Android [27] é o resultado da união de várias empresas de
tecnologia e mobilidade, que tem como objetivo definir uma plataforma única, aberta,
com foco na usabilidade e na tecnologia. Tal plataforma busca atender às novas
tendências do mercado. O Android possui uma arquitetura flexível capaz de integrar
6
aplicações desenvolvidas com as aplicações nativas. Uma característica importante do
Android é o fato de ser baseado no kernel 2.6 do Linux, que é o responsável por
gerenciar os recursos de hardware como memória, processos, threads, segurança dos
arquivos e pastas, além da conectividade e dos drivers [28].
O desenvolvimento de aplicações para o Android é realizado por meio do AndroidSDK (Software Development Kit) escrito em Java. O Android-SDK possui um conjunto de
bibliotecas para desenvolvimento, aplicativos para compilação e geração dos
executáveis, um emulador do sistema operacional. Além disso, foi incluído o Android
Virtual Device (ADV) que é um gerenciador dos simuladores Android, com o qual é
possível criar um simulador em qualquer versão da plataforma e definir algumas
características de hardware como: quantidade de memória, processador e suporte ao
teclado [28].
2.8 Spring for Android 1.0
O Spring for Android 1.0 [29] é uma extensão do Spring Framework, que tem
como objetivo simplificar o desenvolvimento de aplicativos Android. A classe
RestTemplate é o núcleo do Spring for Android, pois é responsável por fornecer os
métodos de retorno e pela configuração do HttpMessageConverter, usado para
empacotar os objetos no corpo da requisição HTTP e desempacotar a reposta de volta
para os objetos. Assim, é possível implementar um cliente REST para realizar as
requisições HTTP RESTFull em aplicações desenvolvidas para Android [30].
3. O Sistema Web Proposto para Gerenciamento de Assistência Técnica
Esta seção apresenta o sistema desenvolvido para apoiar o gerenciamento de
solicitações de assistência técnica a computadores, com auxílio de smartphones. O
sistema proposto tem como finalidade registrar e organizar esses chamados evitando,
assim, a descentralização das informações. As subseções a seguir apresentam a
descrição geral da empresa para a qual o sistema foi desenvolvido, como funciona o
registro das solicitações atualmente, a modelagem do sistema Web e a modelagem da
aplicação mobile que proporciona à interação com o sistema Web.
3.1 Descrição Geral da Empresa
A Click Informática é uma empresa que presta serviços de assistência técnica a
computadores em geral, situada no município de Francisco Alves – PR, há mais de dez
anos. Atualmente, conta com três técnicos especializados para realizar as manutenções
nos computadores, sendo que um deles tem a função de atender as solicitações
externas.
Mesmo sendo um município pequeno, a empresa tem uma demanda alta de
solicitações por dia, pois presta serviços à repartições públicas como: prefeitura, câmara
de vereadores, hospital, posto de saúde e escolas da cidade.
3.2 Registros das solicitações
O sistema tem como principal objetivo registrar e organizar de forma centralizada
as solicitações de assistência técnica da empresa.
Atualmente, a empresa utiliza um simples formulário impresso e preenchido
manualmente para registrar as informações referentes às solicitações. Com isso,
ocorrem algumas situações críticas para a empresa, por exemplo, falha no registro da
7
solicitação, registro em mais de um local, perda e não atendimento das solicitações
provocando, desse modo, demora e insatisfação dos clientes.
A Figura 3 apresenta o formulário impresso utilizado atualmente, para registrar as
solicitações.
Figura 3: Formulário impresso de registro das solicitações usado atualmente.
O formulário de registro apresentado na Figura 3 possui as seguintes
informações: DATA DO CHAMADO que é a coluna utilizada para informar a data no
momento que a solicitação foi realizada; NOME onde é informado o nome do cliente;
SOLICITAÇÃO (serviço) que apresenta uma pequena lista dos serviços mais comuns e
um espaço em branco para informar o serviço que não constar na lista. Dessa forma, o
técnico assinala com um “X” no serviço desejado. A coluna FASE DO SERVIÇO
apresenta uma lista de possíveis estados que se pode encontrar a solicitação; e a ultima
coluna DATA FIM DOS PROCEDIMENTOS é utilizada para informar a data de conclusão
da solicitação.
3.3 Modelagem do Sistema Desenvolvido
A Figura 4 apresenta o diagrama de casos de uso do sistema desenvolvido.
8
Figura 4: Digrama de casos de uso do sistema desenvolvido.
No diagrama apresentado na Figura 4, existem quatro atores que interagem com
o sistema. O ator “Usuário Web”, primeiramente, realiza o caso de uso “Cadastrar
Usuário” por meio de um formulário Web onde deve informar os dados solicitados. Nesse
formulário é solicitado um login e uma senha, que serão fundamentais para utilizar o
sistema. Depois de cadastrado, o usuário poderá “Gerenciar Endereços”. Nesse caso de
uso ele informa endereços adicionais e realiza a principal função que será o caso de uso
“Efetuar Solicitação” onde informa os dados solicitados para iniciar uma solicitação de
assistência técnica.
O ator “Técnico Web” estende “Usuário Web” podendo, assim, realizar os
mesmos casos de uso que foram descritos anteriormente com um diferencial: no “Efetuar
Solicitação” onde poderá escolher para qual usuário a solicitação será aberta. Também
pode “Gerenciar Solicitações” que será o seu principal objetivo dentro do sistema onde é
possível realizar todo o gerenciamento das solicitações que foram realizadas pelos
usuários. Nesse caso de uso, em específico, é possível fazer as alterações necessárias
nas solicitações como, por exemplo, atualização do Status da solicitação podendo variar
entre: ABERTO, ANALISANDO, EM DESENVOLVIMENTO, CONCLUIDO e
CANCELADO. O técnico também pode “Enviar Mensagens” entre Técnicos e
Administradores.
O ator “Administrador Web” estende “Técnico Web” que, por sua vez, estende
“Usuário Web”. Sendo assim, o “Administrador Web” pode realizar todos os casos de uso
já descritos. Além disso, tem a opção de “Gerenciar Usuário” onde é possível excluir,
alterar, ativar/desativar e atribuir permissões aos usuários. Também pode “Gerenciar
Serviço” que será utilizado para cadastro dos serviços e “Gerenciar Peças” que será
utilizado para o cadastro das peças. Os serviços e peças cadastrados ficarão disponíveis
para serem utilizados nas solicitações.
O ator “Usuário Mobile” é a aplicação desenvolvida para o sistema operacional
Android que proporciona o suporte para os usuários que possuem um SmartPhone com
a aplicação instalada. Esse usuário pode “Consultar Status REST” que tem a função de
retornar para o “Usuário Mobile” a situação que se encontra o Status da sua ultima
solicitação e “Consultar Histórico REST” que tem a finalidade de retornar o histórico das
solicitações já realizadas.
9
Com base no diagrama de caso de uso apresentado na Figura 4, foram propostos
dois diagramas de classes que demonstram as estruturas do projeto. A Figura 5
apresenta o diagrama de classes do sistema Web e a Figura 6 apresenta o diagrama de
classes da aplicação mobile.
Figura 5: Digrama de classes – sistema web.
Analisando o diagrama de classes apresentado na Figura 5, volta-se que a classe
Solicitação é considerada a principal do sistema, pois relaciona as demais, que serão
fundamentais para realizar o registro e controle das solicitações. Pode-se observar que a
classe Usuário está associada à classe Usuario_Permissao que é utilizada para definir as
permissões dos usuários no sistema. Os usuários que possuem permissões de
administrador e técnico podem enviar mensagens entre eles, por conta disto, existe uma
associação estre Usuário e Mensagem. As
classes
Consulta_Status_REST
e
Consulta_Historico_REST são muito importantes, pois disponibilizam os recursos de web
service que serão utilizados pela aplicação mobile.
10
Figura 6: Digrama de classes – aplicação mobile.
Analisando o diagrama de classes apresentado na Figura 6, observa-se que a
principal classe do diagrama é a ConsultaRestActivity, a qual concentra toda a lógica da
aplicação mobile. Possui dois métodos de suma importância: o método
consultarStatus(String URL) que recebe como parâmetro a URL que contem o login do
usuário e utiliza-se da classe Status para construir o retorno obtido pelo web service do
sistema Web. Feito isso, é apresentada uma resposta ao usuário utilizando-se a classe
TelaStatus e o método consultaHistorico(String URL) que tem a mesma rotina que o
consultaStatus(String URL), mas utilizando as classes Historico e TelaHistorio. O que os
diferencia é o tipo de retorno, sendo que para o primeiro método é uma String e para o
segundo, uma List que contém o histórico das solicitações feitas pelo usuário.
3.4 Arquitetura do Sistema Web
Para o desenvolvimento do sistema Web proposto foi utilizado o padrão ModelView-Controller (MVC). Esse padrão é utilizado para facilitar a manutenção do sistema,
pois as regras de negócio do sistema ficam isoladas da camada de visão.
A Figura 7 apresenta o mapeamento objeto-relacional utilizando o Hibernate para
a classe Usuario como exemplo de elemento da camada de modelo.
11
Figura 7: Mapeamento objeto-relacional da classe usuario utilizando Hibernate.
Pode-se observar na Figura 7 a presença de anotações (annotations) que são
utilizadas para realizar o mapeamento. A anotação @Entity tem a função de definir que a
classe mapeada é uma entidade do banco de dados, a @id define que o atributo código
será a chave primária da entidade. @GenerateValue informa a estratégia de geração da
chave primária, que nesse caso será gerada automaticamente. @Column é utilizada
quando existe a necessidade de definir os detalhes para cada atributo como nome e
tamanho máximo. Existe também a presença da anotação @OneToMany que especifica
um relacionamento 1:n com a entidade Endereco.
A Figura 8 apresenta a camada de persistência de dados onde foi utilizado o
padrão de projeto: Data Access Object (DAO) [31]. O principal objetivo desse padrão é
separar a camada de acesso de dados das regras de negócio. Uma vantagem dessa
abordagem é que a camada de negócio não precisará se preocupar em como fazer a
conexão com o banco de dados ou realizar a leitura ou gravação de um arquivo, pois
para fazer essas operações somente será necessário solicitar para camada de acesso a
dados.
É possível observar que a classe apresentada na Figura 8 implementa a interface
“UsuarioDAO” que contém apenas as assinaturas dos métodos referentes às operações
em banco de dados, como os métodos sobrescritos que executam as operações de
salvar e atualizar. Nota-se também a existência de uma Session, por meio da qual foi
possível fazer com que as operações do Hibernate chegassem ao banco de dados.
12
Figura 8: Persistência de dados
A Figura 9 apresenta a camada de regras de negócio. Essa camada acessa
diretamente a camada de acesso aos dados (Data Access Object - DAO), e decide o que
deve ser gravado no banco de dados ou quais informações devem ser recuperadas. O
método salvar é um exemplo de regra de negócio implementada na classe apresentada
na Figura 9, onde ao salvar um novo usuário é definida uma permissão por padrão.
Figura 9: Regras de negócio
13
Na camada de visão foi utilizado o framework JSF, que facilita o desenvolvimento
Web. O primeiro passo para iniciar o desenvolvimento usando o JSF é a criação da
classe Bean, conhecida também como Backing Bean que é uma classe Java normal
(Plain Old Java Object - POJO). A classe Bean tem como responsabilidade apoiar todo o
funcionamento das páginas JSF separando, assim, as regras de funcionamento da
página e do layout [3]. Na Figura 10 é possível observar a anotação @ManagedBean,
responsável por realizar o mapeamento entre as classes Bean e as páginas (.xhtml) para
que possam ter acesso às propriedades e aos métodos. A utilização do
@ResquestScoped indica o tipo de escopo do Bean que mantém os dados do Bean em
memória mesmo que a página seja trocada.
Figura 10: Backing Bean referente ao usuário.
A Figura 11 apresenta a página (.xhtml) do cadastro de usuários, na qual foram
utilizados os componentes do JSF em com conjunto com os componentes do Prime
faces, que é uma biblioteca de componentes JSF customizados. Para realizar a ligação
dos componentes da página com a classe Bean são utilizadas as expressões UEL
(Unified Expression Language), um exemplo desta encontra-se na linha 28 da Figura 11,
onde o atributo value do componente recebe: “#{usuarioBean.usuario.nome}”. As demais
páginas do sistema funcionam da mesma maneira.
14
Figura 11: Página (.xhtml) do cadastro de usuários
A Figura 12 apresenta a tela para a criação de uma nova solicitação, a qual
apresenta, por padrão, uma barra de menu que contem os botões necessários para cada
tipo de usuário. Esse menu é montado levando em consideração as regras definidas no
Spring Security, portando, somente serão apresentados os botões específicos para cada
tipo de permissão. Nessa tela é necessário escolher para qual cliente está sendo aberta
a solicitação; informar a descrição do problema; o que será necessário salvar referente
aos dados do cliente informado por ele; selecionar o serviço e, caso o cliente solicite ou
precise trocar alguma peça, também pode ser informado. Para finalizar a solicitação,
basta dar um clique no botão Salvar.
Figura 12: Tela para criar uma nova solicitação.
15
A Figura 13 mostra a tela para gerenciar solicitações, referente à permissão de
acesso de técnico. Nela o técnico tem como principal objetivo realizar todo o
gerenciamento dos chamados que foram solicitados pelos usuários e fazer alterações
conforme a necessidade. Pode-se observar a presença de vários ícones que têm as
funcionalidades de alteração do Status da solicitação, como foi descrito anteriormente no
caso de uso “Gerenciar Solicitações”.
Figura 13: Tela do gerenciar de solicitações.
3.5 Arquitetura da Aplicação Mobile
A arquitetura da aplicação mobile é bem simples e funciona exatamente como foi
descrito no diagrama de classes da Figura 6. A Figura 14 apresenta a implementação da
classe “ConsultaRestActivity”, que concentra toda a lógica de negócio da aplicação.
Pode-se observar a utilização de componentes específicos do Android como EditText e o
Spinner, que foram usados como variáveis para armazenar os dados que o usuário
digitar ou selecionar. O EditText foi utilizado para o login e o Spinner para o tipo de
consulta. Existe também um button que ao ser pressionado realiza a consulta ao web
service do sistema, utilizando a variável “urlPadrao” que contém o endereço do servidor.
A Figura 15 faz parte da classe “ConsultaRestActivity”, que apresenta o método
consultarStatus(String Url), que utiliza a classe “RestTemplate” do framework Spring for
Android para criar um client e realizar a requisição ao web service do sistema Web.
16
Figura 14: Classe “ConsultaRestActivity”.
Figura 15: Método “consultarStatus”
As Figuras 16 e 17 apresentam a aplicação mobile em funcionamento no
emulador Android. A Figura 16 é a tela de consulta da aplicação, onde o usuário informa
seu login e o tipo de consulta. A Figura 17 apresenta a resposta referente à consulta do
status do último chamado do usuário.
17
Figura 16: Tela de consulta da aplicação mobile em um emulador Android.
Figura 17: Tela de resposta da aplicação mobile em um emulador Android.
18
4. Lições Aprendidas
4.1 Uso do Java Server Faces (JSF)
O JSF teve um papel importante para o desenvolvimento da interface gráfica do
sistema por ser um framework de componentes para o desenvolvimento Web. JSF foi
utilizado em conjunto com o Prime Faces que são os componentes JSF customizados.
Com essa união foi possível construir as páginas dinâmicas do sistema. Um componente
que merece destaque é o Data Table do Prime Faces que, com algumas configurações
simples, possibilitou especificar métodos de ordenação e de pesquisa na própria tabela.
O JSF conta com um recurso bem interessante, a navegação implícita, que facilita muito
a configuração e navegabilidade entre as páginas. Para utilizar-se deste recurso basta
informar o nome da página de destino ou informar o caminho completo da página que
deseja ser redirecionado, por exemplo, “/publico/usuário.xhtml”. Isso facilita muito a
organização arquitetural da aplicação Web.
4.2 Adoção do Spring Security
A utilização do Spring Security proporcionou agilidade para implementar a
segurança do sistema Web, pois foram definidos os papéis (roles) dos usuários para o
sistema, que são “ROLE_ADMINISTRADOR”, “ROLE_TECNICO” e “ROLE_USUARIO”.
Para isso, foi necessário criar uma pasta para colocar as páginas Web referentes à cada
tipo de usuário. Por fim, foram definidos no arquivo XML quais roles tinham acesso à
cada pasta e cada recurso disponível no sistema, facilitando a definição do papel de cada
novo usuário no sistema. Por padrão, ao realizar um novo cadastro o sistema já define
automaticamente que esse usuário será do tipo “ROLE_USUARIO”, o qual poderá ser
alterado, caso o usuário venha a ser um técnico ou mesmo um administrador.
4.3 Adoção da Plataforma Android
A utilização da plataforma Android para desenvolver a aplicação que disponibiliza
suporte a smartphones foi fundamental, pois sua codificação é feita na linguagem Java, a
mesma utilizada para desenvolver o sistema Web. Portanto, não foi necessário aprender
uma nova linguagem para implementar a aplicação mobile. O Android utiliza arquivos
XML para criar o layout das telas, com um plugin disponível para Eclipse [32], o qual
permite editar esses arquivos graficamente. Além disso, o Android apresenta uma paleta
com os componentes que podem ser arrastados para a tela, facilitando o processo de
desenvolvimento da aplicação. É importante destacar que a utilização do framework
Spring for Android simplificou o método responsável por fazer as requisições ao web
service do sistema Web.
5. Conclusões e Trabalhos Futuros
Este artigo apresentou o desenvolvimento de um sistema Web para controle de
solicitações de assistência técnica à computadores e o desenvolvimento de uma
aplicação mobile utilizando a plataforma Android, que proporcionou integração com o
sistema Web por meio de smartphones.
Apesar de ser um sistema relativamente simples, proporciona grandes benefícios
para a empresa, sendo: agilidade, organização e segurança. O próprio usuário pode
realizar a abertura de um chamado no sistema e, em um segundo momento, consultar a
19
situação em que se encontra a sua solicitação por um dispositivo móvel. Isso permite
maior interação entre os usuários, técnicos e administradores. Assim, o sistema contribui
diretamente para um melhor atendimento das solicitações, fazendo com que o usuário
fique satisfeito com o serviço e aumentando a credibilidade da empresa.
Como direção para possíveis trabalhos futuros tem-se: (i) a necessidade de
melhorar o suporte ao smartphone, disponibilizando para o usuário a possibilidade de
realizar a abertura de solicitações e, para o técnico, a possibilidade de gerenciamento as
solicitações; (ii) implementar o controle financeiro referente as solicitações e o controle
de estoque referente às peças utilizadas nas solicitações e. (iii) analisar se o sistema
atende outras empresas do mesmo ramo de atividade e disponibilizar o sistema como um
serviço.
Agradecimentos
Primeiramente a Deus, por ter me dado forças para conclusão deste trabalho.
Aos meus pais, Luiz Augusto e Fatima, que sempre me incentivaram. Ao meu orientador
Professor Dr. Edson A. Oliveira Junior, pelo apoio, incentivo e grande auxílio no
desenvolvimento deste trabalho.
Referências Bibliográficas
[1] Java Server Faces Technology: Disponível em:
<http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html>.
Out 2012.
Acesso em: 31
[2] Java Community Process: Disponível em: <http://www.jcp.org/en/home/index>. Acesso em:
31 Out 2012.
[3] LUCKOW, D. H.; MELO A. A. Programação Java para Web, São Paulo: Novatec, 2010
[4] HORSTMANN, CAY; GEARY, DAVID Core JavaServer Faces, 3ª ed, Boston - USA: Prentice
Hall, 2010
[5] SIERRA, KATHY; BASHAM, BRYAN. Use a Cabeça! Servlets & JSP, São Paulo: Alta Books,
2008
[6] Tomcat: Disponível em: <http://tomcat.apache.org/>. Acesso em: 03 Nov 2012.
[7] Apache Jakarta: Disponível em: <http://jakarta.apache.org/>. Acesso em: 03 Nov 2012.
[8] Apache: Disponível em: <http://www.apache.org/>. Acesso em: 03 Nov 2012.
[9] Java Servlet Technology: Disponível em: <http://www.oracle.com/technetwork/java/index-jsp135475.html>. Acesso em: 03 Nov 2012.
[10] JavaServer Pages Technology: Disponível em:
<http://www.oracle.com/technetwork/java/javaee/jsp/index.html>. Acesso em: 03 Nov 2012.
[11] VUKOTIC, Aleksa; GOODWILL, James. Apache Tomcat 7, New York City: Apress, 2011
[12] Hibernate: Disponível em: <http://www.hibernate.org/>. Acesso em: 03 Nov 2012.
[13] CAELUM, Java para desenvolvimento Web – FJ-21: Disponível
<http://www.caelum.com.br/download/caelum-java-web-fj21.pdf>. Acesso em: 03 Nov 2012.
em:
[14] JBoss: Disponível em: <http://www.jboss.org/>. Acesso em: 03 Nov 2012.
[15] Java Persistence API (JPA): Disponível em:
<http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html>. Acesso em: 03 Nov 2012.
20
[16] BAUER, CHRISTIAN; KING, GAVIN. Java Persistance com Hibernate, Rio de Janeiro,
Ciência Moderna, 2007.
[17] MySQL Disponível em: <http://www.mysql.com/ >,Acesso em: 30, Out, 2012.
[18] MySQL – Customers – why-mysql: Disponível em: <http://www.mysql.com/customers/ http://www.mysql.com/why-mysql/ >,Acesso em: 30, Out, 2012.
[19] NIEDERAUER, Juliano. Integrando PHP 5 com MySQL, 2ª ed, São Paulo, Novatec, 2008.
Disponível em: < http://www.novateceditora.com.br/guias/phpmysql2/sumario9788575221747.pdf>
Acesso em: 30 Out 2012.
[20] Spring Security: Disponível em: <http://static.springsource.org/spring-security/site/>. Acesso
em: 30 Out 2012.
[21] Java Magazine. Spring Security – Segurança simples, poderosa e portável - à moda do
SpringFramework. DevMedia Group, v. 69, p. 74 – 77, 2009
[22] RESTful Web Services: Disponível em: <http://www.oracle.com/technetwork/articles/javase/
/index-137171.html/>. Acesso em: 03 Nov 2012.
[23] JAVA.NET “JAX-RS”. Disponível em: <http://jax-rs-spec.java.net/>. Acesso em: 04 Nov 2012
[24] Java Magazine. RESTEasy: Além da Especificação – Facilitando o desenvolvimento de
RESTFull Web Services com RESTEasy. DevMedia Group, ed. 99, p. 52 – 61, 2012
[25] RESTEasy: Disponível em: <http://www.jboss.org/resteasy>. Acesso em: 03 Nov 2012.
[26] JAVA.NET “JSR 311”. Disponível em: <http://jsr311.java.net/>. Acesso em: 04 Nov 2012
[27] ANDROID: Disponível em: <http://www.android.com/>. Acesso em: 04 Nov 2012
[28] LECHETA, Ricardo R. “Google Android: aprenda a criar aplicações para dispositivos
móveis com o Android SDK”, 2ª. Ed., Editora Novatec, 2010.
[29] Spring for Android: Disponível em: <http://www.springsource.org/spring-android>. Acesso
em: 05 Nov 2012.
[30]
RestTemplate
Module:
Disponível
em:<http://static.springsource.org/springandroid/docs/1.0.x/reference/html/rest-template.html>. Acesso em: 05 Nov 2012.
[31] Data Access Object (DAO): Disponível em:
<http://www.oracle.com/technetwork/java/dataaccessobject-138824.html>.
2012.
Acesso em: 13 Nov
[32] IDE Eclipse: Disponível em: <http://www.eclipse.org/>. Acesso em: 30 Out 2012.
21
Download